ajax请求 session过期跳转首页的两种处理方式

在处理session过期跳转首页时遇到了一些困难,经过百度发现了大致两种方法,在这里进行一下整理:


1、直接重写jquery   ajax方法:

(function($){  
    //备份jquery的ajax方法  
    var _ajax=$.ajax;  
      
    //重写jquery的ajax方法  
    $.ajax=function(opt){  
        //备份opt中error和success方法  
        var fn = {  
            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, textStatus, errorThrown){  
                //错误方法增强处理  
                  
                fn.error(XMLHttpRequest, textStatus, errorThrown);  
            },  
            success:function(data, textStatus){  
                //成功回调方法增强处理  
                fn.success(data, textStatus);  
            }  
        });  
        _ajax(_opt);  
    };  
})(jQuery);

这种方法与jquery.min.js库有冲突,使用时一定要注意!


2、基于 ajaxSetup来进行控制:

在登录的过滤器或者拦截器中添加一下代码:

 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;  


js中添加:

//全局的AJAX访问,处理AJAX清求时SESSION超时  
if(typeof($)!="undefined"){  
    $.ajaxSetup({  
        contentType : "application/x-www-form-urlencoded;charset=utf-8",  
        complete : function(XMLHttpRequest, textStatus) {  
            // 通过XMLHttpRequest取得响应头,sessionstatus  
            var sessionstatus = XMLHttpRequest.getResponseHeader("sessionstatus");  
            if (sessionstatus == "timeout") {  
                // 这里怎么处理在你,这里跳转的登录页面  
                window.location.replace(XMLHttpRequest.getResponseHeader("redirectUrl"));  
            }  
        }  
    });  
}
jquery不推荐使用ajaxSetup容易影响其他插件ajax发生冲突,以上两种方式在使用过程中一定要谨慎!



你可能感兴趣的:(java_util)