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 页面刷新location.reload和location.replace的区别小结
Dec 24 Javascript
JQuery 引发两次$(document.ready)事件
Jan 15 Javascript
JavaScript Event学习第六章 事件的访问
Feb 07 Javascript
jquery Mobile入门—外部链接切换示例代码
Jan 08 Javascript
jQuery的attr与prop使用介绍
Oct 10 Javascript
JS实现的打字机效果完整实例
Jun 20 Javascript
jQuery查找节点并获取节点属性的方法
Sep 09 Javascript
jQuery编写网页版2048小游戏
Jan 06 Javascript
Vue2.0实现1.0的搜索过滤器功能实例代码
Mar 20 Javascript
JS求Number类型数组中最大元素方法
Apr 08 Javascript
vue商城中商品“筛选器”功能的实现代码
Jul 01 Javascript
JS前端canvas交互实现拖拽旋转及缩放示例
Aug 05 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排序之二维数组的按照字母排序实现代码
2011/08/13 PHP
php通过隐藏表单控件获取到前两个页面的url
2014/09/09 PHP
Yii学习总结之安装配置
2015/02/22 PHP
WordPress开发中短代码的实现及相关函数使用技巧
2016/01/05 PHP
Zend Framework+smarty用法实例详解
2016/03/19 PHP
JavaScript与Image加载事件(onload)、加载状态(complete)
2011/02/14 Javascript
jQuery前端分页示例分享
2015/02/10 Javascript
第五章之BootStrap 栅格系统
2016/04/25 Javascript
js实现右键自定义菜单
2016/12/03 Javascript
JavaScript cookie详解及简单实例应用
2016/12/31 Javascript
MUI 解决动态列表页图片懒加载再次加载不成功的bug问题
2017/04/13 Javascript
Nodejs模块载入运行原理
2018/02/23 NodeJs
vue 实现在函数中触发路由跳转的示例
2018/09/01 Javascript
Vue中的作用域CSS和CSS模块的区别
2018/10/09 Javascript
vue中promise的使用及异步请求数据的方法
2018/11/08 Javascript
JS栈stack类的实现与使用方法示例
2019/01/31 Javascript
javascript面向对象三大特征之封装实例详解
2019/07/24 Javascript
js中的面向对象之对象常见创建方法详解
2019/12/16 Javascript
python清除字符串里非字母字符的方法
2015/07/02 Python
Python实现并行抓取整站40万条房价数据(可更换抓取城市)
2016/12/14 Python
Python原始字符串与Unicode字符串操作符用法实例分析
2017/07/22 Python
python将一个英文语句以单词为单位逆序排放的方法
2018/12/20 Python
Python增强赋值和共享引用注意事项小结
2019/05/28 Python
Python绘制堆叠柱状图的实例
2019/07/09 Python
python可视化篇之流式数据监控的实现
2019/08/07 Python
flask的orm框架SQLAlchemy查询实现解析
2019/12/12 Python
Python迭代器协议及for循环工作机制详解
2020/07/14 Python
纽约JewelryAffairs珠宝店:精细金银时尚首饰
2017/02/05 全球购物
Electric官网:美国高级眼镜和配件品牌
2020/06/04 全球购物
工程采购员岗位职责
2014/03/09 职场文书
丧事主持词大全
2014/04/02 职场文书
生日答谢词
2015/01/05 职场文书
行政经理岗位职责
2015/04/15 职场文书
2016毕业实习单位评语大全
2015/12/01 职场文书
2019年市场部个人述职报告(三篇)
2019/10/23 职场文书
python中pandas对多列进行分组统计的实现
2021/06/18 Python