SpringBoot的拦截器只能拦截流经DispatcherServlet的请求,对于自定义的Servlet无法进行拦截。

SpringMVC中的拦截器有两种:HandlerInterceptor和WebMvcInterceptor。这两个接口都定义了请求之前、请求之中、请求之后三个函数,以HandlerInterceptor为例进行说明:

  • public boolean preHandle(HttpServletRequest req, HttpServletResponse httpServletResponse, Object o)
  • public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView)
  • public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e)

HandlerInterceptor的函数返回值都是boolean,一旦返回false,就不再处理这个请求,所以它真正具有拦截功能。而WebMvcInterceptor作用只是进行初始化,它的三个函数都是void类型的。

要想使用HandlerInterceptor需要如下几个步骤:

实现HandlerInterceptor接口

public class MyInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest req, HttpServletResponse httpServletResponse, Object o) throws Exception {
} @Override
public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception { } @Override
public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception { }
}

添加Configureation

过去可以用xml配置,现在更倾向于用java代码配置

@Configuration
public class MyWebMvcConfigurer extends WebMvcConfigurerAdapter {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new MyInterceptor()).addPathPatterns("/**");
super.addInterceptors(registry);
}
}

最新文章

  1. [LeetCode] Maximum Size Subarray Sum Equals k 最大子数组之和为k
  2. Web API 和 WCF 的比较
  3. 待整理 - BAT文件编写
  4. HDOJ(HDU) 2156 分数矩阵(嗯、求和)
  5. Android FM学习中的模块 FM启动过程
  6. 优化viewHolder
  7. jQuery基本过滤选择器
  8. 依赖注入[5]: 创建一个简易版的DI框架[下篇]
  9. ArcGis Python脚本——批量删除字段
  10. Flash片头loading与MovieClipLoader
  11. 2018.10.01 NOIP模拟 卡牌游戏(贪心)
  12. Ogre学习教程:Ogre1.8.1+VS2010环境配置(转)
  13. Android开发eclipse错误汇总
  14. 【Linux】关于Linux的部分细节与配置文件
  15. Spring @Async的异常处理
  16. Delphi XE8中Delphi和JAVA数据类型对应关系!
  17. ajax异步请求问题
  18. 关于LCD的duty与bias
  19. C++ Programming with TDD之二:CppUTest单元测试
  20. Openfire:解决乱码问题

热门文章

  1. springboot 注入 restTemplate
  2. StatefulSet: Kubernetes 中对有状态应用的运行和伸缩
  3. Spring9 : Autowire(自动装配)机制
  4. mac下virtualbox安装win7系统
  5. 解决:HTTP 错误 404.2 - Not Found. 由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面
  6. 第十四章 springboot + profile(不同环境读取不同配置)
  7. Linux学习笔记之初级篇
  8. MFC COM调用时出现E_OUTOFMEMORY错误
  9. 微信小程序app配置指南
  10. 关于oracle redo log buffer 你所不知道的东西