自定义Filter
spring boot中实现Filter有两种方式
1、利用@WebFilter注解实现
@WebFilter(urlPatterns = "*", filterName = "myFilter", initParams = { @WebInitParam(name = "name1", value = "wfs"), @WebInitParam(name =
"name2", value = "gqq") })
public class MyFilter implements Filter{
@Override
public void init(FilterConfig filterConfig) throws ServletException {
//todo 初始化
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
throws IOException, ServletException {
// todo 自定义操作
filterChain.doFilter(servletRequest, servletResponse);
}
@Override
public void destroy() {
//销毁
}
@WebFilter常用属性
| 属性 | 类型 | 描述 |
|---|---|---|
| filterName | String | Filter名称 |
| urlPatterns/value | String[] | 指定拦截的url |
| servletNames | String[] | 指定拦截的servlet名称 |
| initParams | WebInitParam[] | 初始化参数 |
| displayName | String | 用于显示的Filter名称 |
| asyncSupported | boolean | 是否支持异步 |
| dispatcherTypes | DispatcherType[] | 指定Filter对哪种方式的请求进行过滤。支持的属性:ASYNC、ERROR、FORWARD、INCLUDE、REQUEST;默认过滤所有方式的请求 |
注意:需要在启动类增加注解@ServletComponentScan来启用
使用此方法实现的Filter的执行顺序是按照过滤器类名称顺序执行,所以推荐第二种实现方式
2、使用java config来实现
@Configuration
public class WebMvcConfiguration {
@Bean
public FilterRegistrationBean filterRegistrationBean() {
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new MyFilter());
filterRegistrationBean.addInitParameter("name1", "123");
filterRegistrationBean.addInitParameter("name2", "hhh");
filterRegistrationBean.setOrder(1);
filterRegistrationBean.addUrlPatterns("/*");
}
}
推荐使用第二种方法实现,可以设置执行顺序
本文详细介绍SpringBoot中实现自定义Filter的两种方法,包括利用@WebFilter注解和使用Java配置方式,后者可灵活设置执行顺序。
1227

被折叠的 条评论
为什么被折叠?



