使用注解注册
建立AyUserFilter类
@WebFilter注解的作用是将这个类声明为过滤器,filterName属性指定了过滤器的名称,urlPatterns指定了过滤器的过滤路径。
@WebFilter(filterName = "ayUserFilter", urlPatterns = "/*")
public class AyUserFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
System.out.println("---------------doFilter---------------");
chain.doFilter(request,response);
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("------------init------------------");
}
@Override
public void destroy() {
System.out.println("------------destory----------------");
}
}
在主类上添加@ServletComponentScan注解
使用该注解后,Servlet、Filter、Listener可以直接通过@WebServlet、@WebFilter、@WebListener注解自动注册,无需其它代码,也可以使用代码注册,通过ServletRegistrationBean、FilterRegistrationBean和ServletListenerRegistrationBean注册Bean。
结果
可以看到控制台打印了信息。
使用代码注册
新建MyConfig配置类
在上面代码的基础上,新建MyConfig配置类,并去掉主类上的@ServletComponentScan注解。
@Configuration
public class MyConfig {
@Bean
public FilterRegistrationBean servletRegistrationBean() {
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setFilter(new AyUserFilter());
filterRegistrationBean.setUrlPatterns(Arrays.asList("/*"));
return filterRegistrationBean;
}
}
运行结果
可以看到控制台输出了信息。
监听器
整合监听器的方式和上面整合过滤器的方式是一样的。