springmvc|springmvc Interceptor 拦截 ajax 请求 成功后,返回至页面

注:Interceptor 的作用之一可以是拦截请求,判断请求是否正常

问题:当 Interceptor 拦截ajax请求 后,返回false但是ajax需要的是返回的数据,所以此时拦截器会返回一个false,但是这并不是ajax请求想要的数据,所以没有执行相应的处理。

解决方法:在 Interceptor 拦截后返回指定的重定向请求头信息
并且在ajax中,设置complete函数,让请求完成后,自动执行该函数,判定是否存在请求头信息
如果存在,那么重定向到别的页面

springmvc interceptor配置



代码:
//用户操作拦截 public class ExecuteIntercept implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // if(request.getSession().getAttribute("LOG_IN_FLAG")==null){// 是ajax请求 if ("XMLHttpRequest".equals(request.getHeader("X-Requested-With"))) { //告诉ajax我是重定向 response.setHeader("REDIRECT", "REDIRECT"); //告诉ajax我重定向的路径 response.setHeader("CONTENTPATH", "error.jsp"); response.setStatus(HttpServletResponse.SC_FORBIDDEN); return false; } else { // 不是ajax请求 response.setContentType("text/html; charset=UTF-8"); response.getWriter().print(""); response.getWriter().close(); response.flushBuffer(); } return true; } }


【springmvc|springmvc Interceptor 拦截 ajax 请求 成功后,返回至页面】

    推荐阅读