首页/新闻资讯/正文详情

Java项目拦截器实现

发布时间:2026/9/26 15:58:11 来源:云帆数科 栏目:资讯中心
Java项目拦截器实现
目录一、为什么要使用拦截器​编辑二、拦截器的实现1.首先我们创建一个类 命名为 LoginInterceptor 这个类要实现 HandlerInterceptor 接口。2.然后我们想要在方法前和方法后都可以只要在你定义的 拦截器类里面实现好下面的三个方法中的其中一个或多个就可以。我要在其他接口调用的之前校验是否登录过。所以我实现的是preHandler 方法3.实现好 LoginInterceptor 类4.对拦截器进行使用配置类 AppConfig 需要实现 WebMvcConfigurer 接口5.实现WebMvcConfigurer接口里面的 addInterceptors 方法6.重写addInterceptors 的代码7.完成拦截器的添加拦截器实现拦截器配置一、为什么要使用拦截器在java项目中我们可以自动实现拦截器的实现我们可以选择开放或不开放某些接口这个时候我们就可以写一个拦截器让调用我们接口的时候先通过拦截器看看拦截器是否放行再去调用我们的接口和下图类似二、拦截器的实现1.首先我们创建一个类 命名为 LoginInterceptor 这个类要实现 HandlerInterceptor 接口。Slf4j Component public class LoginInterceptor implements HandlerInterceptor { }2.然后我们想要在方法前和方法后都可以只要在你定义的 拦截器类里面实现好下面的三个方法中的其中一个或多个就可以。我要在其他接口调用的之前校验是否登录过。所以我实现的是preHandler 方法public interface HandlerInterceptor { default boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { return true; } default void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, Nullable ModelAndView modelAndView) throws Exception { } default void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Nullable Exception ex) throws Exception { } }3.实现好 LoginInterceptor 类Slf4j Component public class LoginInterceptor implements HandlerInterceptor { /** * 预处理业务请求之前调用 * param request current HTTP request * param response current HTTP response * param handler chosen handler to execute, for type and/or instance evaluation * return */ Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { // 获取请求头 String token request.getHeader(user_token); log.info(获取 token : {}, token); log.info(获取路径: {}, request.getRequestURL()); // 令牌解析 Claims claims JWTUtil.parseJWT(token); if(null claims) { log.error(解析JWT 令牌失败); response.setStatus(401); return false; } log.info(解析JWT令牌 成功 放行); return true; } }4.对拦截器进行使用配置类 AppConfig 需要实现 WebMvcConfigurer 接口Configuration public class AppConfig implements WebMvcConfigurer { }5.实现WebMvcConfigurer接口里面的 addInterceptors 方法6.重写addInterceptors 的代码把自己的拦截器给注入到该类里面然后要把不进入拦截器的网页资源给写出来。把你想要拦截的资源使用 InterceptorRegistry 类提供的 addInterceptor 方法添加进去。registry.addInterceptor(loginInterceptor)添加拦截器 .addPathPatterns(/**)添加拦截的资源路径 .excludePathPatterns(exclude)去除拦截的资源路径import com.example.lotterysystem.common.interceptor.LoginInterceptor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.format.FormatterRegistry; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import java.util.Arrays; import java.util.List; Configuration public class AppConfig implements WebMvcConfigurer { Autowired LoginInterceptor loginInterceptor; private final ListString exclude Arrays.asList( /**/*.html, /css/**, /js/**, /pic/**, /*.jpg, /*.png, /favicon.ico, /**/login, /register, /verification-code/send ); Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(loginInterceptor) .addPathPatterns(/**) .excludePathPatterns(exclude); } }7.完成拦截器的添加配置类和拦截器类给书写完毕就完成了拦截器的实现拦截器实现package com.example.lotterysystem.common.interceptor; import com.example.lotterysystem.common.utils.JWTUtil; import io.jsonwebtoken.Claims; 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; Slf4j Component public class LoginInterceptor implements HandlerInterceptor { /** * 预处理业务请求之前调用 * param request current HTTP request * param response current HTTP response * param handler chosen handler to execute, for type and/or instance evaluation * return */ Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { // 获取请求头 String token request.getHeader(user_token); log.info(获取 token : {}, token); log.info(获取路径: {}, request.getRequestURL()); // 令牌解析 Claims claims JWTUtil.parseJWT(token); if(null claims) { log.error(解析JWT 令牌失败); response.setStatus(401); return false; } log.info(解析JWT令牌 成功 放行); return true; } }拦截器配置package com.example.lotterysystem.common.config; import com.example.lotterysystem.common.interceptor.LoginInterceptor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.format.FormatterRegistry; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import java.util.Arrays; import java.util.List; Configuration public class AppConfig implements WebMvcConfigurer { Autowired LoginInterceptor loginInterceptor; private final ListString exclude Arrays.asList( /**/*.html, /css/**, /js/**, /pic/**, /*.jpg, /*.png, /favicon.ico, /**/login, /register, /verification-code/send, /acticity-detail/find ); Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(loginInterceptor) .addPathPatterns(/**) .excludePathPatterns(exclude); } }

相关推荐

电感位置传感器选型:认证、接口、温区才是分水岭
电感位置传感器选型:认证、接口、温区才是分水岭

1. 拆解一台电感位置传感器,我到底在看什么电感位置传感器这几年在工业、汽车、机器人领域的存在感越来越强。很多人第一次接触这类器件,注意力全放在“精度”上——分辨率多少位、线性度多少、重复精度几个微米。但真正做过量产项目的人都知道&#xff… · 2026/9/26 15:58:11

交互式机器学习教学沙盒:拖动参数理解算法原理
交互式机器学习教学沙盒:拖动参数理解算法原理

简介:这是一套面向机器学习初学者与教学者的前端可视化教学工具,聚焦算法原理理解与交互式实践,特别适用于高校课程演示、自学入门及原理讲解场景。资源基于TensorFlow.js实现浏览器端模型训练与推理,结合D3.js构建动态数据图表与… · 2026/9/26 15:58:05

Coder云开发环境实战:从Terraform模板到GPU配额与AI Agent沙箱
Coder云开发环境实战:从Terraform模板到GPU配额与AI Agent沙箱

1. 为什么我会把 Coder 当成本命开发环境1.1 从 code-server 到 Coder:一个项目两条产品线我第一次接触这个项目,还是被 code-server 圈粉的时候——在浏览器里跑一个完整的 VS Code,出差时拿台老笔记本就能接着写代码。后来才发现 code-serv… · 2026/9/26 15:58:05

Windows上从零安装Claude Code的完整实操指南
Windows上从零安装Claude Code的完整实操指南

如果你最近在技术社区里逛,应该没少刷到 Claude Code 这个词。它本质上是 Anthropic 官方推出的命令行 AI 编程助手,能直接在终端里读你的项目代码、改文件、执行命令,就像旁边多了一个随时待命的结对工程师。但绕了一圈你会发现,… · 2026/9/26 17:22:32

SpringBoot电商平台课设实战:从建表到下单的完整链路与避坑指南
SpringBoot电商平台课设实战:从建表到下单的完整链路与避坑指南

简介:这份资源是面向计算机专业学生与Java开发初学者的电商平台毕业设计完整资料,包含设计文档与项目源码,适合需要完成课程设计、毕业设计或希望系统学习Spring Boot企业级开发的人群。资源包共1个doc文件,约4.5MB,文… · 2026/9/26 17:22:32

Django部署报错SQLite版本过低?升级SQLite完整指南
Django部署报错SQLite版本过低?升级SQLite完整指南

自己在服务器上部署Django项目时,撞上过一条很经典的报错,翻译过来大致是:SQLite 3.8.3 or later is required (found 3.7.17)。当时我还在纳闷,本地开发环境跑得好好的,怎么一到线上就翻车。查了一圈才发现&#xff0… · 2026/9/26 17:22:32

HTML5响应式网站设计与实现:从论文正文到工程方案
HTML5响应式网站设计与实现:从论文正文到工程方案

简介:这份资源是一篇完整的毕业论文正文,主题为基于HTML5的响应式网站设计与实现,面向计算机相关专业学生、前端初学者及需要撰写同类课题论文的读者。论文围绕HTML5、CSS3与JavaScript技术体系展开,系统讲解了流式布局、媒体查询… · 2026/9/26 17:22:32

SpringBoot电商平台实战:从建表到下单链路,避开超卖与幂等坑
SpringBoot电商平台实战:从建表到下单链路,避开超卖与幂等坑

简介:这份资源是面向计算机专业学生与Java Web开发初学者的电商平台毕业设计完整资料,包含设计文档与项目源码,可用于课程设计、毕业设计参考或Spring Boot入门实战。压缩包内共1个doc文件,约4.5MB,文档涵盖绪论、开发… · 2026/9/26 17:22:32

DesignDoll实战:3分钟摆好人体透视参考,告别画崩
DesignDoll实战:3分钟摆好人体透视参考,告别画崩

画人体透视画到崩溃的经历,我猜每个画手都有过。明明临摹了一堆教程,一画仰视,腿短了;一画俯视,头大了;想画个回头看向镜头的姿势,肩膀死活对不上。后来我接触到了DesignDoll,一开始… · 2026/9/26 17:22:24

数据库课后习题答案别硬背:当测试用例集刷,效率翻倍
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍

简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21

OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40

向下兼容与向上兼容:接口设计中的兼容性策略与工程实践
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践

一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码