Interceptor

  • 什么是拦截器?
    • 一种动态拦截方法调用的机制,类似于过滤器
    • 拦截器是Spring框架中提供的,用来动态拦截控制器方法的执行
  • 拦截器的作用:
    • 拦截请求,在指定方法调用前后,根据业务需要执行预先设定的代码
  • 拦截器使用步骤:
    • 定义拦截器
    • 注册配置拦截器
  • 自定义拦截器:实现HandlerInterceptor接口,并重写其所有方法
    • //自定义拦截器
      @Component
      public class LoginCheckInterceptor implements HandlerInterceptor {
          //目标资源方法执行前执行。 返回true:放行    返回false:不放行
          @Override
          public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
              System.out.println("preHandle .... ");
              
              return true; //true表示放行
          }
      
          //目标资源方法执行后执行
          @Override
          public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
              System.out.println("postHandle ... ");
          }
      
          //视图渲染完毕后执行,最后执行
          @Override
          public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
              System.out.println("afterCompletion .... ");
          }
      }
    • 注意:

      • preHandle方法:目标资源方法执行前执行。返回true:放行;返回false:不放行

      • postHandle方法:目标资源方法执行后执行

      • afterCompletion方法:视图渲染完毕后执行,最后执行。

  • 自定义配置拦截器:

    • 实现WebMvcConfigurer接口,并重写AddIntereptores方法

    • @Configuration  
      public class WebConfig implements WebMvcConfigurer {
      
          //自定义的拦截器对象
          @Autowired
          private LoginCheckInterceptor loginCheckInterceptor;
      
          
          @Override
          public void addInterceptors(InterceptorRegistry registry) {
             //注册自定义拦截器对象
              registry.addInterceptor(loginCheckInterceptor).addPathPatterns("/**");//设置拦截器拦截的请求路径( /** 表示拦截所有请求)
          }
      }

你可能感兴趣的:(java,springboot)