SpringBoot使用拦截器
2024-10-19 17:33:23
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);
}
}
最新文章
- [LeetCode] Maximum Size Subarray Sum Equals k 最大子数组之和为k
- Web API 和 WCF 的比较
- 待整理 - BAT文件编写
- HDOJ(HDU) 2156 分数矩阵(嗯、求和)
- Android FM学习中的模块 FM启动过程
- 优化viewHolder
- jQuery基本过滤选择器
- 依赖注入[5]: 创建一个简易版的DI框架[下篇]
- ArcGis Python脚本——批量删除字段
- Flash片头loading与MovieClipLoader
- 2018.10.01 NOIP模拟 卡牌游戏(贪心)
- Ogre学习教程:Ogre1.8.1+VS2010环境配置(转)
- Android开发eclipse错误汇总
- 【Linux】关于Linux的部分细节与配置文件
- Spring @Async的异常处理
- Delphi XE8中Delphi和JAVA数据类型对应关系!
- ajax异步请求问题
- 关于LCD的duty与bias
- C++ Programming with TDD之二:CppUTest单元测试
- Openfire:解决乱码问题
热门文章
- springboot 注入 restTemplate
- StatefulSet: Kubernetes 中对有状态应用的运行和伸缩
- Spring9 : Autowire(自动装配)机制
- mac下virtualbox安装win7系统
- 解决:HTTP 错误 404.2 - Not Found. 由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面
- 第十四章 springboot + profile(不同环境读取不同配置)
- Linux学习笔记之初级篇
- MFC COM调用时出现E_OUTOFMEMORY错误
- 微信小程序app配置指南
- 关于oracle redo log buffer 你所不知道的东西