这是第一个filter
@Component
public class FirstFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
FilterChain filterChain) throws IOException, ServletException {
System.out.println("dofilter1");
filterChain.doFilter(servletRequest,servletResponse);
}
@Override
public void destroy() {
}
}
这是第二个
@Component
public class ScondFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
FilterChain filterChain) throws IOException, ServletException {
System.out.println("dofilter2");
filterChain.doFilter(servletRequest,servletResponse);
}
@Override
public void destroy() {
}
}
具体业务内容可根据不同场景更改
然后写Registrationbean
setorder可以设置执行的顺序
@Configuration
public class FilterRegister {
@Bean
public FilterRegistrationBean registrationFilterBean(){
FilterRegistrationBean filterRegistrationBean=new FilterRegistrationBean();
filterRegistrationBean.setFilter(new FirstFilter());
filterRegistrationBean.addUrlPatterns("/hello/*");
filterRegistrationBean.setOrder(0);
filterRegistrationBean.setEnabled(true);
return filterRegistrationBean;
}
@Bean
public FilterRegistrationBean registrationBean(){
FilterRegistrationBean filterRegistrationBean=new FilterRegistrationBean();
filterRegistrationBean.setFilter(new ScondFilter());
filterRegistrationBean.addUrlPatterns("/hello/*");
filterRegistrationBean.setOrder(1);
filterRegistrationBean.setEnabled(true);
return filterRegistrationBean;
}
}
最后运行,在本机上访问localhost://8080/hello时,Filter依次进行过滤,最后输出如下