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

springboot整合拦截器

1.首先创建拦截器类:


package com.example.interceptor;import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;@Slf4j
@Component
public class RequestInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {String requestURI = request.getRequestURI();String method = request.getMethod();log.info("请求开始,URI: {}, Method: {}", requestURI, method);// 获取请求头中的token(如果有)String token = request.getHeader("Authorization");if (token != null) {log.info("Token: {}", token);}// 返回true表示继续执行,返回false表示中断请求return true;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {log.info("请求处理完成");}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {log.info("请求完全结束");if (ex != null) {log.error("请求过程中发生错误:", ex);}}
}

2. 创建拦截器配置类:

package com.example.config;import com.example.interceptor.RequestInterceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configuration
public class WebMvcConfig implements WebMvcConfigurer {private final RequestInterceptor requestInterceptor;public WebMvcConfig(RequestInterceptor requestInterceptor) {this.requestInterceptor = requestInterceptor;}@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(requestInterceptor).addPathPatterns("/**")         // 拦截所有请求.excludePathPatterns(           // 排除不需要拦截的路径"/swagger-ui/**",           // swagger"/v3/api-docs/**",          // swagger"/error",                   // 错误页面"/static/**",               // 静态资源"/*.ico"                    // 图标文件);}
}

3.创建一个测试控制器:

package com.example.controller;import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@Slf4j
@RestController
@RequestMapping("/api")
public class TestController {@GetMapping("/test")public String test() {log.info("测试接口被调用");return "Hello from test endpoint!";}
}

http://www.lryc.cn/news/518891.html

相关文章:

  • B树与B+树:数据库索引的秘密武器
  • Lua语言中常用的字符串操作函数
  • HOW - Form 表单确认校验两种模式(以 Modal 场景为例)
  • LabVIEW部署Web服务
  • 进程件通信——网络通信——TCP
  • 【数据库】三、SQL语言
  • Python对象的序列化和反序列化工具:Joblib与Pickle
  • Spring Boot3 配合ProxySQL实现对 MySQL 主从同步的读写分离和负载均衡
  • 量子计算遇上人工智能:突破算力瓶颈的关键?
  • 【Unity插件】解决移动端UI安全区问题 - Safe Area Helper
  • JSON.stringify 实现深度克隆的缺陷
  • 深度解析如何使用Linux中的git操作
  • el-table 合并单元格
  • Redis 三大问题:缓存穿透、缓存击穿、缓存雪崩
  • 常用字符串处理函数
  • Pathview包:整合表达谱数据可视化KEGG通路
  • seleniun 自动化程序,python编程 我监控 chrome debug数据后 ,怎么获取控制台的信息呢
  • SQL中的数据库对象
  • DeepSeek:性能强劲的开源模型
  • 医疗可视化大屏 UI 设计新风向
  • 从企业级 RAG 到 AI Assistant , Elasticsearch AI 搜索技术实践
  • TypeScript语言的并发编程
  • benchANT 性能榜单技术解读 Part 1:写入吞吐
  • 虚拟机防火墙管理
  • Nginx反向代理请求头有下划线_导致丢失问题处理
  • 【STM32+CubeMX】 新建一个工程(STM32F407)
  • 机器人避障不再“智障”:HEIGHT——拥挤复杂环境下机器人导航的新架构
  • H2数据库在单元测试中的应用
  • 部署HugeGraph
  • 2025年第三届“华数杯”国际赛A题解题思路与代码(Matlab版)