注: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 请求 成功后,返回至页面】
推荐阅读
- JavaScript|JavaScript: BOM对象 和 DOM 对象的增删改查
- 前端|web前端dya07--ES6高级语法的转化&render&vue与webpack&export
- JS/JavaScript|JS/JavaScript CRC8多项式 16进制
- JS|VUE学习笔记[30-46]
- 腾讯TEG实习|腾讯实习——Vue解决跨域请求
- 地图|高德地图清除指定覆盖物 自定义覆盖物样式(完整dome)
- Pyecharts|Pyecharts 猎聘招聘数据可视化
- flex|C语言-使用goto语句从循环中跳出
- HTML+Js实战项目|在网页中实现icon小图标的几种方法
- js中国标准时间转化为年月日,时间戳