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 相关文章推荐
16个最流行的JavaScript框架[推荐]
May 29 Javascript
JavaScript 反科里化 this [译]
Sep 20 Javascript
js操作滚动条事件实例
Jan 29 Javascript
JSONP跨域请求实例详解
Jul 04 Javascript
jQuery实现给input绑定回车事件的方法
Feb 09 Javascript
详解tween.js的使用教程
Sep 14 Javascript
React中的refs的使用教程
Feb 13 Javascript
关于echarts在节点显示动态数据及添加提示文本所遇到的问题
Apr 20 Javascript
解决vue 按钮多次点击重复提交数据问题
May 10 Javascript
对Vue table 动态表格td可编辑的方法详解
Aug 28 Javascript
vue-lazyload使用总结(推荐)
Nov 01 Javascript
vue点击标签切换选中及互相排斥操作
Jul 17 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与javascript的两种交互方式
2006/10/09 PHP
PHP开发中常用的8个小技巧
2008/08/27 PHP
php选择排序法实现数组排序实例分析
2015/02/16 PHP
php字符串分割函数用法实例
2015/03/17 PHP
PHP编程 SSO详细介绍及简单实例
2017/01/13 PHP
php图片合成方法(多张图片合成一张)
2017/11/25 PHP
爱恋千雪-US-AscII加密解密工具(网页加密)下载
2007/06/06 Javascript
jquery处理页面弹出层查询数据等待操作实例
2015/03/25 Javascript
jQuery+Ajax实现限制查询间隔的方法
2016/06/07 Javascript
jquery轮播的实现方式 附完整实例
2016/07/28 Javascript
javascript验证手机号和实现星号(*)代替实例
2016/08/16 Javascript
jQuery实现滚动条滚动到子元素位置(方便定位)
2017/01/08 Javascript
jquery图片放大镜效果
2017/06/23 jQuery
JS实现的加减乘除四则运算计算器示例
2017/08/09 Javascript
微信小程序progress组件使用详解
2018/01/31 Javascript
浅谈针对Vue相同路由不同参数的刷新问题
2018/09/29 Javascript
javascript+HTML5 canvas绘制时钟功能示例
2019/05/15 Javascript
vue.js的简单自动求和计算实例
2019/11/08 Javascript
electron+vue实现div contenteditable截图功能
2020/01/07 Javascript
如何在vue 中使用柱状图 并自修改配置
2021/01/21 Vue.js
python实现自动登录人人网并采集信息的方法
2015/06/28 Python
python常用数据重复项处理方法
2019/11/22 Python
pyqt5 textEdit、lineEdit操作的示例代码
2020/08/12 Python
总结python 三种常见的内存泄漏场景
2020/11/20 Python
css3的transition效果和transfor效果示例介绍
2013/10/30 HTML / CSS
yy生日主持词
2014/03/20 职场文书
2015年导购员工作总结
2015/04/25 职场文书
素质拓展训练感想
2015/08/07 职场文书
有关浪费资源的建议书
2015/09/14 职场文书
2016年妇联“6﹒26国际禁毒日”宣传活动总结
2016/04/05 职场文书
2019年“红色之旅”心得体会1000字(3篇)
2019/09/27 职场文书
ThinkPHP5和ThinkPHP6的区别
2021/03/31 PHP
nginx 反向代理之 proxy_pass的实现
2021/03/31 Servers
PyTorch 实现L2正则化以及Dropout的操作
2021/05/27 Python
Go语言入门exec的基本使用
2022/05/20 Golang
Java实现HTML转为Word的示例代码
2022/06/28 Java/Android