先贴一段拦截器和监听器概念的文字(来自https://www.jianshu.com/p/0d1f062dcd0d):
进入主题:
1.拦截器的实现方法有两种 实现Interceptor 接口 或者 继承HandlerInterceptorAdapter类,实现接口需要实现其中所有方法,继承抽象类则一般实现preHandle方法即可。
例如我下面实现Interceptor接口的拦截器,状态码为404便重定向跳转到404页面
逻辑配置
@Component("errorPageInterceptor") public class ErrorPageInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { Integer statusCode = (Integer) request.getAttribute("javax.servlet.error.status_code"); if(statusCode!=null) { if (statusCode == response.SC_NOT_FOUND) { response.sendRedirect(request.getContextPath()+"/404.html"); return false; } } return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { } @Override public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception { } }
拦截器配置,核心是在继承WebMvcConfigurerAdapter类里重写addInterceptors方法
@Configuration public class HomeOpenHandlerConfigration extends WebMvcConfigurerAdapter { @Autowired @Qualifier("errorPageInterceptor") private HandlerInterceptor errorPageInterceptor; @Override public void addInterceptors(InterceptorRegistry registry) { // 多个拦截器组成一个拦截器链 // addPathPatterns 用于添加拦截规则 // excludePathPatterns 用户排除拦截 registry.addInterceptor(errorPageInterceptor).addPathPatterns("/**"); super.addInterceptors(registry); } }
如此就可实现拦截器。
@Component public class SessionListener implements HttpSessionListener { @Autowired private RedisTemplate redisTemplate; @Override public void sessionCreated(HttpSessionEvent event) { System.out.println("创建session"); } @Override public void sessionDestroyed(HttpSessionEvent event) { System.out.println("销毁session"); } }
监听器配置,核心是是在继承WebMvcConfigurerAdapter类里注入Listener对应的Bean
public class WebApplicationConfig extends WebMvcConfigurerAdapter { @Bean public ServletListenerRegistrationBean<SessionListener> SessionListenerBean() { return new ServletListenerRegistrationBean<SessionListener>(new SessionListener()); } }
Spring boot配置拦截器(Interceptor)和监听器(Listener)
原文:https://www.cnblogs.com/Lin-Ff2394/p/11766070.html