Spring Boot中过滤器
过滤器是什么
Filter
也称之为过滤器,过滤器是对数据进行过滤,预处理。开发人员可以对客户端提交的数据进行过滤处理,比如敏感词,也可以对服务端返回的数据进行处理。还有就是可以验证用户的登录情况,权限验证,对静态资源进行访问控制,没有登录或者是没有权限时是不能让用户直接访问这些资源的。类似的过滤器还有很多的功能,比如说编码,压缩服务端给客户端返回的各种数据,等等。
简而言之,过滤器是一种轻量级的拦截器,基于Servlet规范,能够拦截请求和响应,在进入Servlet之前或之后进行额外处理。
过滤器的生命周期
定义过滤器需要实现javax.servlet.Filter
接口
该接口定义了过滤器的3个生命周期方法:
- init():初始化方法,用于初始化过滤器
- doFilter():实际执行过滤逻辑的方法,每次请求到达时调用
- destroy():销毁方法,用于释放资源
它主要用于:
- 预处理请求:在请求到达 Servlet 之前进行拦截和处理,例如校验Token、密钥等
- 后处理响应:在 Servlet 处理完请求后进行额外处理,例如日志记录等
- 处理 OPTIONS 请求:实现 CORS 跨域支持
案例
编写过滤器
public class MyFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
// 实现过滤逻辑
chain.doFilter(request, response); //将请求传递给下一个过滤器或servlet
}
@Override
public void destroy() {
}
}
注册到spring boot中,有两种方法:
- 通过@Filter注解:
@Filter
public class MyFilter implements Filter {}
这种方式下,过滤器会默认映射到/*,拦截所有的请求
2. 在spring.factories文件中注册:
在resources/META-INF/spring.factories添加:
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.example.MyFilter
这种方式需要手动配置过滤器的映射路径和排除路径。在application.properties中添加:
myfilter.filter.paths=/hello
myfilter.filter.exclude-paths=/ignore
过滤器的执行顺序取决于它在spring.factories文件中的注册顺序,除非通过@Order(n)指定顺序。值小的先执行。
标签:请求,Spring,Boot,Filter,spring,过滤器,Servlet,public From: https://www.cnblogs.com/bkhb/p/17601476.html