Session时间超时前后端的设置

最近做时间超时,记录一下。

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();
            }
        }  
    });  
}

  

posted @ 2016-05-10 14:15  用心每一天  阅读(2411)  评论(0编辑  收藏  举报