当过滤器遇到ajax调用时无法正常返回情况,需要在过滤器中对ajax调用进行处理,示例如下:
private static boolean ajaxDofilterSessionNull(HttpServletRequest request,HttpServletResponse response){
boolean isAjax = false;
if (request.getHeader("x-requested-with") != null && request.getHeader("x-requested-with").equals("XMLHttpRequest")) {
response.setHeader("sessionstatus", "timeout");
isAjax = true;
}
return isAjax;
}
若是返回true则不能用response.sendRedirect(“”)来跳转,此时需要一个ajax全局方法jQuery.ajaxSetup,如下:
jQuery.ajaxSetup({
contentType : "application/x-www-form-urlencoded;charset=utf-8",
complete : function(XMLHttpRequest, textStatus) {
var sessionstatus = XMLHttpRequest.getResponseHeader("sessionstatus");
if (sessionstatus == "timeout") {
window.location.replace("/login.htm");
}
}
});
这样在ajax请求时就可以顺利跳转到需要的链接。此全局方法可以放在任何页面,所有ajax请求处理结果前都会调用此全局方法。
但是ajax所指向的后台方法还是会执行!