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

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

    完了。

  • 相关阅读:
    B站14天数据分析笔记6次课笔记
    B站14天数据分析笔记5次课作业
    B站14天数据分析笔记5次课Pandas
    1037 在霍格沃茨找零钱 (20 point(s))
    第一章:第三节探索性数据分析
    Java没有运行选项
    Eclipse截图的时候错误提示消失/复制粘贴错误信息
    错误记录_css属性的值一定不需要引号么?
    错误记录_语法哪里错了?
    微软输入法使用
  • 原文地址:https://www.cnblogs.com/c9999/p/10283839.html
Copyright © 2011-2022 走看看