springboot 过滤器
时间: 2024-10-23 19:01:37 浏览: 33
Spring Boot中的过滤器(Filter)是一种处理HTTP请求和响应的机制,它允许开发者在特定的生命周期阶段对请求进行预处理或后处理。在Spring Boot中,过滤器通常用于实现跨站请求伪造(CSRF)、日志记录、权限验证等功能。
1. **创建过滤器**:在Spring Boot应用中,你需要自定义一个实现了`OncePerRequestFilter`或`WebFilter`接口的类,然后配置到Spring MVC的`WebMvcConfigurerAdapter`或者更现代的方式是在`ServletRegistrationBean`上添加`addFilters`方法。
```java
@Configuration
public class MyFilterConfig implements WebMvcConfigurer {
@Override
public void addFilters(FilterRegistry registry) {
registry.addFilter("myCustomFilter")
.addMappingForUrlPatterns(EnumSet.allOf(DispatcherType.class), true, "/*");
}
}
```
2. **过滤器链**:Spring Boot的过滤器会按照声明的顺序依次处理请求,每个过滤器可以访问上下文并修改请求或响应的状态。你可以通过`doFilterInternal()`方法获取请求和响应对象,以及`HttpServletRequest`和`HttpServletResponse`对象。
3. **拦截器与过滤器的区别**:虽然两者都可用于控制请求流程,但拦截器(Interceptor)是基于AOP的,更适合于业务逻辑层面的增强,而过滤器则更适合处理底层网络协议相关的操作。
阅读全文