目标:前端系统,后端系统等,统一处理Session超时和系统错误的问题。

可能需要处理的问题:Session超时、系统500错误、普通的业务错误、权限不足。

同步请求
 
           Session超时,登录拦截器,重定向到登录页面。
           500等系统错误,SpringMVC自定义ExceptionHanlder,跳转到系统错误页面,给访客友好的提示。 
            业务错误和权限不足,与500类似。

相对而言,同步方式,处理起来还是比较容易的。

异步请求

2种方式

1.后端登录拦截器,发现Session超时,给个标记。
   后端系统错误捕捉,给个标记。

比如:
  

if (CommonUtil.isAjaxRequest(request)) {
response.setHeader(BERROR, "yes");
CommonUtil.jsonError(response);
return null;
}

前端
  

<script>
$(function() {
$.ajaxSetup({
contentType : "application/json;charset=utf-8",
complete : function(XMLHttpRequest, textStatus) {
// 通过XMLHttpRequest取得响应头,
var blogin = XMLHttpRequest.getResponseHeader("blogin");
if (blogin == "yes") {
alert("Session time out2");
window.location = "${frontLoginUrl}";
}
var berror = XMLHttpRequest.getResponseHeader("berror");
if (berror == "yes") {
alert("Session error2");
}
}
});
});
</script>

2. 封装jquery的post方法。
  

function post(url, params, fn) {
$.post(url, params, function(data) {
if(data.code==-1){
alert("Session time out");
return;
}
if(data.code==-5){
alert("System error.");
return;
}
if(data.code ==0){
alert("出了点小问题,"+data.msg);
return;
}
if(data.code == -2){
alert("权限不足,请联系网站管理员.");
return;
}
fn(data);
});
}

调用方式:
  

post(base + "/home/bankcard/doadd.json", {
"bank" : bank,
"card" : card
}, function(data) { }

参考资料http://daichangfu.iteye.com/blog/1705097、某前端王的建议

补充几点

1.后端拦截器加标记。
   好处是:前端用ajaxSetup,前端没有干扰到任何已有的代码。比如原来$.post不用修改。
   坏处是:后端要改。

2.前端统一封装post,正好反过来。 
   前端需要修改已有的代码。 
   后端不需要修改。 

Ajax请求Session超时的解决办法:拦截器 + 封装jquery的post方法的更多相关文章

  1. Ajax请求Session超时解决

    web前端js代码: $.ajaxSetup({ contentType : "application/x-www-form-urlencoded;charset=utf-8", ...

  2. AJAX请求中含有数组解决办法

    当我们发送AJAX请求的数据中带有数组时,是不能像普通JSON数据一样,直接放在data里发送给后台,比如有这样一个数据需要发送给后台: { "orderId": 22, &quo ...

  3. 【微信开发】微信公众平台接入及绑定提示“请求URL超时”的解决办法

    成为微信开发者的第一步--微信公众平台接入 第一步:填写服务器配置 在开发->基本配置处启用服务器配置.修改配置 其中URL是开发者用来接收微信消息和事件的接口URL. Token可由开发者可以 ...

  4. 66.ajax--ajax请求多个url解决办法

    ajax请求多个url解决办法 以下四种方法是我找的,我也进行实践过. 测试中有四个请求接口,原本需要13S,用了第三种方法缩减到7S,但是仍不能达到2S以内. 所以仅供参考,待我找到能缩减到2S以内 ...

  5. HTTP 408请求超时错误解决办法

    错误描述 对于大多数网站而言,我们所看到的错误消息已经是开发者定制过的页面,比如我们最常见的自定义404错误页面,一般而言,我们看到的408错误应该是类似这样的提示:“408:Request Time ...

  6. WebAPI中无法获取Session对象的解决办法

    在MVC的WebApi中默认是没有开启Session会话支持的.需要在Global中重写Init方法来指定会话需要支持的类型 public override void Init() { PostAut ...

  7. Asp.Net保存session的三种方法 (Dll文件更新导致session丢失的解决办法)

    1. InProc模式(默认值):asp.net将session保存到当前进程中,这种方式最快,但是不能多台服务器共享session,且会话状态数据容易丢失. <sessionState mod ...

  8. ajax提交session超时跳转页面使用全局的方法来处理

    来自:http://www.jb51.net/article/43770.htm 如果是ajax提交,超时时从服务器发出的跳转命令就不会起作用,所以如果是session超时,而且是在ajax请求,就在 ...

  9. 在IE浏览器中iframe跨域访问cookie/session丢失的解决办法

    单点登录需要在需要进入的子系统B中添加一个类,用于接收A系统传过来的参数: @Action(value = "outerLogin", results = { @Result(na ...

随机推荐

  1. java位运算应用

    位移动运算符: <<表示左移, 左移一位表示原来的值乘2. 比如:3 <<2(3为int型)  1)把3转换为二进制数字0000 0000 0000 0000 0000 000 ...

  2. BZOJ 4555 [Tjoi2016&Heoi2016]求和 (多项式求逆)

    题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=4555 题目大意: 给定 \(S(n,m)\) 表示第二类斯特林数,定义函数 \(f(n ...

  3. mahout中KMeans算法

    本博文主要内容有   1.kmeans算法简介 2.kmeans执行过程  3.关于查看mahout中聚类结果的一些注意事项 4.kmeans算法图解      5.mahout的kmeans算法实现 ...

  4. Java Web学习总结(7)——HttpServletRequest对象

    一.HttpServletRequest介绍 HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象 ...

  5. [D3] Adding Arrows to Links

    svg.append('defs').selectAll('marker') .data(['end']).enter() .append('marker') .attr('id', String) ...

  6. hadoop 2.4.1 集群安装二

    1:创建文件夹 [jifeng@feng01 hadoop]$ mkdir tmp [jifeng@feng01 hadoop]$ mkdir name [jifeng@feng01 hadoop]$ ...

  7. Redfield Water Ripples 2.02(水波滤镜中文绿色版-支持CC)

    Redfield Water Ripples 能够用于设计具有高度现实主义风格的水波纹特效,它提供了诸多属性选项,其 3D 渲染品质另人映像深刻.此滤镜很易用,其随机设定生成器可创建差点儿无限的水波纹 ...

  8. (笑话)切,我也是混血儿,我爸是A型血,我妈是B型血!

    1.中午,在家里看电视,电视里正在说起食品安全问题.侄儿突然感叹道:“现在的食品真不让人放心啊!”嘿,没想到侄儿小小年纪竟有这般认识,我正要抓住机会教育他不要乱吃零食.这时侄儿幽怨的瞪着我说:“我昨晚 ...

  9. 驱动学习3-make

    在向内核中添加驱动的时候要完成3项工作 (1)在Kconfig中添加新代码对应项目的编译条件(下面Makefile文件中需要用到它定义的的宏变量) (2)将驱动源码添加到对应的目录中 (3)在目录Ma ...

  10. (6)uboot具体解释——关闭缓存和mmu

    uboot具体解释--关闭缓存和mmu 当设置完时钟分频以后,uboot就会运行cpu_init_crit汇编函数,这个函数的主要作用就是关闭缓存和mmu.然后调用lowlevel_init函数进行系 ...