Filter过滤器
概述:可以拦截和过滤所有web资源
实现方式一:使用@WebFilter
注解实现
@WebFilter(filterName = "myFilter",urlPatterns = "/*")
public class MyFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {}
@Override
public void destroy() {}
}
实现方式二:在配置类中注册FilterRegistrationBean
@Bean
public FilterRegistrationBean filterRegistrationBean()
{
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setFilter(new Filter(){ //设置一个Filter
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
throws IOException, ServletException{ filterChain.doFilter(servletRequest,servletResponse); }
});
filterRegistrationBean.addUrlPatterns("/*"); //设置这个Filter的匹配路径
return filterRegistrationBean; //注册这个Filter
}
Listener监听器
概述:当WEB应用发生某些事件时响应的行为
实现方式一:使用@WebListener
注解实现
@WebListener //这个类必须是继承某个事件接口的类
public class FirstListener implements ServletContextListener{
@Override
public void contextInitialized(ServletContextEvent sce) { System.out.println("init .. "); }
@Override
public void contextDestroyed(ServletContextEvent sce) { System.out.println("desroyed .. "); }
}
实现方式二:在配置类中注册ServletListenerRegistrationBean
@Bean
public ServletListenerRegistrationBean getBean(){
return new ServletListenerRegistrationBean(new SecondListener());
}
Interceptor拦截器
概述:只能拦截匹配路径的请求,可以对请求过滤和拦截
实现:
@Configuration
public class AppConfigurer extends WebMvcConfigurerAdapter {
@Bean
public HandlerInterceptor getMyInterceptor() {
return new Interceptor();
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(getMyInterceptor()).addPathPatterns("/**");
super.addInterceptors(registry);
}
}