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 相关文章推荐
一个JavaScript用逗号分割字符串实例
Sep 22 Javascript
js判断登陆用户名及密码是否为空的简单实例
May 16 Javascript
Vue.js表单标签中的单选按钮、复选按钮和下拉列表的取值问题
Nov 22 Javascript
在vue中使用jointjs的方法
Mar 24 Javascript
React Native日期时间选择组件的示例代码
Apr 27 Javascript
Vue.js实现开发购物车功能的方法详解
Feb 22 Javascript
JQuery属性操作与循环用法示例
May 15 jQuery
Javascript三种字符串连接方式及性能比较
May 28 Javascript
基于vue-draggable 实现三级拖动排序效果
Jan 10 Javascript
vue+vant使用图片预览功能ImagePreview的问题解决
Apr 10 Javascript
工作中常用js功能汇总
Nov 07 Javascript
浅谈JavaScript浅拷贝和深拷贝
Nov 07 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 输出URL的快捷方式示例代码
2013/09/22 PHP
php数据库备份还原类分享
2014/03/20 PHP
老生常谈PHP 文件写入和读取(必看篇)
2017/05/22 PHP
PHP迭代与递归实现无限级分类
2017/08/28 PHP
Laravel框架实现修改登录和注册接口数据返回格式的方法
2018/08/17 PHP
Laravel5框架自定义错误页面配置操作示例
2019/04/17 PHP
laravel请求参数校验方法
2019/10/10 PHP
PHP如何使用cURL实现Get和Post请求
2020/07/11 PHP
对textarea框的代码调试,而且功能上使用非常方便,酷
2006/06/30 Javascript
Tinymce+jQuery.Validation使用产生的BUG
2010/03/29 Javascript
javascript setTimeout()传递函数参数(包括传递对象参数)
2010/04/07 Javascript
JavaScript面向对象的实现方法小结
2015/04/14 Javascript
简介AngularJS的HTML DOM支持情况
2015/06/17 Javascript
在Node.js应用中使用Redis的方法简介
2015/06/24 Javascript
js和jquery实现监听键盘事件示例代码
2020/06/24 Javascript
js 实现省市区三级联动菜单效果
2017/02/20 Javascript
微信小程序本地缓存数据增删改查实例详解
2017/05/24 Javascript
js自定义Tab选项卡效果
2017/06/05 Javascript
微信小程序如何使用canvas二维码保存至手机相册
2019/07/15 Javascript
Python中获取对象信息的方法
2015/04/27 Python
python实现RSA加密(解密)算法
2016/02/17 Python
Python多线程扫描端口代码示例
2018/02/09 Python
Django框架封装外部函数示例
2019/05/28 Python
浅析python,PyCharm,Anaconda三者之间的关系
2019/11/27 Python
python GUI库图形界面开发之PyQt5访问系统剪切板QClipboard类详细使用方法与实例
2020/02/27 Python
CSS3实现同时执行倾斜和旋转的动画效果
2016/10/27 HTML / CSS
比利时买床:Beter Bed
2017/12/06 全球购物
LivingSocial英国:英国本地优惠
2019/02/22 全球购物
幼儿园父亲节活动方案
2014/03/11 职场文书
汇源肾宝广告词
2014/03/20 职场文书
入党积极分子评语
2014/05/04 职场文书
装配车间主任岗位职责
2015/04/08 职场文书
贷款收入证明格式
2015/06/24 职场文书
《吃水不忘挖井人》教学反思
2016/02/22 职场文书
Python time库的时间时钟处理
2021/05/02 Python
Go Plugins插件的实现方式
2021/08/07 Golang