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");
    
        }
    }
    

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

    完了。

  • 相关阅读:
    CF633C Spy Syndrome 2 trie树
    luogu 3998 [SHOI2013]发微博 map
    阿里云ECS新增端口
    阿里云运行docker容器报错
    no matches for kind "ReplicaSet" in version "extensions/v1beta1"
    k8s中flannel:镜像下载不了
    k8s删除节点后再重新添加进去(踩坑)
    如何在IntelliJ Idea中同时启动不同端口
    SpringBoot整合Elastic-job(详细)
    K8S容器探针
  • 原文地址:https://www.cnblogs.com/c9999/p/10283839.html
Copyright © 2011-2022 走看看