public void destroy() {
System.out.println("authfilter destroy");
} public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws IOException, ServletException {
//System.out.println("authfilter dofilter");
HttpServletRequest request = (HttpServletRequest)req;
HttpServletResponse response = (HttpServletResponse)resp;
HttpSession session = request.getSession(false);
if(session == null || (String)session.getAttribute("admin") == null ||!((String)session.getAttribute("admin")).equals("admin")) {
System.out.println(request.getContextPath());
response.sendRedirect( request.getContextPath() + "/admin"+"/login.jsp");
return;
}
chain.doFilter(req, resp);
} public void init(FilterConfig config) throws ServletException {
System.out.println("authfilter init");
}配置文件
<filter>
<filter-name>AuthFilter</filter-name>
<filter-class>com.wan.bookshop.util.filter.AuthFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>AuthFilter</filter-name>
<url-pattern>/admin/*</url-pattern>
</filter-mapping>
过滤的时候进入死循环,停了服务才能跳转到登陆页面!
不知什么问题!
System.out.println("authfilter destroy");
} public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws IOException, ServletException {
//System.out.println("authfilter dofilter");
HttpServletRequest request = (HttpServletRequest)req;
HttpServletResponse response = (HttpServletResponse)resp;
HttpSession session = request.getSession(false);
if(session == null || (String)session.getAttribute("admin") == null ||!((String)session.getAttribute("admin")).equals("admin")) {
System.out.println(request.getContextPath());
response.sendRedirect( request.getContextPath() + "/admin"+"/login.jsp");
return;
}
chain.doFilter(req, resp);
} public void init(FilterConfig config) throws ServletException {
System.out.println("authfilter init");
}配置文件
<filter>
<filter-name>AuthFilter</filter-name>
<filter-class>com.wan.bookshop.util.filter.AuthFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>AuthFilter</filter-name>
<url-pattern>/admin/*</url-pattern>
</filter-mapping>
过滤的时候进入死循环,停了服务才能跳转到登陆页面!
不知什么问题!
System.out.println(request.getContextPath());
response.sendRedirect( request.getContextPath() + "/admin"+"/login.jsp");
return;
}
chain.doFilter(req, resp);} 这样试下??
if(session == null || (String)session.getAttribute("admin") == null ||!((String)session.getAttribute("admin")).equals("admin")) {
System.out.println(request.getContextPath());
response.sendRedirect( request.getContextPath() + "/admin"+"/login.jsp");
return;
}
当然是死循环了,你重定向到login.jsp,但是还是要执行这个过滤器,于是有重定向到login.jsp,
就这样死循环了....
要判断下当前访问的页面是不是login.jsp,如果是就放行啊。
获得请求资源的方法好像是request.getRequestURI()
你自己试下
一般系统的login页面都配置为不过filter,在web.xml中可以配置:<filter>
<filter-name>LoginCheckFilter</filter-name>
<filter-class>youClassName</filter-class>
<init-param>
<param-name>excludeURL</param-name>
<param-value>/admin/login.jsp</param-value>
</init-param>
</filter>
System.out.println(request.getContextPath());
response.sendRedirect( request.getContextPath() + "/admin"+"/login.jsp");
return;
}
chain.doFilter(req, resp);
} 你应该先进入到if中去了,然后你在if中进行重新定向,重定向又是一次新的请求,
而过滤器,又执行到了if中去了,又重定向,又重新发请求,所以造成死循环。。
wangwang6
出场解决。
<filter>
<filter-name>LoginCheckFilter </filter-name>
<filter-class>youClassName </filter-class>
<init-param>
<param-name>excludeURL </param-name>
<param-value>/admin/login.jsp </param-value>
</init-param>
</filter> 把admin去掉试下,准行!