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);
}
}

  

最新文章

  1. .NET Core 2016 回顾
  2. siteserver cms选择栏目搜索无效
  3. Architectural Model - SNMP Tutorial
  4. 4412开发板Android教程——Android平台简介
  5. AutoCAD.NET二次开发:创建自定义菜单(AcCui)
  6. System Operations on AWS - Lab 1W - Creating EC2 (Windows)
  7. OAuth2.0 错误码
  8. IOS开发笔记 - 基于wsdl2objc调用webservice
  9. Android实现多条Toast快速显示(强制中止上一条Toast的显示)
  10. java5后的并发池
  11. nginx.conf 中php-ftp配置
  12. 使用 RAII 完成线程等待
  13. hibernate08--OpenSessionInView
  14. Django中模型层中ORM的多表操作
  15. Eclipse添加Junit测试
  16. OpenGL透明与混色效果
  17. 概率法计算PI
  18. POJ3009:Curling 2.0(dfs)
  19. CommonJS初识
  20. shell基础篇(四)算术运算

热门文章

  1. learning java Date类
  2. 像素迷踪,当Unity的Frame Debugger力不从心时
  3. 备用shell管理方案之butterfly+nginx+https
  4. java学习笔记(2)注释、public lcass、class、标识符、字面值、变量
  5. P1378 油滴扩展——搜索小记
  6. 怎么判断是qq浏览器还是uc浏览器?
  7. java代码拼写sql
  8. 转 python多个命令同时执行.sh
  9. openstack kvm cannot set up guest memory 'pc.ram': Cannot allocate memory
  10. gogs 实现webhook钩子(php接口形式)