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

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

快速开始 

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

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

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

建立拦截器

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

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

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

  • afterCompletion() :用于在请求响应所有结束后执行以后的操做。blog

  一个自定义的拦截器代码以下:接口

@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,以下所示io

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

   @Override
   public void addInterceptors(InterceptorRegistry registry) {
      registry.addInterceptor(productServiceInterceptor);
   }
}
相关文章
相关标签/搜索