苏州网站备案查询,东圃那里有做网站设计的,网站菜单样式,上海设计网站建设#x1f49d;#x1f49d;#x1f49d;欢迎来到我的博客#xff0c;很高兴能够在这里和您见面#xff01;希望您在这里可以感受到一份轻松愉快的氛围#xff0c;不仅可以获得有趣的内容和知识#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学… 欢迎来到我的博客很高兴能够在这里和您见面希望您在这里可以感受到一份轻松愉快的氛围不仅可以获得有趣的内容和知识也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老导航 檀越剑指大厂系列:全面总结 java 核心技术,jvm,并发编程 redis,kafka,Spring,微服务等常用开发工具系列:常用的开发工具,IDEA,Mac,Alfred,Git,typora 等数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等新空间代码工作室:提供各种软件服务,承接各种毕业设计,毕业论文等懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂 非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。 ✨✨ 欢迎订阅本专栏 ✨✨ 博客目录 一.基本介绍1.WebMvcConfigurer 介绍2.拦截器的作用3.InterceptorRegistry 二.实战演练1.配置文件2.处理拦截器 一.基本介绍
1.WebMvcConfigurer 介绍
在 Spring MVC 框架中WebMvcConfigurer 是一个非常重要的接口它允许开发者通过 Java 配置的方式对 Spring MVC 进行定制化设置。addInterceptors 方法是 WebMvcConfigurer 接口中用于注册拦截器的关键方法它使得开发者可以在请求处理流程中的不同阶段插入自定义逻辑例如权限验证、日志记录等。以下是对 addInterceptors 方法的详细解析以及如何使用它来增强你的 Web 应用程序。
2.拦截器的作用
拦截器在 Spring MVC 中主要用于以下场景
日志记录在请求处理前后记录日志便于问题追踪和性能监控。权限检查确保用户请求的合法性拦截未授权访问。数据预处理在请求到达控制器之前对请求参数进行预处理或验证。性能监控统计请求处理时间优化应用性能。
3.InterceptorRegistry
InterceptorRegistry 是 Spring MVC 配置中用于注册拦截器的类。它提供了一系列方法来配置拦截器的行为包括指定拦截哪些请求路径以及排除哪些请求路径。以下是 InterceptorRegistry 的一些主要方法 addInterceptor: 用于添加一个拦截器实例。这个方法接受一个实现了 HandlerInterceptor 接口的实例并返回一个 InterceptorRegistration 对象允许进一步配置该拦截器例如添加 URL 模式和排除模式。 addWebRequestInterceptor: 这个方法与 addInterceptor 类似也是用于添加拦截器但它专门用于实现 WebRequestInterceptor 接口的拦截器。 getInterceptors: 该方法返回所有注册的拦截器列表。这可以用于检查哪些拦截器已经配置在应用程序中。 addPathPatterns: 这是一个链式调用的方法用于指定拦截器应该应用到的 URL 路径模式。可以调用多次来添加多个路径模式。 excludePathPatterns: 与 addPathPatterns 相对应这个方法用来排除某些路径模式让拦截器不会应用到这些路径上。 order: 允许指定拦截器的顺序。数字越小优先级越高。
通过这些方法开发者可以根据需要配置拦截器的行为以满足不同的业务场景。例如可以创建一个自定义的 HandlerInterceptor 实现并使用 InterceptorRegistry 来注册这个拦截器同时指定它应该拦截的请求路径以及排除的请求路径。这样当请求进入应用程序时注册的拦截器就会按照配置的规则进行请求的预处理、后处理以及完成后的处理。
二.实战演练
1.配置文件
Configuration
public class WebMvcConfig implements WebMvcConfigurer {Overridepublic void addInterceptors(InterceptorRegistry registry) {// 配置myInterceptor的拦截规范如拦截的路径等等registry.addInterceptor(new AuthInterceptor())// 设置需要拦截的路径这里拦截所有的路径.addPathPatterns(/**)// 设置书籍放行.excludePathPatterns(/bookInfo/**)// 设置登录放行.excludePathPatterns(/login, /getOpenId, /register)// 设置Swagger访问放行.excludePathPatterns(/api-docs, /swagger-ui.html/**, /swagger-ui.html, /swagger-resources/**, /swagger-ui.html#/**)// 如资源文件放行.excludePathPatterns(/webjars/**, /doc.html, classpath:/META-INF/resources/);}
}2.处理拦截器
Component
public class AuthInterceptor implements HandlerInterceptor {Autowiredprivate NewSpaceJedisClient belleJedisClient;Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {// 如果请求的URL不包含排除路径则进行Token验证String token request.getHeader(Authorization);if (token null || token.isEmpty()) {// 如果没有Token返回401 Unauthorizedthrow new ArithmeticException(No token provided);}// 验证token是否有效final String userName JwtTokenUtil.verifierJwtToken(token);String redisToken belleJedisClient.get(RedisConstant.TOKEN_PREFIX userName);if (StringUtils.isEmpty(redisToken)) {// 有token 但是token失效了throw new ArithmeticException(Token is invalid);}return true;}
}觉得有用的话点个赞 呗。 ❤️❤️❤️本人水平有限如有纰漏欢迎各位大佬评论批评指正 如果觉得这篇文对你有帮助的话也请给个点赞、收藏下吧非常感谢! Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧