• 07springboot拦截器


    springboot拦截器

    2.0之前的拦截器(WebMvcConfigurerAdapter)

    • 使用注解 @Configuration配置拦截器
    • 继承WebMvcConfigurerAdapter
    • 重写addInterceptors 添加需要的拦截器地址
    @Configuration
    public class WebMvcConfigurer extends WebMvcConfigurerAdapter {//或者在主类上及继承
        //-------------------------------------------------------------------------------
    
        /**
        使用的时候才定义拦截器
        */
        @Override
        public void addInterceptors(InterceptorRegistry registry) {
            /**
             * 拦截器按照顺序执行
             */
            registry.addInterceptor(new TwoInterceptor()).addPathPatterns("/two/**")
                                                         .addPathPatterns("/one/**");//new TwoInterceptor()定义拦截器
            registry.addInterceptor(new OneInterceptor()).addPathPatterns("/one/**");
    
            super.addInterceptors(registry);
        }
    
        //-------------------------------------------------------------------------------
        //或者先定义后使用:
        @Bean  //定义i=
        public LoginInterceptor loginInterceptor() {
            return new LoginInterceptor();
        }
        @Override //配置使用
        public void addInterceptors(InterceptorRegistry registry) {
            // addPathPatterns 用于添加拦截规则
            // excludePathPatterns 用户排除拦截
            // 登录拦截(登录,退出的去掉)
            registry.addInterceptor(loginInterceptor()).addPathPatterns("/ucareschedule/**")  //添加拦截
                    .excludePathPatterns("/ucareschedule/manager/login")
                    .excludePathPatterns("/index.html/");
        }
        //-------------------------------------------------------------------------------
    
    }

    2.0之后的拦截器

    主类设置继承类

    implements WebMvcConfigurer
    //拦截设置一致

    具体拦截类

    public class OneInterceptor implements HandlerInterceptor  {//或extends HandlerInterceptorAdapter
    
        /**
         * 在请求处理之前进行调用(Controller方法调用之前)
         */
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object object) throws Exception {
    
            System.out.println("被one拦截,放行...");
            return true;//true继续,false,拦截校验失败
    
        }
    
        /**
         * 请求处理之后进行调用,但是在视图被渲染之前(Controller方法调用之后)
         */
        @Override
        public void postHandle(HttpServletRequest request, HttpServletResponse response, Object object, ModelAndView mv)throws Exception {
    
        }
    
        /**
         * 在整个请求结束之后被调用,也就是在DispatcherServlet 渲染了对应的视图之后执行
         * (主要是用于进行资源清理工作)
         */
        @Override
        public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object object, Exception ex)throws Exception {
    
        }
    }




  • 相关阅读:
    新安装的Apache和php,测试可以解析phpinfo,但是无法打开drupal网站
    Drupal7安装注意事项
    drupal7 为视图添加 过滤标准 内容类型
    Drupal网站报错:PDOException: in lock_may_be_available()
    窗口聚合函数与分组聚合函数的异同
    Linux环境下段错误的产生原因及调试方法小结(转)
    gzip 所使用压缩算法的基本原理(选摘)
    InfluxDB使用纪录
    子网掩码解释(转)
    列存的压缩原理学习
  • 原文地址:https://www.cnblogs.com/ziyue7575/p/bb627f17a003b9fe329cd37a89a84420.html
Copyright © 2020-2023  润新知