SpringBoot项目中怎么添加拦截器

本文介绍了如何在SpringMVC中创建拦截器,包括实现HandlerInterceptor接口,重写preHandle和postHandle方法。接着,展示了如何配置拦截器,通过WebMvcConfigurer接口的addInterceptors方法添加拦截器并设定拦截路径。最后,通过一个简单的Controller示例展示了拦截器在处理请求前后的日志输出效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、创建拦截器

创建拦截器类,实现HandlerInterceptor接口,重写preHandle方法,postHandle方法

@Slf4j
public class MyInterceptor extends HandlerInterceptorAdapter {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        //在请求处理之前进行拦截处理
        log.info("测试拦截器------preHandle");
        //返回true表示继续执行请求,返回false表示停止执行请求
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        //在请求处理之后进行拦截处理
        log.info("测试拦截器------postHandle");
    }
}

二、 创建拦截器配置类

创建拦截器配置类,实现WebMvcConfigurer接口,重写addInterceptors方法,并用@Configuration注解标注该类为配置类

@Configuration
public class InterceptorConfig implements WebMvcConfigurer {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new MyInterceptor()).addPathPatterns("/test/**");
    }
}

在addInterceptors方法中把刚才创建的拦截器添加进去,并设置拦截的路径;(也可以通过excludePathPatterns方法设置排除的路径)

三、编写Controller类

@RestController
@RequestMapping("/test")
public class TestController {

	@GetMapping("/test1")
    public void test1() {
        log.info("测试业务处理");
    }
}

四、测试效果

我们发起请求,可以在控制台得到这样的日志

测试拦截器------preHandle
测试业务处理
测试拦截器------postHandle
Spring Boot项目中创建拦截器非常简单,通过实现`HandlerInterceptor`接口并注册到配置类即可完成自定义拦截器的功能。以下是详细的步骤: ### 步骤1: 创建拦截器 首先需要编写一个实现了 `HandlerInterceptor` 接口的类,并覆盖其中的方法。 ```java import org.springframework.web.servlet.HandlerInterceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class MyInterceptor implements HandlerInterceptor { // 在请求处理之前调用 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println("进入preHandle方法"); // 返回true表示继续执行后续操作;返回false则中断整个流程 return true; } // 请求处理完成后视图渲染之前的调用 @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println("进入postHandle方法"); } // 整个请求结束之后最后调用(包括渲染) @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println("进入afterCompletion方法"); } } ``` ### 步骤2: 注册拦截器 接下来,在 Spring 配置文件或 Java Config 类中将该拦截器添加进 WebMvcConfigurer 的 addInterceptors() 方法内。 ```java import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { // 添加自定义拦截器、设置其生效路径规则等信息 registry.addInterceptor(new MyInterceptor()).addPathPatterns("/test/**"); } } ``` 以上代码片段会使得所有匹配 `/test/**` 路径模式下的访问都会经过我们所设定好的拦截逻辑。 如果希望某些特定条件下才触发拦截功能的话还可以结合 Filter 或 AOP 技术共同达成目的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

每天进步亿点点的小码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值