在处理session过期跳转首页时遇到了一些困难,经过百度发现了大致两种方法,在这里进行一下整理:
- (function($){
- //备份jquery的ajax方法
- var_ajax=$.ajax;
- //重写jquery的ajax方法
- $.ajax=function(opt){
- //备份opt中error和success方法
- varfn={
- error:function(XMLHttpRequest,textStatus,errorThrown){},
- success:function(data,textStatus){
- alert(textStatus);
- //在这里进行跳转
- }
- }
- if(opt.error){
- fn.error=opt.error;
- }
- if(opt.success){
- fn.success=opt.success;
- }
- //扩展增强处理
- var_opt=$.extend(opt,{
- error:function(XMLHttpRequest,errorThrown){
- //错误方法增强处理
- fn.error(XMLHttpRequest,errorThrown);
- },
- success:function(data,textStatus){
- //成功回调方法增强处理
- fn.success(data,textStatus);
- }
- });
- _ajax(_opt);
- };
- })(jQuery);
这种方法与jquery.min.js库有冲突,使用时一定要注意!
- if("XMLHttpRequest".equals(((HttpServletRequest)request).getHeader("X-Requested-With"))){
- ((HttpServletResponse)response).setHeader("sessionstatus","timeout");
- ((HttpServletResponse)response).setHeader("redirectUrl",((HttpServletRequest)request).getContextPath()+"/login.jsp");
- }else{
- ((HttpServletResponse)response).sendRedirect(path2);
- }
- //如果session为空表示用户没有登录就重定向到login.jsp页面
- return;
- //全局的AJAX访问,处理AJAX清求时SESSION超时
- if(typeof($)!="undefined"){
- $.ajaxSetup({
- contentType:"application/x-www-form-urlencoded;charset=utf-8",
- complete:function(XMLHttpRequest,textStatus){
- //通过XMLHttpRequest取得响应头,sessionstatus
- varsessionstatus=XMLHttpRequest.getResponseHeader("sessionstatus");
- if(sessionstatus=="timeout"){
- //这里怎么处理在你,这里跳转的登录页面
- window.location.replace(XMLHttpRequest.getResponseHeader("redirectUrl"));
- }
- }
- });
- }
jquery不推荐使用ajaxSetup容易影响其他插件ajax发生冲突,以上两种方式在使用过程中一定要谨慎!
转自:http://blog.csdn.net/qq741437836/article/details/52587816
http://www.jb51.net/article/85796.htm
http://www.jb51.net/article/60202.htm
http://www.cnblogs.com/web-easy/p/5056653.html