所以filter就会变成这种:
account is session.accountattr;
account is null --> go to if else logic
-->If requestheader is x-requested-with
-->if urls can pass then dofilter,
-->else response.setheader,attribute is sessionstatus ,value is timeout 【在此处特别注意,如果是easyui等有tab标签的这种,需要在这里通过response打印一句话,并且注意writer关闭的问题,主要是为了能够在session过期时,tab标签中也能够跳转到相应页面中】。
-->If requestheader is not x-requested-with --> response sendredirects to loginpage.
account is not null 直接dofilter,go on。
JS监听
$.ajaxSetup({
error: function(XMLHttpRequest, textStatus, errorThrown){if(XMLHttpRequest.status==403){
alert('您没有权限访问此资源或进行此操作');
returnfalse;
}
},
complete:function(XMLHttpRequest,textStatus){try{
var sessionstatus=XMLHttpRequest.getResponseHeader("sessionstatus"); //通过XMLHttpRequest取得响应头,sessionstatus, if(sessionstatus=='timeout'){
//如果超时就处理 ,指定要跳转的页面 var top = getTopWinow(); //获取当前页面的顶层窗口对象
alert('登录超时, 请重新登录.');
top.location.href=path+"/login.jsp"; //跳转到登陆页面
}
}
}catch(e){
}
});