zoukankan      html  css  js  c++  java
  • Springboot2.x 拦截器

    一,单个拦截器,实现接口  HandlerInterceptor

    @Component
    public class MyInterceptor1 implements HandlerInterceptor {
    
        /**
         * 进入controller层之前拦截请求
         * @param request
         * @param response
         * @param handler
         * @return
         * @throws Exception
         */
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
            System.out.println("============1111111111---preHandle============");
            return true;
        }
    
        /**
         * 处理请求完成后视图渲染之前的处理操作
         * @param request
         * @param response
         * @param handler
         * @param modelAndView
         * @throws Exception
         */
        @Override
        public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception {
            System.out.println("============1111111111---postHandle ============");
        }
        /**
         * 视图渲染之后的操作
         * @param request
         * @param response
         * @param handler
         * @param ex
         * @throws Exception
         */
        @Override
        public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception {
            System.out.println("============1111111111---afterCompletion============");
        }
    
    }
    

      新建类  InterceptorConfig 实现 WebMvcConfigurer 

    @Configuration
    public class InterceptorConfig implements WebMvcConfigurer {
    
        @Resource
        private MyInterceptor1 myInterceptor1;
        @Override
        public void addInterceptors(InterceptorRegistry registry) {
            //添加要拦截的url                                拦截的路径                                    放行的路径
            registry.addInterceptor(myInterceptor1).addPathPatterns("/admin/**").excludePathPatterns("/admin/login");
        }
    }
    

     

    二 ,多个拦截器

    咱建个拦截器 2

    @Component
    public class MyInterceptor2 implements HandlerInterceptor {
    
        /**
         * 进入controller层之前拦截请求
         * @param request
         * @param response
         * @param handler
         * @return
         * @throws Exception
         */
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    
            System.out.println("============2222222---preHandle============");
    
            return true;
        }
    
        /**
         * 处理请求完成后视图渲染之前的处理操作
         * @param request
         * @param response
         * @param handler
         * @param modelAndView
         * @throws Exception
         */
        @Override
        public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception {
            System.out.println("============2222222---postHandle ============");
        }
    
        /**
         * 视图渲染之后的操作
         * @param request
         * @param response
         * @param handler
         * @param ex
         * @throws Exception
         */
        @Override
        public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception {
            System.out.println("============2222222---afterCompletion============");
        }
    
    }
    

      

    然后在 InterceptorConfig 添加配置

    @Configuration
    public class InterceptorConfig implements WebMvcConfigurer {
    
        @Resource
        private MyInterceptor1 myInterceptor1;
        @Resource
        private MyInterceptor2 myInterceptor2;
        @Override
        public void addInterceptors(InterceptorRegistry registry) {
            //添加要拦截的url               1                 拦截的路径                                    放行的路径
            registry.addInterceptor(myInterceptor1).addPathPatterns("/admin/**").excludePathPatterns("/admin/login");
            //添加要拦截的url                2
            registry.addInterceptor(myInterceptor2).addPathPatterns("/admin/**").excludePathPatterns("/admin/login");
        }
    }
    

      现在看看两个拦截器执行顺序

    现在把 拦截器1和2的位置换下

    @Configuration
    public class InterceptorConfig implements WebMvcConfigurer {
    
        @Resource
        private MyInterceptor1 myInterceptor1;
        @Resource
        private MyInterceptor2 myInterceptor2;
        @Override
        public void addInterceptors(InterceptorRegistry registry) {
            //添加要拦截的url                2
            registry.addInterceptor(myInterceptor2).addPathPatterns("/admin/**").excludePathPatterns("/admin/login");
            //添加要拦截的url               1                 拦截的路径                                    放行的路径
            registry.addInterceptor(myInterceptor1).addPathPatterns("/admin/**").excludePathPatterns("/admin/login");
    
        }
    }
    

      然后顺序就变了,日志如下

    完了。

  • 相关阅读:
    RDD弹性分布式数据集的基本操作
    spark-shell的Scala的一些方法详解
    浅谈架构
    关于MapReduce二次排序的一点解答
    mysql 和 hive 和分布式zookeeper和HBASE分布式安装教程
    2018暑假总结
    暑假总结07
    2018暑假总结06
    2018暑假总结05
    2018暑假总结04
  • 原文地址:https://www.cnblogs.com/c9999/p/10283839.html
Copyright © 2011-2022 走看看