编写拦截器代码

  1. public class MyInterceptor1 implements HandlerInterceptor {
  2. @Override
  3. public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
  4. throws Exception {
  5. System.out.println(">>>MyInterceptor1>>>>>>>在请求处理之前进行调用(Controller方法调用之前)");
  6. return true;// 只有返回true才会继续向下执行,返回false取消当前请求
  7. }
  8. @Override
  9. public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
  10. ModelAndView modelAndView) throws Exception {
  11. System.out.println(">>>MyInterceptor1>>>>>>>请求处理之后进行调用,但是在视图被渲染之前(Controller方法调用之后)");
  12. }
  13. @Override
  14. public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
  15. throws Exception {
  16. System.out.println(">>>MyInterceptor1>>>>>>>在整个请求结束之后被调用,也就是在DispatcherServlet 渲染了对应的视图之后执行(主要是用于进行资源清理工作)");
  17. }
  18. }

注册拦截器

  1. @Configuration
  2. public class MyWebAppConfigurer
  3. extends WebMvcConfigurerAdapter {
  4. @Override
  5. public void addInterceptors(InterceptorRegistry registry) {
  6. // 多个拦截器组成一个拦截器链
  7. // addPathPatterns 用于添加拦截规则
  8. // excludePathPatterns 用户排除拦截
  9. registry.addInterceptor(new Minterceptor()).addPathPatterns("/**");
  10. super.addInterceptors(registry);
  11. }
  12. }