在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 中的内容是需要放行的路径

最新文章

  1. javaSE基础04
  2. 2013 duilib入门简明教程 -- XML基础类(7)
  3. CSS盒子模型的一些理解
  4. UIScrollView增加刷新
  5. linux 学习之路
  6. Exception-异常
  7. Spring 4.3.2下实现http多次断点下载
  8. ab压测参数说明
  9. http://www.itpub.net/thread-1778530-1-1.html
  10. android 56
  11. jQuery慢慢啃之事件(七)
  12. HDOJ 2802 F(N)
  13. [Android] Volley源代码分析(五岁以下儿童)Q \\ u0026一个
  14. 闭包&装饰器详解
  15. 大数据系列之Hadoop分布式集群部署
  16. C# 各种常用集合类型的线程安全版本
  17. Can you solve this equation?
  18. 微信支付之02------整个微信支付功能----------Java实现
  19. Python中的numpy模块解析
  20. 工具类:Colletions ,Arrays(静态导入,可变参数,强循环)

热门文章

  1. [python] 向量检索库Faiss使用指北
  2. JAVA中使用最广泛的本地缓存?Ehcache的自信从何而来3 —— 本地缓存变身分布式集群缓存,打破本地缓存天花板
  3. Vue 修改对象(数组)没有立即生效
  4. requests模块已经安装,vs code下无法导入requests模块
  5. Goby安装与使用
  6. FalseSharing-伪共享
  7. DRF安装与使用
  8. 05安装一个Hadoop分布式集群
  9. 定时任务,LocalDateTime,在代码中调用其他项目的接口url
  10. SpringBoot+Vue前后端分离项目,在过滤器取值为Null