zoukankan      html  css  js  c++  java
  • Springboot 拦截器的配置

    在Springboot项目中添加拦截器,分两步:

    1:创建一个拦截器类

    2:配置拦截器

     

    以上步骤完成就可以使用了,下面来添加拦截器:

    1:创建一个拦截器类 MyInteceptor 继承 HandlerInterceptor 接口,然后实现它的几个方法,如下:

    package com.yyy.config;
    
    import com.yyy.pojo.User;
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.data.redis.core.RedisTemplate;
    import org.springframework.web.servlet.HandlerInterceptor;
    import org.springframework.web.servlet.ModelAndView;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    /**
     * @auther YueYangyang
     * @date 2020/6/25 21:28
     */
    @Slf4j
    public class MyInteceptor implements HandlerInterceptor {
        @Autowired
        private RedisTemplate redisTemplate;
    
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
            log.debug("这是MyInteceptor的preHandle方法。");
            return true;
        }
    
        @Override
        public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
            log.debug("这是MyInteceptor的postHandle方法。");
        }
    
        @Override
        public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
            log.debug("这是MyInteceptor的afterCompletion方法。");
        }
    }

     

    以上三个重写方法中 preHandle 方法就是拦截的时候,会进的方法,此时就写一个拦截器是不行的,那么什么时候拦截呢,那就要再写一个配置类,告诉拦截器什么时候拦截、什么时候不拦截

     

    2:配置拦截器  我们建一个配置类 MvcConfig 继承 WebMvcConfigurer接口,先将我们上一步写的拦截器注入到 bean 中,然后重写它的 addInterceptors 方法,代码如下:

    package com.yyy.config;
    
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
    import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
    
    /**
     * @auther YueYangyang
     * @date 2020/6/25 21:30
     */
    @Configuration
    public class MvcConfig implements WebMvcConfigurer {
        //注入bean
        @Bean
        public MyInteceptor myInteceptor(){
            return new MyInteceptor();
        }
    
        //重写拦截器
        @Override
        public void addInterceptors(InterceptorRegistry registry) {
            //excludePathPatterns  是放行
            //addPathPatterns
            registry.addInterceptor(myInteceptor()).addPathPatterns("/user/**","/main/**").excludePathPatterns("/login/**","/user/loginIn");
        }
    
    }

    此处要注意的是 注入bean 的方法名  要与重写方法中的标红位置名一致。

    到这里 我们就已经写好了拦截器了,其中配置类中 addPathPatterns 中的内容是,需要拦截的方法路径excludePathPatterns 中的内容是需要放行的路径

  • 相关阅读:
    Spring Data框架
    Flutter入门坑一Could not resolve com.android.tools.build:gradle:3.2.1.
    圆形图像
    MissingPluginException(No implementation found for method getDatabasesPath on channel com.tekartik.sqflite)
    flutter应用打包、修改图标、启动页和app名字
    sqflite常用操作
    Flutter解决神奇的ListView顶部多一段空白高度的问题
    Flutter-CircleAvatar圆形和圆角图片
    flutter 报错 DioError [DioErrorType.DEFAULT]: Bad state: Insecure HTTP is not allowed by platform
    【flutter 溢出BUG】 bottom overflowed by xxx PIXELS
  • 原文地址:https://www.cnblogs.com/yyy116008/p/13307943.html
Copyright © 2011-2022 走看看