zoukankan      html  css  js  c++  java
  • SpringBoot学习笔记:自定义拦截器

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

    快速开始 

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

    • 在请求发送到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);
       }
    }
    

      

  • 相关阅读:
    构建单页面应用
    chrome进入控制台时自动进入断点模式的解决方法
    git安装--linux下的安装
    express响应前端ajax请求
    nodejs链接mongodb数据库
    Redis的Java客户端Jedis的八种调用方式(事务、管道、分布式)介绍
    Nginx中如何限制某个IP同一时间段的访问次数
    nodejs && apidoc
    apidoc
    android sdk
  • 原文地址:https://www.cnblogs.com/MrSaver/p/11201867.html
Copyright © 2011-2022 走看看