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

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

    完了。

  • 相关阅读:
    ASIHTTPREQUEST 文档
    本地通知
    ASIHttpRequest 使用过程中,中文编码的问题
    讲讲最近自己的学习,谈谈未来的想法
    关于 ASP.NET MVC 4 如果管理用户
    [转贴]超级懒汉编写的基于.NET的微信SDK
    [转贴]实践:C++平台迁移以及如何用C#做C++包装层
    [转贴]Linq之动态查询
    [转贴]watin的一些例子
    [转贴]xcode帮助文档
  • 原文地址:https://www.cnblogs.com/c9999/p/10283839.html
Copyright © 2011-2022 走看看