(1) 对过滤器使用@Component注解或者在配置类中使用@Bean注解,但这种方式有个弊端就是拦截所有请求
(2)使用@WebFilter注解可以指定拦截url,但此方式也存在弊端多个过滤器无法指定优先级
(3)使用FilterRegistrationBean方式创建过滤器可以指定过滤器优先级
(1)、基于@Component 或者@Bean实现
@Component public class TestFilter implements Filter{ @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { System.out.println("过滤器111"); } @Override public void destroy() { } }
配置类中@Configuration
@Bean("myFilter1")
public Filter estFilter() {
return new TestFilter();
}
(2)、基于WebFilter(注意启动类要加@ServletComponentScan注解)
@WebFilter(filterName = "test1", urlPatterns = { "/page/*" }) public class TestFilter implements Filter{ @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { System.out.println("过滤器111"); } @Override public void destroy() { } }
(3)基于FilterRegistrationBean
@Bean public FilterRegistrationBean uploadFilterRegistration1() { FilterRegistrationBean registration = new FilterRegistrationBean(); registration.setFilter(new DelegatingFilterProxy(new TestFilter())); registration.addUrlPatterns("/*"); registration.setName("MyFilter1"); registration.setOrder(5);//优先级数字越大优先级越小 return registration; }
原文:https://www.cnblogs.com/kjcc/p/13566727.html