一、自定义注解
/**
* 自定义filter
* 编写一个类,实现javax.servlet.Filter 添加component注解,添加webfilter注解
* 通过@WebFilter注解对filter进行配置
*/
@Component
@WebFilter
public class MyFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
//filter的初始化方法,可以执行初始化操作
System.out.println("myfilter init");
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
filterChain.doFilter(servletRequest,servletResponse);
}
@Override
public void destroy() {
//销毁
}
}
二、引入其他filter(别人编写的,因为不能加component注解,所以需要加入到容器中)
@Configuration
public class filterconfig {
@Bean
public FilterRegistrationBean filterRegistrationBean(){
FilterRegistrationBean<Filter> filterFilterRegistrationBean = new FilterRegistrationBean<>();
MyFilter myFilter1 = new MyFilter();
filterFilterRegistrationBean.addUrlPatterns("/myfilter");
filterFilterRegistrationBean.setFilter(myFilter1);
filterFilterRegistrationBean.setOrder(1);
return filterFilterRegistrationBean;
}
@Bean
public FilterRegistrationBean filterRegistrationBean2(){
FilterRegistrationBean<Filter> filterFilterRegistrationBean2 = new FilterRegistrationBean<>();
MyFilter2 myFilter2 = new MyFilter2();
filterFilterRegistrationBean2.addUrlPatterns("/myfilter");
filterFilterRegistrationBean2.setFilter(myFilter2);
filterFilterRegistrationBean2.setOrder(2);
return filterFilterRegistrationBean2;
}