当前位置: 首页 > news >正文

springboot中添加拦截器

记录下在项目中添加拦截器的使用demo

1、添加拦截类

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;@Slf4j
public class RequestTimeInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {// 记录请求开始时间long startTime = System.currentTimeMillis();request.setAttribute("startTime", startTime);// 打印请求基本信息log.info("===== 请求开始 =====");log.info("请求URL: {}", request.getRequestURL());log.info("请求方法: {}", request.getMethod());log.info("客户端IP: {}", request.getRemoteAddr());// 返回true表示放行,false直接拦截(比如登录校验失败可返回false)return true;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {log.info("===== Controller处理完成 =====");}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {long startTime = (long) request.getAttribute("startTime");long endTime = System.currentTimeMillis();long costTime = endTime - startTime;// 打印结果log.info("响应状态码: {}", response.getStatus());log.info("接口耗时: {}ms", costTime);if (ex != null) {log.error("请求异常: {}", ex.getMessage(), ex);}log.info("===== 请求结束 =====\n");}
}

2、添加拦截器配置

@Configuration
public class WebMvcInterceptorConfig implements WebMvcConfigurer {@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new RequestTimeInterceptor()) // 注册自定义拦截器.addPathPatterns("/**") // 拦截所有路径(/** 匹配所有层级,/* 只匹配一级).excludePathPatterns( // 排除不需要拦截的路径"/login", // 登录接口"/static/**", // 静态资源"/error" // 错误页面
                );}
}

3、请求接口

image

 4、控制台打印输出

image

 

image

 

通常来说,拦截器我们可以拿来做一些校验、日志记录等,可根据自己的需要灵活添加

 

http://www.jsqmd.com/news/431089/

相关文章:

  • 2026年商业空间香氛香薰品牌排名:打造沉浸式嗅觉体验 - 包罗万闻
  • 2026年天津阻燃电缆生产厂家推荐:涵阻燃、阻燃B1级、矿物质防火、柔性防火等 - 品牌2026
  • 大模型学习入门:收藏这份 Agent 应用实战指南,小白也能快速上手!
  • 2026年比较好的乳猪奶粉饲料/仔猪饲料源头工厂推荐 - 品牌宣传支持者
  • 工作装定制企业这么多,更上制服在常州的口碑排第几? - 工业品牌热点
  • 2026年3月成都衣柜/沙发/餐桌椅/床垫/定制厂家市场竞争格局深度分析报告 - 2026年企业推荐榜
  • 2026年3月井盖厂家推荐,精准检测与稳定性能深度解析 - 品牌鉴赏师
  • 京东e卡回收秒到账操作步骤 - 京回收小程序
  • 【mysql】linux离线安装mysql客户端
  • 2026 教培机构收学费工具测评:小金商户助手登顶,多场景适配不踩坑 - Echo8
  • 2026年评价高的湖北应急抢险车/湖北移动抢险车销售厂家 - 品牌宣传支持者
  • 基于SpringBoot的养老院管理系统设计与实现
  • 2026年石油石化电力电缆生产厂家推荐:含中低压、低压、中压等电缆生产厂家 - 品牌2026
  • 【实时Linux工业PLC解决方案系列】第三篇 - 实时Linux内核优化与PLC实时性基础保障
  • 如何用PhotoGIMP解决专业图像编辑的成本与学习门槛问题?
  • 架构实战:铁路核心调度系统异构数据库迁移的“毫秒级”守卫战
  • 2026年3月无缝钢管厂家推荐,精准检测与稳定性能深度解析 - 品牌鉴赏师
  • 吐血推荐!降AI率工具 千笔·降AI率助手 VS 万方智搜AI 自考必备
  • 3大技术突破:REFramework如何重塑RE引擎游戏体验
  • 2026年特种、计算机、轨道交通、石油石化、矿山煤矿等电缆国内一线品牌推荐 - 品牌2026
  • 【实时Linux工业PLC解决方案系列】第四篇 - 实时Linux PLC runtime核心模块开发
  • 2026年天津消防电缆生产厂家推荐:耐火、防火、阻燃、阻燃B1级等厂家精选 - 品牌2026
  • 收藏!未来5年程序员最优发展方向,AI大模型必占C位(小白必看)
  • 【实时Linux工业PLC解决方案系列】第五篇 - 实时Linux PLC数字量I/O采集与输出优化
  • 基于SpringBoot流浪动物管理系统设计和实现
  • 一遍搞定全流程!标杆级的AI论文网站 —— 千笔·专业学术智能体
  • 7个维度掌握视频下载工具:从基础操作到高级应用
  • 2026年3月四川制氮机、制氧机、空压机厂家哪家好 - 2026年企业推荐榜
  • Java基于SpringBoot的教师教学培训管理系统的设计与实现
  • 2026年控制电缆生产厂家推荐:塑料绝缘、特种控制、计算机、太阳能光伏等电缆厂家精选 - 品牌2026