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 相关文章推荐
jquery.boxy弹出框(后隔N秒后自动隐藏/自动跳转)
Jan 15 Javascript
js多级树形弹出一个小窗口层(非常好用)实例代码
Mar 19 Javascript
jQuery制作的别致导航有阴影背景高亮模式窗口
Apr 15 Javascript
js实现当前输入框高亮显示的方法
Aug 19 Javascript
JavaScript来实现打开链接页面的简单实例
Jun 02 Javascript
getElementById().innerHTML与getElementById().value的区别
Oct 27 Javascript
js实现漫天星星效果
Jan 19 Javascript
Vue上传组件vue Simple Uploader的用法示例
Aug 25 Javascript
JS中touchstart事件与click事件冲突的解决方法
Mar 12 Javascript
小程序getLocation需要在app.json中声明permission字段
Apr 04 Javascript
webpack HappyPack实战详解
Oct 08 Javascript
vue实现页面切换滑动效果
Jun 29 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
安健A254立体声随身听的分析与打磨
2021/03/02 无线电
php和javascript之间变量的传递实现代码
2012/12/19 PHP
php常用图片处理类
2016/03/16 PHP
浅谈PHP链表数据结构(单链表)
2016/06/08 PHP
jQuery 全选效果实现代码
2009/03/23 Javascript
js 点击按钮弹出另一页,选择值后,返回到当前页
2010/05/26 Javascript
利用javascript实现全部删或清空所选的操作
2014/05/27 Javascript
js实现滚动条滚动到页面底部继续加载
2015/12/19 Javascript
zTree插件下拉树使用入门教程
2016/04/11 Javascript
基于Jquery插件Uploadify实现实时显示进度条上传图片
2020/03/26 Javascript
js字符串截取函数slice、substring和substr的比较
2016/05/17 Javascript
JS弹出窗口的运用与技巧大全
2016/11/01 Javascript
jQuery动态增减行的实例代码解析(推荐)
2016/12/05 Javascript
vue2 自定义动态组件所遇到的问题
2017/06/08 Javascript
react系列从零开始_简单谈谈react
2017/07/06 Javascript
JavaScript复制内容到剪贴板的两种常用方法
2018/02/27 Javascript
解决vue-cli项目打包出现空白页和路径错误的问题
2018/09/04 Javascript
微信小程序云开发修改云数据库中的数据方法
2019/05/18 Javascript
Async/Await替代Promise的6个理由
2019/06/15 Javascript
24个解决实际问题的ES6代码片段(小结)
2020/02/02 Javascript
JS字符串补全方法padStart()和padEnd()
2020/05/27 Javascript
JavaScript中window和document用法详解
2020/07/28 Javascript
Python正则表达式介绍
2012/08/06 Python
python实现的重启关机程序实例
2014/08/21 Python
Flask框架的学习指南之制作简单blog系统
2016/11/20 Python
Django rest framework基本介绍与代码示例
2018/01/26 Python
python经典趣味24点游戏程序设计
2019/07/26 Python
Python依赖包整体迁移方法详解
2019/08/15 Python
学python安装的软件总结
2019/10/12 Python
美国大城市最热门旅游景点门票:CityPASS
2016/12/16 全球购物
新店开张活动方案
2014/08/24 职场文书
爱晚亭导游词
2015/02/09 职场文书
2015公司年度工作总结
2015/05/14 职场文书
解除处分决定书
2015/06/25 职场文书
新闻稿件写作范文
2015/07/18 职场文书
小学学习委员竞选稿
2015/11/20 职场文书