doFilter方法里:
        HttpServletRequest request=(HttpServletRequest)servletrequest;
     HttpServletResponse response = (HttpServletResponse) servletresponse;
UserSession user= (UserSession)request.getSession().getAttribute("useroject");
if(user==null){
context.getRequestDispatcher(redirectUrl);//redirectUrl 为/login.jsp
                       //return;
} else {  
filterchain.doFilter(request, response);
                }    
问题打不开login.jsp 空白,不知道为什么会这样,之前getRequestDispatcher 后面加return;也是这样。
这样写:
context.getRequestDispatcher(redirectUrl).forward(request, response);
会报这样的错误。
Error 500--Internal Server Error 
java.lang.StackOverflowError
    接着我又改成if(user==null){
context.getRequestDispatcher(redirectUrl);
} else {  

filterchain.doFilter(request, response);
}        
filterchain.doFilter(request, response);加
可以访问:
Error 500--Internal Server Error 
java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
后来我又改成:
if(user==null){
response.sendRedirect("http://" +request.getHeader("Host")+redirectUrl);   
} else {  
filterchain.doFilter(request, response);
}这回可以过去了,请问题我前两个写的有毛病吗。

解决方案 »

  1.   

    有毛病,正确的写法是:HttpServletRequest request=(HttpServletRequest)servletrequest; HttpServletResponse response = (HttpServletResponse) servletresponse; //你这样写假如request.getSession().getAttribute("useroject")返回的是空,这句话会抛出空指针!
    //UserSession user= (UserSession)request.getSession().getAttribute("useroject");if(request.getSession().getAttribute("useroject")==null){ 
        request.getRequestDispatcher(redirectUrl).forward(request,response);
    }
    else {  
        filterchain.doFilter(request, response);
    }
      

  2.   

    Java 深度探索者 
    SSH、Ant、IBatis、jsf、seam、portal、设计模式、 
    ZK、DWR、ajax、CSS 
    群号:65670864 欢迎加入