目标:前端系统,后端系统等,统一处理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. [转载]Google Java Style 中文版

    转自:http://www.blogjava.net/zh-weir/archive/2014/02/08/409608.html Google Java Style 中文版     基于官方文档20 ...

  2. animation- 动画效果实现(代码中)

    1,首先我们看一下如下的代码 import android.view.animation.LayoutAnimationController; import android.view.animatio ...

  3. 1.1 Introduction中 Distribution官网剖析(博主推荐)

    不多说,直接上干货! 一切来源于官网 http://kafka.apache.org/documentation/ Distribution 分布式(Distribution) The partiti ...

  4. 关于React中,map出来的元素添加事件问题

    用es6 map 的写法 直接绑定一个onTouchStart 事件不会报错. 用es5的map写法  如果不加上this  会报这个错误 无法读取未定义的属性 解决的方法是 绑定this  就可以了

  5. 为easyUI的dataGrid加入自己的查询框

    dataGrid作为easyUI的一个核心组件,其功能上是非常强大的. 可是外观上似乎就有点差强人意了,首先说一下我对dataGrid外观的2点感受 1.图标不好看,且尺寸非常小(16x16)-- 关 ...

  6. Java核心技术 卷Ⅰ 基础知识(5)

    第11章 异常.断言.日志和调试 处理错误 异常分类 声明已检查异常 如何抛出异常 创建异常类 捕获异常 捕获多个异常 再次抛出异常与异常链 finally子句 带资源的try语句 分析堆栈跟踪元素 ...

  7. SVN—怎样安装SVNclient软件

            一.怎样安装TortoiseSVN-1.7.12.24070-win32-svn-1.7.9版本号的SVNclient软件:        a.下载TortoiseSVN-1.7.12 ...

  8. [Android 4.4.2] 泛泰A870 Mokee4.4.2 20140531 RC1.0 by syhost

    欢迎关注泛泰非盈利专业第三方开发团队 VegaDevTeam  (本team 由 syhost suky zhaochengw(z大) xuefy(大星星) tenfar(R大师) loogeo cr ...

  9. C_C++指针指针应用详解

    前言:复杂类型说明 要了解指针,多多少少会出现一些比较复杂的类型,所以我先介绍一下如何完全理解一个复杂类型,要理解复杂类型其实很简单,一个类型里会出现很多运算符,他们也像普通的表达式一样,有优先级,其 ...

  10. (转)把Sublime Text 2 加入右键菜单(带图标),Edit with Sublime Text

    转自 http://www.turen.me/archives/509 Sublime Text 2 是现在很受大家欢迎的编辑器了,不仅是在web前端,在书定简单的php.Js等代码时,也是相当的好用 ...