最近做时间超时,记录一下。
session失效时间设置
1.用JAVA设置 ,优先级最高,不过只能设置单个session的超时时间,到该session,摧毁后,就不起作用了。
request.getSession().setMaxInactiveInterval(1800);/*秒为单位*/
对于上面的问题有两个解决办法。
1).在公共主页,每次登陆后,调用该设置方法。
2),通过
<listener> <listener-class></listener-class> </listener>
每次session创建的时候设置超时时间。
2. 修改web.xml
<session-config> <session-timeout>30</session-timeout> </session-config>
3.修改comcat 下面的Web.xml同2
设置完成后,对于一般的请求当session失效后,会起作用,但是对于ajxa异步请求,是不起作用的,也就是页面不会退出的。
这与这,需要设置拦截器,判断每个请求session是否存在,如果不存在,就发生跳转。
public static boolean isAjax(final HttpServletRequest request) { if (request != null) { String ajaxHeadValue = request.getHeader(“X-Requested-With”); if (ajaxHeadValue == null) { ajaxHeadValue = request.getHeader("HTTP_X_REQUESTED_WITH"); } if (“XMLHttpRequest”.equals(ajaxHeadValue)) { return true; } } return false; }
if ( HttpHelper.isAjax(request)) { response.setStatus(“602”); response.setContentType("text/plain; Charset=UTF-8"); }
接着在前台写一个全局js \
if(typeof($)!="undefined"){ $.ajaxSetup({ contentType : "application/x-www-form-urlencoded;charset=utf-8", complete : function(XMLHttpRequest, textStatus) { if (XMLHttpRequest.status == 602) { window.top.location.reload(); } } }); }