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 相关文章推荐
比较简单的一个符合web标准的JS调用flash方法
Nov 29 Javascript
JQuery $.each遍历JavaScript数组对象实例
Sep 01 Javascript
get(0).tagName获得作用标签示例代码
Oct 08 Javascript
js获取微信版本号的方法
May 12 Javascript
javascript运动效果实例总结(放大缩小、滑动淡入、滚动)
Jan 08 Javascript
详解jquery事件delegate()的使用方法
Jan 25 Javascript
限制只能输入数字的实现代码
May 16 Javascript
JS 对象(Object)和字符串(String)互转方法
May 20 Javascript
微信小程序 选项卡的简单实例
May 24 Javascript
基于JavaScript中标识符的命名规则介绍
Jan 06 Javascript
微信小程序前端promise封装代码实例
Aug 24 Javascript
使用Vue调取接口,并渲染数据的示例代码
Oct 28 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函数解决SQL injection
2006/10/09 PHP
discuz Passport 通行证 整合笔记
2008/06/30 PHP
php实现图片文件与下载文件防盗链的方法
2014/11/03 PHP
PHP中mysqli_affected_rows作用行数返回值分析
2014/12/26 PHP
php计算整个mysql数据库大小的方法
2015/06/19 PHP
如何解决phpmyadmin导入数据库文件最大限制2048KB
2015/10/09 PHP
PHP二维数组排序简单实现方法
2016/02/14 PHP
Netbeans 8.2与PHP相关的新特性介绍
2016/10/08 PHP
yii2安装详细流程
2018/05/23 PHP
jQuery基础知识filter()和find()实例说明
2010/07/06 Javascript
Javascript学习笔记二 之 变量
2010/12/15 Javascript
javascript实现的元素拖动函数宿主为浏览器
2014/07/21 Javascript
javascript中parseInt()函数的定义和用法分析
2014/12/20 Javascript
javascript的switch用法注意事项分析
2015/02/02 Javascript
JS实现适合于后台使用的动画折叠菜单效果
2015/09/21 Javascript
Node层模拟实现multipart表单的文件上传示例
2018/01/02 Javascript
JS实现方形抽奖效果
2018/08/27 Javascript
JavaScript实现图片上传并预览并提交ajax
2019/09/30 Javascript
完美解决vue 中多个echarts图表自适应的问题
2020/07/19 Javascript
vue项目,代码提交至码云,iconfont的用法说明
2020/07/30 Javascript
js实现筛选功能
2020/11/24 Javascript
[02:21]十步杀一人,千里不留行——DOTA2全新英雄天涯墨客展示
2018/08/29 DOTA
给Python初学者的一些编程技巧
2015/04/03 Python
使用Python的Django框架实现事务交易管理的教程
2015/04/20 Python
教你学会使用Python正则表达式
2017/09/07 Python
python使用Pycharm创建一个Django项目
2018/03/05 Python
基于Python实现剪切板实时监控方法解析
2019/09/11 Python
Python使用Turtle库绘制一棵西兰花
2019/11/23 Python
python进程池实现的多进程文件夹copy器完整示例
2019/11/27 Python
pytorch载入预训练模型后,实现训练指定层
2020/01/06 Python
男女钓鱼靴和甲板鞋:XTRATUF
2021/01/09 全球购物
留学自荐信写作方法
2014/01/27 职场文书
医学生就业推荐表自我鉴定
2014/03/26 职场文书
毕业实习自我鉴定范文2014
2014/09/26 职场文书
公司借条范本
2015/05/25 职场文书
Python数据分析之pandas读取数据
2021/06/02 Python