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("/**");//设置拦截器拦截的请求路径( /** 表示拦截所有请求)
          }
      }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值