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

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

    完了。

  • 相关阅读:
    ubuntu15.04下安装配置docker
    在Vmware/VirtualBox虚拟机环境中正确打开虚拟机
    windows下使用cx_freeze将Python程序打包成exe可执行文件
    Python正则表达式学习小结
    Ubuntu环境下利用Python3+PyQt5+Eric6进行GUI编程
    C#学习笔记——控件篇
    商务英语学习第一课(lending(借贷))
    Ajax的请求方式:get和post
    XML就像是扩展应用范围的HTML
    JQ数组=jQuery对象数组
  • 原文地址:https://www.cnblogs.com/c9999/p/10283839.html
Copyright © 2011-2022 走看看