SpringBoot——实现过滤器Filter
1、Filter过滤器
(1) 主要用来过滤用户请求的,允许我们对用户的请求进行前置处理和后置处理。面向切面编程AOP。
例如:实现URL级别的权限控制、过滤非法请求等。
(2)Filter是依赖于Servlet容器(Filter接口在Servlet包下),增强版的servlet
(3)自定义Filter
方法一 : 1、实现javax.Servlet.Filter接口
2、重写方法
init() 初始化
doFilter() 对请求进行过滤
destroy() 销毁过滤器后自行的操作,对资源进行回收
3、创建配置类中注册自定义的过滤器
方法二:@WebFilter()注解,进行参数配置
@ServletComponentScan
2、Filter接口如何实现拦截功能
(1)doFilter() 实现对用户请求的过滤
(2)流程:
1、用户发送请求到web服务器,请求先到过滤器
2、过滤器对请求进行一些处理(过滤请求参数、修改返回给客户端的response内容、判断是否让用户访问该接口等)
3、用户请求完毕
3、定义多个过滤器,决定过滤器执行顺序
在配置类中调用FilterRegistrationBean.setOrder()方法进行决定。
filterRegistrationBean.setOrder(2); //2 表示在1 执行后再执行
filterRegistrationBean.setOrder(1); //1 表示先执行
@Configuration
public class MyFilterConfig {
@Autowired
MyFilter myFilter;
@Autowired
MyFilter2 myFilter2;
@Bean
public FilterRegistrationBean<MyFilter> setUpMyFilter() {
FilterRegistrationBean<MyFilter> filterRegistrationBean = new FilterRegistrationBean<>();
filterRegistrationBean.setOrder(2);
filterRegistrationBean.setFilter(myFilter);
filterRegistrationBean.setUrlPatterns(new ArrayList<>(Arrays.asList("/api/*")));
return filterRegistrationBean;
}
@Bean
public FilterRegistrationBean<MyFilter2> setUpMyFilter2() {
FilterRegistrationBean<MyFilter2> filterRegistrationBean = new FilterRegistrationBean<>();
filterRegistrationBean.setOrder(1);
filterRegistrationBean.setFilter(myFilter2);
filterRegistrationBean.setUrlPatterns(new ArrayList<>(Arrays.asList("/api/*")));
return filterRegistrationBean;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)