SpringMVC的拦截器简介

68 阅读1分钟
  • SpringMVC的拦截器Interceptor规范,主要是对Controller资源访问时进行拦截操作的技术,当然拦截后可以进行权限控制,功能增强等都是可以的。拦截器有点类似 Javaweb 开发中的Filter,拦截器与Filter的区别如下图:

    image.png

  • 由上图,对Filter 和 Interceptor 做个对比:

    image.png

  • 实现了HandlerInterceptor接口,且被Spring管理的Bean都是拦截器,接口定义如下:

    public interface HandlerInterceptor {  
        default boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {  
            return true;  
        }  
    
        default void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception {  
        }  
    
        default void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception {  
        }  
    }
    
  • HandlerInterceptor接口方法的作用及其参数、返回值详解如下:

    image.png

  • 拦截器三个方法的执行顺序

    当每个拦截器都是放行状态时,三个方法的执行顺序如下: image.png 当Interceptor1和Interceptor2处于放行,Interceptor3处于不放行时,三个方法的执行顺序如下:

    image.png image.png