当前位置: 代码迷 >> Java Web开发 >> session过期后没法跳转页面 如果按f5的话可以跳转到登陆页面
  详细解决方案

session过期后没法跳转页面 如果按f5的话可以跳转到登陆页面

热度:8717   发布时间:2016-04-10 23:07:40.0
session过期后无法跳转页面 如果按f5的话可以跳转到登陆页面

小弟写了个过滤器来过滤是否session过期 
protected void doFilterInternal(HttpServletRequest request,
HttpServletResponse response, FilterChain filterchain)
throws ServletExceptionIOException {



 // 不过滤的uri  
        String[] notFilter = new String[] { "login.jsp","login","plui","include",".css","testLoginServlet" };  
  
        // 请求的uri  
        String uri = request.getRequestURI();
  
        // uri中包含plattutor3时才进行过滤  
        if (uri.indexOf("plattutor3") != -1) {  
        
            // 是否过滤  
            boolean doFilter = true;  
            for (String s : notFilter) {  
                if (uri.indexOf(s) != -1) {  
                
                    // 如果uri中包含不过滤的uri,则不进行过滤  
                 System.out.println("session filter  不过滤__________");
                    doFilter = false;  
                    break;  
                }  
            }  
            if (doFilter) {  
            if(request.getSession(false)==null){ 
         
     System.out.println("session已经过期"); 
     response.sendRedirect("/plattutor3/tutor/test/login.jsp");
    
    
     }else{
                // 执行过滤  
                // 从session中获取登录者实体  
              Object obj=  request.getSession(false).getAttribute("userInfo");  
                if (null == obj) {  
                 System.out.println(request.getSession(false)+"session filter__________");
                    // 如果session中不存在登录者实体,则弹出框提示重新登录  
                    // 设置request和response的字符集,防止乱码  
                   // request.setCharacterEncoding("UTF-8");  
                    //response.setCharacterEncoding("UTF-8");  
                    //PrintWriter out = response.getWriter();  
                    String loginPage = "/plattutor3/tutor/test/login.jsp";  
                    response.sendRedirect(loginPage);
                    request.getRequestDispatcher(loginPage).forward(request, response);
                } else {  
                    // 如果session中存在登录者实体,则继续  
                 filterchain.doFilter(request, response);  
                }  
     }
            } else {  
  相关解决方案