分享

EASYUI 中session 超时跳出Tabs

 谁是小胖 2016-05-27

近期一个项目用到了easyUI,在使用过程中,遇到了一些个人觉得值得记录的注意点,片段化,在此记录谨供个人自由回忆,不保证质量!

copy自http://blog.163.com/xueling1231989@126/blog/static/102640807201412710184983/

*
在easyui中,会遇到session超时而当前tabs无法跳转到登陆页面。我在这里使用了filter,先判断session是否过期,然后根据request中的request.getHeader(“x-requested-with”)属性来判断是否ajax请求,然后针对easyui的ajax请求来设置返回信息,然后修改ajaxsetup,最后获取顶层窗口跳转。

1.使用filter,在过滤器doFilter方法中添加:

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException{................其他处理................../*** easyui session超时处理*/if (request.getHeader('x-requested-with')!=null&&request.getHeader('x-requested-with').equalsIgnoreCase('XMLHttpRequest')){ response.setHeader('sessionstatus', 'timeout');//在响应头设置session状态 response.getWriter().print('timeout'); //打印一个返回值,没这一行,在tabs页中无法跳出(导航栏能跳出),具体原因不明 return ;}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

2.新建一个common.js文件,添加如下2个function

$.ajaxSetup({ error: function (XMLHttpRequest, textStatus, errorThrown){ if(XMLHttpRequest.status==403){ alert('您没有权限访问此资源或进行此操作'); return false; } }, complete:function(XMLHttpRequest,textStatus){ var sessionstatus=XMLHttpRequest.getResponseHeader('sessionstatus'); //通过XMLHttpRequest取得响应头,sessionstatus, if(sessionstatus=='timeout'){ //如果超时就处理 ,指定要跳转的页面 var top = getTopWinow(); //获取当前页面的顶层窗口对象 alert('登录超时, 请重新登录.'); top.location.href='/index.jsp'; //跳转到登陆页面,可以修改为自己需要跳转的页面 } } });/** * 在页面中任何嵌套层次的窗口中获取顶层窗口 * @return 当前页面的顶层窗口对象 */function getTopWinow(){ var p = window; while(p != p.parent){ p = p.parent; } return p; }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多