在Spring Boot项目中,有一个项目的使用@WebFilter的Filter不起作用。记录一下解决方式:
Filter的实现方式如下:
@Order(1)
@WebFilter(filterName = "commonDataFilter", urlPatterns = "/*")
public class CommonDataFilter implements Filter {
......
}
有两种解决方案:
1. 如果是用war包启动,检查一下工程中的是怎么写的?
<web-app version="3.0" xmlns="/xml/ns/javaee"
xmlns:xsi="http:///2001/XMLSchema-instance"
xsi:schemaLocation="/xml/ns/javaee /xml/ns/javaee/web-app_3_0.xsd">
<display-name>Archetype Created Web Application</display-name>
</web-app>
红色部分是不是有?
2. 不使用@WebFilter注解,手动注入:
@Bean
public FilterRegistrationBean someFilterRegistration() {
FilterRegistrationBean registration = new FilterRegistrationBean();
(commonDataFilter());
("/*");
("commonDataFilter");
(1);
return registration;
}
/**
* 创建一个bean
* @return
*/
@Bean(name = "commonDataFilter")
public Filter commonDataFilter() {
return new CommonDataFilter();
}