新闻详情

新闻详情

首页 / 资讯中心 / 详情

Java项目拦截器实现

发布时间:2026/9/26 15:58:16来源:尧图网络
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); } }
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

验证码识别脚本实战:OpenCV预处理+CNN训练全流程解析 2026/9/26 16:36:42

验证码识别脚本实战:OpenCV预处理+CNN训练全流程解析

简介:面向计算机相关专业学习者与机器学习初学者的实战项目,基于机器学习算法实现验证码识别,包含可直接运行测试的完整源码与说明文档,适用于课程设计、毕业设计或企业初期项目演示,具有较高的学习借鉴价值。压缩包共…

阅读更多 →
基于自适应关键帧的微表情识别算法实现与避坑指南 2026/9/26 16:36:42

基于自适应关键帧的微表情识别算法实现与避坑指南

简介:这份资源面向情感计算与计算机视觉方向的研究者、学生及开发者,提供一套基于自适应关键帧的视频微表情识别算法完整实现,用于解决微表情持续时间短、识别难度大、计算开销高等问题。压缩包共14个文件,约404KB,以6…

阅读更多 →
科研成果申报管理系统源码:从跑通到改造的完整指南 2026/9/26 16:36:42

科研成果申报管理系统源码:从跑通到改造的完整指南

简介:这份科研成果申报管理系统源码面向计算机专业学生及需要完成毕业设计的开发者,提供一套覆盖项目申报、评审管理、进度跟踪与文档管理等环节的完整Web应用实现,帮助读者理解科研管理业务的数字化流程与软件工程落地方式。压缩包共155个文…

阅读更多 →
基于Zi-Pi指标的微生物网络关键物种识别:R语言实现与社区分析指南 2026/9/26 16:36:42

基于Zi-Pi指标的微生物网络关键物种识别:R语言实现与社区分析指南

简介:面向微生物网络分析中节点模块内连通度与模块间连通度的量化需求,这份资源提供了基于R语言的完整计算方案,适用于生态学、生物信息学等领域研究者。压缩包内共2个文件,包含1个R脚本和1个graphml网络文件,脚本可直…

阅读更多 →
宠物管理系统全栈教学闭环:原型→数据库→源码实战 2026/9/26 16:36:42

宠物管理系统全栈教学闭环:原型→数据库→源码实战

简介:本资源是一套完整的宠物管理系统开发学习套件,面向Java或Web全栈初学者及课程设计学生,聚焦宠物服务类信息化管理场景,涵盖需求分析、界面交互与数据持久化全流程实践。压缩包共4个文件,含2个ZIP(分别…

阅读更多 →
PyTorch Tensor布局与拷贝机制:内存视角的性能优化指南 2026/9/26 16:36:35

PyTorch Tensor布局与拷贝机制:内存视角的性能优化指南

1. 这节课不是讲“怎么写代码”,而是讲“内存里到底发生了什么”你有没有遇到过这样的情况:模型训练突然卡在某个 batch,GPU 显存占用飙升但计算几乎停滞;或者用.clone()后发现修改新 tensor 竟然影响了原始数据;又或者…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉