springboot的拦截器Interceptor的性质


  • Interceptor在springboot2.x版本的快速入门
  1. 实现HandlerInterceptor的接口,并重载它的三个方法:preHandle、postHandle、afterCompletion。
  2.  1 1 /**
     2  2  * 登陆拦截器
     3  3  * @author HILL
     4  4  *
     5  5  */
     6  6 public class LoginInterceptor implements HandlerInterceptor {
     7  7 
     8  8     @Override
     9  9     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
    10 10             throws Exception {
    11 11         return HandlerInterceptor.super.preHandle(request, response, handler);
    12 12     }
    13 13 
    14 14     @Override
    15 15     public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
    16 16             ModelAndView modelAndView) throws Exception {
    17 17         HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);
    18 18     }
    19 19 
    20 20     @Override
    21 21     public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
    22 22             throws Exception {
    23 23         HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
    24 24     }
    25 25 }
    实现接口

     

   2.加载过滤器的配置类,并设置过滤路径路径

  这里的意思是:添加一个MyInterceptor拦截器,拦截路径为/properties。(注意不要忘记在配置类上加@Configuration注解)

@Configuration
public class MyWebMvcConfigurer implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        
        registry.addInterceptor(new MyInterceptor()).addPathPatterns("/properties");
        WebMvcConfigurer.super.addInterceptors(registry);
    }
}
加载配置

 

  • 拦截器三个方法:preHandle、postHandle、afterCompletion的性质。
  1. 因为springboot就是类似一个配置好的ssm框架,所以mvc层就是springmvc,所以这里的性质也是一样的。

    preHandle:在进入controller之前进行拦截并决定是否放行。

    postHandle:在controller处理完请求后,返回视图前执行。当controller发生异常时不执行该方法。

    afterCompletion:返回视图后,一般用于资源的回收,因为发生异常该方法也会执行

  • Interceptor的拦截性质
  1. 因为springmvc的入口就是dispatcherServlet,所有操作都是基于这个入口。所以Interceptor只能拦截springmvc中的RequestMapping,并不能拦截Servlet
  2. 需要拦截servlet时要定义filter进行过滤。
  3. 多个拦截器是的执行顺序,preHandle是在configure类里先添加先执行。postHandle、afterCompletion则依次按顺序由先进后出的规则执行。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM