Spring MVC中自定义拦截器的实例讲解
发布时间 - 2026-01-11 02:55:05 点击率:次1. 引言

拦截器(Interceptor)实现对每一个请求处理前后进行相关的业务处理,类似于Servlet的Filter。
我们可以让普通的Bean实现HandlerIntercpetor接口或继承HandlerInterceptorAdapter类来实现自定义拦截器。
通过重写WebMvcConfigurerAdapter的addIntercetors方法来注册一个计算每一次请求的处理时间的拦截器。
2. 自定义拦截器的实现
2.1 定义拦截器
新建LogInterceptor类,并继承HandlerInterceptorAdapter类,重写preHandle、postHandle这两个方法。
1.preHandle方法表示在请求发生前执行,内容如下:
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
request.setAttribute("begin", System.currentTimeMillis());
return true;
}
2.postHandle方法表示在请求完成后执行,内容如下:
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
long begin = (long)request.getAttribute("begin");
request.removeAttribute("begin");
long end = System.currentTimeMillis();
System.out.println("本次请求消耗时间为:"+new Long(end-begin)+"ms");
}
2.2 配置拦截器
2.2.1 使用xml配置
1.在配置文件中添加支持MVC的schema
xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation=" http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"
2.使用mvc:interceptors标签声明拦截器
<mvc:interceptors>
<!-- 使用bean定义一个Interceptor,直接定义在mvc:interceptors根下面的Interceptor将拦截所有的请求 -->
<bean class="org.aming.demo.springmvc.interceptor.LogInterceptor"/>
<mvc:interceptor>
<mvc:mapping path="${指定的URL}"/>
<!-- 定义在mvc:interceptor下面的表示是对特定的请求才进行拦截的 -->
<bean class="${其他拦截器}"/>
</mvc:interceptor>
</mvc:interceptors>
说明:没有测试过!!!
2.2.2 使用JavaConfig配置
3.配置拦截器的Bean
@Bean
public LogInterceptor logInterceptor() {
return new LogInterceptor();
}
4.重写addInterceptors方法,注册拦截器
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(logInterceptor());
}
说明:配置类需要继承WebMvcConfigurerAdapter类
3. 运行结果
以上这篇Spring MVC中自定义拦截器的实例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
# 自定义拦截器
# SpringMVC自定义拦截器登录检测功能的实现代码
# SpringMvc自定义拦截器(注解)代码实例
# SpringMVC自定义拦截器实现过程详解
# Java SpringMVC实现自定义拦截器
# 拦截器
# 自定义
# 重写
# 给大家
# 我们可以
# 这两个
# 希望能
# 时间为
# 这篇
# 来实现
# 类似于
# 方法来
# 生前
# 小编
# 配置文件
# 大家多多
# 完成后
# xhtml
# public
# boolean
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
JavaScript如何操作视频_媒体API怎么控制播放
DeepSeek是免费使用的吗 DeepSeek收费模式与Pro版本功能详解
如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?
Python文件操作最佳实践_稳定性说明【指导】
公司网站制作需要多少钱,找人做公司网站需要多少钱?
音响网站制作视频教程,隆霸音响官方网站?
Android自定义listview布局实现上拉加载下拉刷新功能
原生JS实现图片轮播切换效果
想要更高端的建设网站,这些原则一定要坚持!
如何快速搭建二级域名独立网站?
🚀拖拽式CMS建站能否实现高效与个性化并存?
如何正确下载安装西数主机建站助手?
linux top下的 minerd 木马清除方法
谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程
JavaScript如何实现倒计时_时间函数如何精确控制
Midjourney怎么调整光影效果_Midjourney光影调整方法【指南】
网站制作免费,什么网站能看正片电影?
什么是javascript作用域_全局和局部作用域有什么区别?
b2c电商网站制作流程,b2c水平综合的电商平台?
HTML 中动态设置元素 name 属性的正确语法详解
如何撰写建站申请书?关键要点有哪些?
微信小程序 HTTPS报错整理常见问题及解决方案
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
深圳网站制作培训,深圳哪些招聘网站比较好?
Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道
Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置
Android中AutoCompleteTextView自动提示
微信小程序 input输入框控件详解及实例(多种示例)
微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】
HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】
如何彻底删除建站之星生成的Banner?
网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?
标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南
Python文本处理实践_日志清洗解析【指导】
html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】
如何在IIS中配置站点IP、端口及主机头?
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程
Laravel distinct去重查询_Laravel Eloquent去重方法
如何在IIS中新建站点并解决端口绑定冲突?
三星网站视频制作教程下载,三星w23网页如何全屏?
如何在香港服务器上快速搭建免备案网站?
网易LOFTER官网链接 老福特网页版登录地址
简历在线制作网站免费版,如何创建个人简历?
如何在阿里云ECS服务器部署织梦CMS网站?
Angular 表单中正确绑定输入值以确保提交与验证正常工作
高配服务器限时抢购:企业级配置与回收服务一站式优惠方案
Laravel如何创建自定义中间件?(Middleware代码示例)
北京网站制作公司哪家好一点,北京租房网站有哪些?
用yum安装MySQLdb模块的步骤方法

