SpringBoot学习笔记(17):自定义拦截器

SpringBoot学习笔记(17):自定义拦截器

快速开始 

  拦截器类似于过滤器,但是拦截器提供更精细的的控制能力,它可以在一个请求过程中的两个节点进行拦截:

  • 在请求发送到Controller之前
  • 在响应发送到Client之前

  例如,你可以使用拦截器在将请求发送到控制器之前添加请求头,并在将响应发送到客户端之前添加响应标头。

创建拦截器

  创建一个拦截器,需要实现HandlerInterceptor接口,他有三个方法来完成拦截

  • preHandle(): 用于在将请求发送到控制器之前执行操作。此方法应返回true以将响应返回给客户端

  • postHandle() :用于在将响应结果发送到客户端之前执行操作。

  • afterCompletion() :用于在请求响应全部结束后执行之后的操作。

  一个自定义的拦截器代码如下:

@Component
public class ProductServiceInterceptor implements HandlerInterceptor {
   @Override
   public boolean preHandle(
      HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
      
      return true;
   }
   @Override
   public void postHandle(
      HttpServletRequest request, HttpServletResponse response, Object handler, 
      ModelAndView modelAndView) throws Exception {}
   
   @Override
   public void afterCompletion(HttpServletRequest request, HttpServletResponse response, 
      Object handler, Exception exception) throws Exception {}
}

注册拦截器

  拦截器完成后,必须使用WebMvcConfigurerAdapter向InterceptorRegistry注册此Interceptor,如下所示

@Component
public class ProductServiceInterceptorAppConfig extends WebMvcConfigurerAdapter {
   @Autowired
   ProductServiceInterceptor productServiceInterceptor;

   @Override
   public void addInterceptors(InterceptorRegistry registry) {
      registry.addInterceptor(productServiceInterceptor);
   }
}

  

猜你喜欢

转载自www.cnblogs.com/MrSaver/p/11201867.html