在session的filter中增加,当发现是过期的情况,如果是ajax请求,则写回一些信息
//session过期,如果是 AJAX请求,就写回SESSIONSTATE:0
if(request.getHeader("x-requested-with")!=null
&& request.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest")){
PrintWriter printWriter = response.getWriter();
printWriter.print("{sessionState:0,url:"+request.getContextPath()+"}");
printWriter.flush();
printWriter.close();
}else{
response.sendRedirect(request.getContextPath());
}
页面中,增加这个,就可以了
//处理AJAX的session过期问题
$.ajaxSetup({
contentType:"application/x-www-form-urlencoded;charset=utf-8",
cache:false ,
complete:function(XHR,TS){
var resText=XHR.responseText;
if(resText!=null && resText.indexOf("sessionState:0")>0){
document.location.href='whatever_justTotheLoginPage.action';
alert("您的登录已超时, 请点确定后重新登录!");
//showMsg("您的登录已超时, 请重新登录!",'error');
}
}
});
本文介绍了一种在Web应用中处理Session过期的方法,特别是针对AJAX请求的场景。通过在过滤器(filter)中检测Session状态,并对AJAX请求作出特定响应,以及在前端使用jQuery监听AJAX请求的完成情况来实现。当检测到Session过期时,会通知前端进行跳转或提示。
6390

被折叠的 条评论
为什么被折叠?



