最近做時間超時,記錄一下。
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(); } } }); }