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>
过滤的时候进入死循环,停了服务才能跳转到登陆页面!
不知什么问题!

解决方案 »

  1.   

    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);} 这样试下??
      

  2.   


    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()
    你自己试下
      

  3.   

    这是因为登录页面又进入这个Filter引起的,
    一般系统的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>   
      

  4.   

    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);
    } 你应该先进入到if中去了,然后你在if中进行重新定向,重定向又是一次新的请求,
    而过滤器,又执行到了if中去了,又重定向,又重新发请求,所以造成死循环。。
      

  5.   

    那接下来请
    wangwang6
    出场解决。
      

  6.   


    <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去掉试下,准行!