关于Extjs session失效处理

来源:互联网 发布:中国言论自由 知乎 编辑:程序博客网 时间:2024/06/05 11:28

因为项目中需要用到session失效的相关处理,于是就做了些相关的试验。以前项目组是在ajax中封装了一个判断,每次调用ajax请求时,都会在前台验证session的有效性,那是一个牛人辈出的项目组,并且有一个功能强大的框架,并不清楚它的具体实现(貌似不是每次从session里取值判断)。我是通过一个filter过滤请求,然后通过extjs的ajax绑定requestcomplete方法,因为extjs.ajax是单例的,每次调用的都是同一个ajax,所以每次请求过后都会调用此方法。

Ext.Ajax.on('requestcomplete', function(conn,response,options){
if(response.getResponseHeader("sessionstatus")){
window.location = "/KFPT";
}
});


Filter代码:

@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {

HttpServletRequest req = (HttpServletRequest) arg0;
HttpServletResponse rsp = (HttpServletResponse) arg1;
HttpSession session = req.getSession();
String user = (String) session.getAttribute("user");
if(null == user || user=="")
{
session.invalidate();  
rsp.setHeader("sessionstatus", "timeout");
}
else
{
arg2.doFilter(arg0, arg1);
}


}

于是,一个简单的过滤就完成了。每次调用ajax的时候都会触发这个requestcomplete事件,session失效便会跳转。