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 相关文章推荐
ASP.NET jQuery 实例11 通过使用jQuery validation插件简单实现用户登录页面验证功能
Feb 03 Javascript
js实现不提交表单获取单选按钮值的方法
Aug 21 Javascript
JavaScript浏览器对象模型BOM(BrowserObjectModel)实例详解
Nov 29 Javascript
js中动态创建json,动态为json添加属性、属性值的实例
Dec 02 Javascript
微信小程序 textarea 详解及简单使用方法
Dec 05 Javascript
JS返回顶部实例代码
Aug 09 Javascript
JS函数节流和函数防抖问题分析
Dec 18 Javascript
详解node.js的http模块实例演示
Jul 12 Javascript
vue-cli3环境变量与分环境打包的方法示例
Feb 18 Javascript
小程序中设置缓存过期的实现方法
Jan 14 Javascript
Postman参数化实现过程及原理解析
Aug 13 Javascript
vue @click.native 绑定原生点击事件
Apr 22 Vue.js
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
Terran兵种介绍
2020/03/14 星际争霸
PHP 显示客户端IP与服务器IP的代码
2010/10/12 PHP
PHP的autoload机制的实现解析
2012/09/15 PHP
使用php批量删除数据库下所有前缀为prefix_的表
2014/06/09 PHP
php实现二进制和文本相互转换的方法
2015/04/18 PHP
javascript firefox不显示本地预览图片问题的解决方法
2008/11/12 Javascript
JavaScript replace(rgExp,fn)正则替换的用法
2010/03/04 Javascript
JavaScript中的prototype使用说明
2010/04/13 Javascript
根据身份证号自动输出相关信息(籍贯,出身日期,性别)
2013/11/15 Javascript
jQuery之过滤元素操作小结
2013/11/30 Javascript
深入理解JavaScript系列(34):设计模式之命令模式详解
2015/03/03 Javascript
jquery-tips悬浮提示插件分享
2015/07/31 Javascript
Flow之一个新的Javascript静态类型检查器
2015/12/21 Javascript
jQuery操作属性和样式详解
2016/04/13 Javascript
AngularJS基础 ng-list 指令详解及示例代码
2016/08/02 Javascript
手机图片预览插件photoswipe.js使用总结
2016/08/25 Javascript
详解如何在React组件“外”使用父组件的Props
2018/01/12 Javascript
使用node打造自己的命令行工具方法教程
2018/03/26 Javascript
深入解析ES6中的promise
2018/11/08 Javascript
jQuery插件simplePagination的使用方法示例
2020/04/28 jQuery
python实现目录树生成示例
2014/03/28 Python
python编程实现归并排序
2017/04/14 Python
Django 忘记管理员或忘记管理员密码 重设登录密码的方法
2018/05/30 Python
Python3爬虫学习入门教程
2018/12/11 Python
Python 安装第三方库 pip install 安装慢安装不上的解决办法
2019/06/18 Python
正则给header的冒号两边参数添加单引号(Python请求用)
2019/08/09 Python
pandas按行按列遍历Dataframe的几种方式
2019/10/23 Python
Python3实现飞机大战游戏
2020/04/24 Python
python图片合成的示例
2020/11/09 Python
财务助理岗位职责
2013/11/10 职场文书
心得体会怎么写
2013/12/30 职场文书
开展批评与自我批评发言材料
2014/10/17 职场文书
先进个人推荐材料
2014/12/29 职场文书
车队安全员岗位职责
2015/02/15 职场文书
面试被问select......for update会锁表还是锁行
2021/11/11 MySQL
深入理解Pytorch微调torchvision模型
2021/11/11 Python