项目里有个login.jsp页面,页面上有一张a.jpg图片我想在过滤器里排除这个页面,请问代码要如何写以下的代码会出现死循环,麻烦各位帮忙改改
public void doFilter(ServletRequest request, ServletResponse response,
   FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest req=(HttpServletRequest)request;
        HttpServletResponse res=(HttpServletResponse)response;
        //获取session中的User对象//
        User user=(User) req.getSession().getAttribute("u");
        if (user == null ) {//这里多加个!req.getServletPath().equals("/login.jsp")条件也不行
          res.sendRedirect(req.getContextPath()+"/login.jsp");//这里导致死循环 
        
         return ;
         }   
         filterChain.doFilter(request, response);
         
}

解决方案 »

  1.   

    req.getServletPath().equals("/login.jsp")改改啊if(user==null && ! req.getServletPath().indexOf("login.jsp")>0)
    {}
      

  2.   

    req.getServletPath()这个获取的是有路径的,你应该写个方法做截取,截取到login.jsp这层,然后做比较才有效果.
      

  3.   

    req.getServletPath().equals("/login.jsp") if(user==null && ! req.getServletPath().indexOf("login.jsp")>0) 
    { }
      

  4.   

    filter里做判断是没用的,因为lz把login.jsp也放到过滤条件里了,所以会无限过滤。  你应该在url-mapping这里做文章。通常的做法  web-inf/login.jsp
                                               web-inf/admin/.........
       把你想过滤的东西放到admin里,把url-mapping的过滤条件放到admin下就可以了
      

  5.   

     if (user == null ) {//这里多加个!req.getServletPath().equals("/login.jsp")条件也不行
              res.sendRedirect(req.getContextPath()+"/login.jsp");//这里导致死循环 
     }  else {
    chain.doFilter(req, res);
    }
    你可以这样改