1. 自动注册
触发顺序依赖文件名A-Z
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
@Slf4j
@WebFilter(filterName = "CustomFilter",urlPatterns = {"/*"})
public class CustomFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
log.info("init -> " + filterConfig);
}
@Override
public void doFilter(
ServletRequest servletRequest,
ServletResponse servletResponse,
FilterChain filterChain
) throws IOException, ServletException {
log.info("customFilter 请求处理之前----doFilter方法之前过滤请求");
//对request、response进行一些预处理
// 比如设置请求编码
// request.setCharacterEncoding("UTF-8");
// response.setCharacterEncoding("UTF-8");
//链路 直接传给下一个过滤器
filterChain.doFilter(servletRequest, servletResponse);
log.info("customFilter 请求处理之后----doFilter方法之后处理响应");
}
@Override
public void destroy() {
log.info("filter 销毁");
}
}
启动器增加 @ServletComponentScan
1
2
3
4
5
6
7
8
9
@SpringBootApplication
@ServletComponentScan
public class SpringBootStudyApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootStudyApplication.class, args);
}
}
2. 手动注册
需去掉Filter中的
@WebFilter
注解
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@Configuration
public class FilterRegistration {
@Bean
public FilterRegistrationBean<CustomFilter> filterRegistrationBean() {
FilterRegistrationBean<CustomFilter> registration = new FilterRegistrationBean<>();
//Filter可以new,也可以使用依赖注入Bean
registration.setFilter(new CustomFilter());
//过滤器名称
registration.setName("customFilter");
//拦截路径
registration.addUrlPatterns("/*");
//设置顺序
registration.setOrder(10);
return registration;
}
}