> 文章列表 > Interceptor

Interceptor

Interceptor

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