Filter配置会话超时跳转页面

前言

   上篇博客针对EasyUI+SpringMvc配置session过期跳转页面做了介绍,但是在运用过程中会出现在IE8中有时候不能正常使用的情况,也会出现和导入的操作冲突问题,经过一系列的探索发现这种方法针对不同浏览器尤其是IE会出现瑕疵,而且很难找到问题的所在,所以就又通过filter机制来完善了一下此功能。

   具体filter的机制的就不再过多介绍,咱们直接进入主题,来看看怎么进行配置完成此功能。

问题分析

   由于用的是EasyUI,所以会有很多异步的请求,所以就需要解决两种问题:一是普通的http请求的session超时处理,另一种是异步的session超时处理,这两种情况都通过filter来实现。

   在写filter之前要清楚,这两种请求的区别就是普通的http请求的header参数中没有x-requested-with:XMLHttpRequest头信息,而异步的有。

Filter编写

所以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('您没有权限访问此资源或进行此操作');
return false;
}
},  
         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){
}
   });
特别注意此处try catch语句不能省略,在ie8中easyui的跳转会和导入有冲突,会影响导入的成功。

web.XML编写

最后就是配置web.XML的filter,此处主要是配置filter的pararm,这里可以填写能够通过的urls,此urls在逻辑中有所体现。

总结

通过这三步配置就会完美的完成session过期跳转页面了。本功能的具体代码会上传到代码库中随后供大家下载。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值