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正则控制input标签只允许输入的值
Jul 29 Javascript
Javascript 浮点运算的问题分析与解决方法
Aug 27 Javascript
关闭浏览器时提示onbeforeunload事件
Dec 25 Javascript
window.location的重写及判断location是否被重写
Sep 04 Javascript
JavaScript实现定时隐藏与显示图片的方法
Aug 06 Javascript
javascript实现网站加入收藏功能
Dec 16 Javascript
JavaScript实现简易的天数计算器实例【附demo源码下载】
Jan 18 Javascript
基于jQuery Ajax实现下拉框无刷新联动
Dec 06 jQuery
angular基于ng-alain定义自己的select组件示例
Feb 23 Javascript
js中的闭包实例展示
Nov 01 Javascript
vue实现中部导航栏布局功能
Jul 30 Javascript
vue 路由守卫(导航守卫)及其具体使用
Feb 25 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实现图片旋转效果实例代码
2014/10/01 PHP
yii2.0整合阿里云oss删除单个文件的方法
2017/09/19 PHP
PJBlog插件 防刷新的在线播放器
2006/10/25 Javascript
Mootools 1.2教程 滑动效果(Slide)
2009/09/15 Javascript
jQuery中add实现同时选择两个id对象
2010/10/22 Javascript
jquery异步调用页面后台方法‏(asp.net)
2011/03/01 Javascript
Jquery事件的连接使用示例
2013/06/18 Javascript
JS实现点击链接取消跳转效果的方法
2014/01/24 Javascript
AngularJS+Node.js实现在线聊天室
2015/08/28 Javascript
javascript实现二级级联菜单的简单制作
2015/11/19 Javascript
Bootstrap每天必学之简单入门
2015/11/19 Javascript
解决jQuery使用JSONP时产生的错误
2015/12/02 Javascript
js将table的每个td的内容自动赋值给其title属性的方法
2016/10/13 Javascript
详解Angular Reactive Form 表单验证
2017/07/06 Javascript
简述Angular 5 快速入门
2017/11/04 Javascript
echarts设置图例颜色和地图底色的方法实例
2018/08/01 Javascript
小程序实现抽奖动画
2020/04/16 Javascript
React学习之受控组件与数据共享实例分析
2020/01/06 Javascript
Python使用Phantomjs截屏网页的方法
2018/05/17 Python
Python调用C++,通过Pybind11制作Python接口
2018/10/16 Python
python: 自动安装缺失库文件的方法
2018/10/22 Python
使用Python实现毫秒级抢单功能
2019/06/06 Python
flask应用部署到服务器的方法
2019/07/12 Python
Django后台管理系统的图文使用教学
2020/01/20 Python
Python3 获取文件属性的方式(时间、大小等)
2020/03/12 Python
django实现HttpResponse返回json数据为中文
2020/03/27 Python
.NET面试题:什么是反射
2016/09/30 面试题
自我评价正确写法范文
2013/12/10 职场文书
道路交通安全实施方案
2014/03/12 职场文书
项目投资意向书
2014/04/01 职场文书
小学生中国梦演讲稿
2014/04/23 职场文书
毕业生学校推荐信范文
2014/05/21 职场文书
2014年英语工作总结
2014/12/20 职场文书
2015年实习班主任工作总结
2015/04/23 职场文书
Python访问Redis的详细操作
2021/06/26 Python
mysql脏页是什么
2021/07/26 MySQL