首先需要在拦截器中判断是否是ajax请求,如果是
if(isAjaxRequest(request)){//ajax请求 response.setHeader("sessionstatus", "timeout"); response.setHeader("redirectUrl", request.getContextPath()+Constant.LOGIN); }else{//form请求 response.sendRedirect(request.getContextPath()+Constant.LOGIN); }
传送两个参数出去。
在页面上定义上ajax的通用参数:
<!-- 处理Ajax的session过期开始 --> <script type="text/javascript"> if(typeof($)!="undefined"){ $.ajaxSetup({ contentType:"application/x-www-form-urlencoded;charset=UTF-8",//发送信息至服务器时内容编码类型 complete:function(XMLHttpRequest,textStatus){ var sessionstatus = XMLHttpRequest.getResponseHeader("sessionstatus"); if(sessionstatus!=null&&sessionstatus=="timeout"){ alert("Session过期..."); var redirectUrl = XMLHttpRequest.getResponseHeader("redirectUrl"); window.location.replace(redirectUrl); } } }); } </script> <!-- 处理Ajax的session过期结束 -->