超时解决

王朝学院·作者佚名  2016-05-23
窄屏简体版  字體: 小  |  中  |  大  |  超大  

Ajax请求session超时解决web前端js代码:

$.ajaxSetup({ contentType : "application/x-www-form-urlencoded;charset=utf-8", complete : function(xhr, textStatus) { if (xhr.status == 520) {//如果返回状态码是520 window.location..reload();//刷新页面,执行登录逻辑 return; } }});

java代码:

1. 写一个filter

import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class SessionTimeoutFilter implements Filter { public void destroy() { } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) request; HttpServletResponse res = (HttpServletResponse) response; // 判断session里是否有用户信息 if (req.getSession().getAttribute("username") == null){ // 如果是ajax请求响应头会有,x-requested-with; if (req.getHeader("x-requested-with") != null && req.getHeader("x-requested-with").equalsIgnoreCase("xmlHttPRequest")){ res.setStatus(520);//表示session timeout }else{ chain.doFilter(req, res); } }else{ chain.doFilter(req, res); } } public void init(FilterConfig chain) throws ServletException { }}

2. 在web.xml中添加上面的filter

<filter> <filter-name>ajaxSessionTimeout</filter-name> <filter-class>org.tshark.framework.web.filter.SessionTimeoutFilter</filter-class></filter><filter-mapping> <filter-name>ajaxSessionTimeout</filter-name> <url-pattern>/*</url-pattern></filter-mapping>

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航