zoukankan      html  css  js  c++  java
  • 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则依次按顺序由先进后出的规则执行。
  • 相关阅读:
    haproxy tcp 反向代理
    c# 字节高低位
    Mac Launchpad图标调整
    vsftp 777权限
    centos7下tomcat7 或tomcat8启动超慢原因
    mysql连接com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link
    Mac mysql 运行sql文件中文乱码的问题
    Mac Mysql [ERR] 2006
    记一次部署java项目的问题
    典型的响应式布局实例代码
  • 原文地址:https://www.cnblogs.com/hill1126/p/10690670.html
Copyright © 2011-2022 走看看