Web 开发中Ajax的Session 超时处理方法


Posted in Javascript onJanuary 19, 2017

在 Java Web 开发中,当session超时的情况下,普通页面的跳转好处理。关于Ajax的请求超时处理,就需要特殊处理下了。

先写一个统一的过滤器,或者拦截器,针对Ajax请求进行过滤处理,下面示例以Filter为例:

public void doFilter(ServletRequest request, ServletResponse response,
      FilterChain chain) throws IOException, ServletException {
    HttpServletRequest servletRequest=(HttpServletRequest)request;
    HttpServletResponse servletResponse=(HttpServletResponse)response;
    // 判断是否是 Ajax 请求,因为 Ajax 请求会追加 x-requested-with=XMLHttpRequest
    if("XMLHttpRequest".equalsIgnoreCase(servletRequest.getHeader("x-requested-with"))){
      servletResponse.addHeader("sessionstatus", "timeout");
    }    
    // 后续代码省略......
  }

然后在页面上调用使用Ajax的时候,捕获结果进行超时处理,如下:

// 全局的ajax访问,处理ajax清求时sesion超时
$.ajaxSetup({
  type: POST,
  contentType:"application/json;charset=utf-8",
  // 使用 complete 捕获结果,做超时处理
  complete: function (XMLHttpRequest, textStatus) {
    var data = XMLHttpRequest.responseText;
    if (data == "timeout") {
      if( window.top != window.self ){
        window.top.location = "${pageContext.request.contextPath}";
      }
    }
  }
});

根据 Header 判断是否是 Ajax 请求,如果是 Ajax 就丢出一个状态码。

这段处理的 js 代码,可以提取为一个方法,这样方便在其他地方直接使用。

以上这篇Web 开发中Ajax的Session 超时处理方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js判断背景图片是否加载成功使用img的width实现
May 29 Javascript
JS动态增加删除UL节点LI及相关内容示例
May 21 Javascript
JS实现自动定时切换的简洁网页选项卡效果
Oct 13 Javascript
jquery实现手风琴效果
Nov 20 Javascript
VueJs与ReactJS和AngularJS的异同点
Dec 12 Javascript
微信小程序 小程序制作及动画(animation样式)详解
Jan 06 Javascript
Vue.js学习之过滤器详解
Jan 22 Javascript
nuxt.js中间件实现拦截权限判断的方法
Nov 21 Javascript
如何手动实现es5中的bind方法详解
Dec 07 Javascript
JS使用iView的Dropdown实现一个右键菜单
May 06 Javascript
node.js express框架简介与实现
Jul 23 Javascript
JavaScript实现PC端横向轮播图
Feb 07 Javascript
JavaScript DOM节点操作实例小结(新建,删除HTML元素)
Jan 19 #Javascript
使用JavaScript触发过渡效果的方法
Jan 19 #Javascript
详解支持Angular 2的表格控件
Jan 19 #Javascript
原生JS实现几个常用DOM操作API实例
Jan 19 #Javascript
JS生成一维码(条形码)功能示例
Jan 19 #Javascript
EasyUi 打开对话框后控件赋值及赋值后不显示的问题解决办法
Jan 19 #Javascript
javascript中json基础知识详解
Jan 19 #Javascript
You might like
用PHP读取IMAP邮件
2006/10/09 PHP
php入门学习知识点八 PHP中for循环基本应用之九九乘法口绝表
2011/07/14 PHP
php中通过数组进行高效随机抽取指定条记录的算法
2013/09/09 PHP
PHP产生不重复随机数的5个方法总结
2014/11/12 PHP
PHP使用flock实现文件加锁的方法
2015/07/01 PHP
理解PHP中的Session及对Session有效期的控制
2016/01/08 PHP
php array_slice 取出数组中的一段序列实例
2016/11/04 PHP
PHP使用GD库输出汉字的方法【测试可用】
2016/11/10 PHP
php的无刷新操作实现方法分析
2020/02/28 PHP
经常用的图片在容器中的水平垂直居中实例
2007/06/10 Javascript
JavaScript面象对象设计
2008/04/28 Javascript
10个新的最有前途的JavaScript框架
2009/03/12 Javascript
JQuery Dialog的内存泄露问题解决方法
2010/06/18 Javascript
SinaEditor使用方法详解
2013/12/28 Javascript
基于Jquery和html5的7款个性化地图插件
2015/11/17 Javascript
JavaScript运行过程中的“预编译阶段”和“执行阶段”
2015/12/16 Javascript
JavaScript实现实时更新系统时间的实例代码
2017/04/04 Javascript
nodejs 日志模块winston的使用方法
2018/05/02 NodeJs
ES6入门教程之变量的解构赋值详解
2019/04/13 Javascript
vue实现自定义H5视频播放器的方法步骤
2019/07/01 Javascript
基于node+vue实现简单的WebSocket聊天功能
2020/02/01 Javascript
[53:10]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs VG 第一场
2018/04/11 DOTA
Python实现的rsa加密算法详解
2018/01/24 Python
Python处理CSV与List的转换方法
2018/04/19 Python
对web.py设置favicon.ico的方法详解
2018/12/04 Python
Django 中自定义 Admin 样式与功能的实现方法
2019/07/04 Python
Python 从subprocess运行的子进程中实时获取输出的例子
2019/08/14 Python
python获取栅格点和面值的实现
2020/03/10 Python
keras 简单 lstm实例(基于one-hot编码)
2020/07/02 Python
美国鲍勃商店:Bob’s Stores
2018/07/22 全球购物
世界上最大的铁人三项商店:Tri UK
2020/11/04 全球购物
邹越感恩父母演讲稿
2014/08/28 职场文书
活动经费申请报告
2015/05/15 职场文书
某某店铺的开业庆典主持词范本
2019/11/25 职场文书
nginx 多个location转发任意请求或访问静态资源文件的实现
2021/03/31 Servers
解析redis hash应用场景和常用命令
2021/08/04 Redis