ermao1007

Java处理Session超时代码


 1 public class LoginFilter implements Filter {
 2     private String sessionKey = "userid";
 3     public void init(FilterConfig filterConfig) throws ServletException {
 4         String key = filterConfig.getInitParameter("sessionKey");
 5         sessionKey = key == null ? sessionKey : key;
 6     }
 7     public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)
 8 throws IOException, ServletException {
 9                 HttpServletRequest req = (HttpServletRequest) request;
10         HttpServletResponse rep = (HttpServletResponse) response;
11                 HttpSession session = req.getSession();
12                 req.setCharacterEncoding("utf-8");
13                 rep.setContentType("text/html;charset=utf-8");String currentURL = req.getRequestURI();
14 String contextPath = req.getContextPath();
15         if (null == session || null == session.getAttribute(sessionKey)
16                 || "".equals((String) session.getAttribute(sessionKey))) {
17             // 如果判断是 AJAX 请求,直接设置为session超时
18             if (req.getHeader("x-requested-with") != null
19                     && req.getHeader("x-requested-with").equals("XMLHttpRequest")) {
20                 System.out.println("用户已失效");
21                 rep.setHeader("sessionstatus", "timeout");
22             } else {
23                 rep.sendRedirect(contextPath);
24             }
25         } else {
26             filterChain.doFilter(request, response);
27         }
28     }
29     public void destroy() {
30     }
31 }

 1  $.ajaxSetup({ 
 2              contentType:"application/x-www-form-urlencoded;charset=utf-8", 
 3              complete:function(XMLHttpRequest,textStatus){ 
 4                      var sessionstatus=XMLHttpRequest.getResponseHeader("sessionstatus"); //通过XMLHttpRequest取得响应头,sessionstatus,
 5                      if(sessionstatus=="timeout"){  //如果超时就处理 ,指定要跳转的页面
 6  
 7                                          window.location.replace("${path}/common/login.do"); 
 8  
 9                                  } 
10  
11                       } 
12  
13              } 
14  
15       });

 

1 <filter>
2         <filter-name>LoginFilter</filter-name>
3         <filter-class>com.wonders.common.filter.LoginFilter</filter-class>
4     </filter>
5  
6     <filter-mapping>
7         <filter-name>LoginFilter</filter-name>
8         <url-pattern>*.do</url-pattern>
9     </filter-mapping>

 

 

 

发表于 2018-12-03 14:32  我在路口敲代码  阅读(506)  评论(0编辑  收藏  举报
 

分类:

技术点:

相关文章:

  • 2022-12-23
  • 2021-09-15
  • 2022-12-23
  • 2021-08-11
  • 2021-08-19
  • 2021-09-02
  • 2021-07-26
  • 2021-08-19
猜你喜欢
  • 2022-02-15
  • 2021-09-02
  • 2022-12-23
  • 2022-12-23
  • 2021-08-31
  • 2021-12-13
相关资源
相似解决方案