拦截器HandlerInterceptor
拦截器可拦截前端发过来的请求,可用于登录拦截、获取用户或者权限校验。HandlerInterceptor方法介绍:
boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception;
void postHandle(
HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception;
void afterCompletion(
HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception;
preHandle:在业务处理器处理请求之前被调用。预处理,可以进行编码、安全控制、权限校验等处理;
postHandle:在业务处理器处理请求执行完成后,生成视图之前执行。后处理(调用了Service并返回ModelAndView,但未进行页面渲染),有机会对视图ModelAndView进行修改;
afterCompletion:在DispatcherServlet完全处理完请求后被调用,可用于清理资源等,如把线程中的本地变量删除。
在preHandler方法中return false;和return true;的区别是允不允许进入controller层,即return true是可继续请求,return false是拦截请求