爆款云主机2核4G限时秒杀,88元/年起!
查看详情

活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 618智算钜惠季 爆款云主机2核4G限时秒杀,88元/年起!
  • 免费体验DeepSeek,上天翼云息壤 NEW 新老用户均可免费体验2500万Tokens,限时两周
  • 云上钜惠 HOT 爆款云主机全场特惠,更有万元锦鲤券等你来领!
  • 算力套餐 HOT 让算力触手可及
  • 天翼云脑AOne NEW 连接、保护、办公,All-in-One!
  • 中小企业应用上云专场 产品组合下单即享折上9折起,助力企业快速上云
  • 息壤高校钜惠活动 NEW 天翼云息壤杯高校AI大赛,数款产品享受线上订购超值特惠
  • 天翼云电脑专场 HOT 移动办公新选择,爆款4核8G畅享1年3.5折起,快来抢购!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

智算服务

打造统一的产品能力,实现算网调度、训练推理、技术架构、资源管理一体化智算服务
智算云(DeepSeek专区)
科研助手
  • 算力商城
  • 应用商城
  • 开发机
  • 并行计算
算力互联调度平台
  • 应用市场
  • 算力市场
  • 算力调度推荐
一站式智算服务平台
  • 模型广场
  • 体验中心
  • 服务接入
智算一体机
  • 智算一体机
大模型
  • DeepSeek-R1-昇腾版(671B)
  • DeepSeek-R1-英伟达版(671B)
  • DeepSeek-V3-昇腾版(671B)
  • DeepSeek-R1-Distill-Llama-70B
  • DeepSeek-R1-Distill-Qwen-32B
  • Qwen2-72B-Instruct
  • StableDiffusion-V2.1
  • TeleChat-12B

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入云市场创新解决方案
办公协同
  • WPS云文档
  • 安全邮箱
  • EMM手机管家
  • 智能商业平台
财务管理
  • 工资条
  • 税务风控云
企业应用
  • 翼信息化运维服务
  • 翼视频云归档解决方案
工业能源
  • 智慧工厂_生产流程管理解决方案
  • 智慧工地
建站工具
  • SSL证书
  • 新域名服务
网络工具
  • 翼云加速
灾备迁移
  • 云管家2.0
  • 翼备份
资源管理
  • 全栈混合云敏捷版(软件)
  • 全栈混合云敏捷版(一体机)
行业应用
  • 翼电子教室
  • 翼智慧显示一体化解决方案

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云云市场合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
  • 天翼云EasyCoding平台
天翼云培训认证
  • 天翼云学堂
  • 天翼云市场商学院
天翼云合作计划
  • 云汇计划
天翼云东升计划
  • 适配中心
  • 东升计划
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
开放能力
  • EasyCoding敏捷开发平台
培训与认证
  • 天翼云学堂
  • 天翼云认证
魔乐社区
  • 魔乐社区

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 建议与反馈
  • 用户体验官
  • 服务保障
  • 客户公告
  • 会员中心
增值服务
  • 红心服务
  • 首保服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 智算服务
  • 产品
  • 解决方案
  • 应用商城
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心

      【SpringBoot】深度解析 Spring Boot 拦截器:实现统一功能处理的关键路径

      首页 知识中心 软件开发 文章详情页

      【SpringBoot】深度解析 Spring Boot 拦截器:实现统一功能处理的关键路径

      2025-03-06 09:41:26 阅读次数:13

      定义,拦截,拦截器,登录,请求

      📚️1.拦截器

       强制登录的功能, 后端程序根据Session来判断⽤⼾是否登录, 但是实现⽅法是⽐较⿇烦的

      • 需要修改每个接⼝的处理逻辑
      • 需要修改每个接⼝的返回结果
      • 接⼝定义修改, 前端代码也需要跟着修改

      即我们不需要一个一个请求的后端代码进行修改,直接在每个请求之前,进行拦截判断这里的界面是否是用户进行了登录;

      🚀1.1拦截器快速入门

      什么是拦截器:

      拦截器是Spring框架提供的核⼼功能之⼀, 主要⽤来拦截⽤⼾的请求, 在指定⽅法前后, 根据业务需要执⾏预先设定的代码.

      也就是说, 允许开发⼈员提前预定义⼀些逻辑, 在⽤⼾的请求响应前后执⾏. 也可以在⽤⼾请求前阻⽌其执⾏.

      在拦截器当中,开发⼈员可以在应⽤程序中做⼀些通⽤性的操作, ⽐如通过拦截器来拦截前端发来的请求, 判断Session中是否有登录⽤⼾的信息. 如果有就可以放⾏, 如果没有就进⾏拦截

      大致的流程图如下:

      【SpringBoot】深度解析 Spring Boot 拦截器:实现统一功能处理的关键路径 

      拦截器的大致使用就是一下两步:

      1.定义拦截器

      2.配置拦截器 

      大概的意思就是:

      首先一个学校的大门的保安,首先要招聘,在招聘到保安人员后,然后再安排这个保安去哪里进行看守,那么招聘就是定义拦截去,安排哪里进行看守就是配置拦截器;

      1.⾃定义拦截器

      自定义拦截器,就是实现HandlerInterceptor接⼝,并重写其所有⽅法,那么具体的代码就是如下所示的:

       @Override
          public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
      
             ("LoginInterceptor ⽬标⽅法执⾏前执⾏..");
             return true
          }
      
          @Override
          public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
               ("LoginInterceptor ⽬标⽅法执⾏后执⾏..");
             
          }

      解释:

      • preHandle()⽅法:⽬标⽅法执⾏前执⾏. 返回true: 继续执⾏后续操作; 返回false: 中断后续操作.
      • postHandle()⽅法:⽬标⽅法执⾏后执⾏
      • afterCompletion()⽅法:视图渲染完毕后执⾏,最后执⾏(后端开发现在⼏乎不涉及视图, 暂不了
      解) 

      这里小编没有重写这里的afterCompletion()方法~~

      这段代码就是说明了这两个拦截器一个在请求执行前进行,一个请求后再次执行;设置为true就表示要执行)(不拦截进行放行),反之就是不执行;

      2.配置拦截器

      我们在定义好拦截器后,那么此时就应该进行安排这个拦截器在哪里工作了,此时就涉及拦截器的配置,实现WebMvcConfigurer接⼝,并重写addInterceptors⽅法,具体的代码如下所示:

      @Configuration
      public class WebConfig implements WebMvcConfigurer {
          //注入拦截器
          @Autowired
          private LoginInterceptor loginInterceptor;
          @Override
          public void addInterceptors(InterceptorRegistry registry) {
      
              registry.addInterceptor(loginInterceptor)
                      .addPathPatterns("/**");
          }
      }

      解释:

      这里的大致意思就是安排拦截器到所有请求之前,(“/**”)代表的路劲就是所有的请求,然后再通过Autowired引进这里的拦截器对象,致此我们就完成了只有打印工作的拦截器,此时运行后控制面板的日志的打印如下所示:

      【SpringBoot】深度解析 Spring Boot 拦截器:实现统一功能处理的关键路径

      注意:

      请求请求,肯定是要进行请求后才会出现这里的日志信息,别忘了在日志观察前,进行请求的发送;

      🚀1.2拦截器的详解

      拦截器的⼊⻔程序完成之后,接下来我们来介绍拦截器的使⽤细节。拦截器的使⽤细节我们主要介绍拦截器的拦截路径配置

      1.拦截路径

      拦截路径是指我们定义的这个拦截器, 对哪些请求⽣效.我们在注册配置拦截器的时候, 通过 addPathPatterns() ⽅法指定要拦截哪些请求. 也可以通过excludePathPatterns() 指定不拦截哪些请求.
      ⽐如⽤⼾登录校验, 我们希望可以对除了登录之外所有的路径⽣效

      代码如下所示:

      @Configuration
      public class WebConfig implements WebMvcConfigurer {
          //注入拦截器
          @Autowired
          private LoginInterceptor loginInterceptor;
          @Override
          public void addInterceptors(InterceptorRegistry registry) {
      
              registry.addInterceptor(loginInterceptor)
                      .addPathPatterns("/**")
                      .excludePathPatterns("/user/login")             
              ;
          }
      }

      解释:

      addPathPatterns:这里就是指定要拦截的请求;

      .excludePathPatterns:这里就是指定不必进行拦截的请求,我们要进进行登录,那么这里肯定是不可以进行拦截的;

      常见的路径的拦截:

      【SpringBoot】深度解析 Spring Boot 拦截器:实现统一功能处理的关键路径

      注意:在书写这里的路径的时候,这里的/book/**,第一个这里的正斜杠是不一可以进行省略的,不要问为啥,因为这里小编所犯的错误;

      2.拦截器执行流程

      正常的情况下,我们的执行流程就是如下所示:

      【SpringBoot】深度解析 Spring Boot 拦截器:实现统一功能处理的关键路径

      有了拦截器之后,会在调⽤ Controller 之前进⾏相应的业务处理,执⾏的流程如下图:

      【SpringBoot】深度解析 Spring Boot 拦截器:实现统一功能处理的关键路径 

      解释:

      1.添加拦截器后, 执⾏Controller的⽅法之前, 请求会先被拦截器拦截住. 执⾏ preHandle() ⽅法,
      这个⽅法需要返回⼀个布尔类型的值. 如果返回true, 就表⽰放⾏本次操作, 继续访问controller中的
      ⽅法. 如果返回false,则不会放⾏(controller中的⽅法也不会执⾏).

      2. controller当中的⽅法执⾏完毕后,再回过来执⾏ postHandle() 这个⽅法以及afterCompletion() ⽅法,执⾏完毕之后,最终给浏览器响应数据 

      🚀1.3登录校验

      1.定义拦截器

      从session中获取⽤⼾信息, 如果session中不存在, 则返回false,并设置http状态码为401, 否则返回true.

      代码如下所示:

      public class LoginInterceptor implements HandlerInterceptor {
          //定义拦截器,重写方法
          @Override
          public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
      
              HttpSession session = request.getSession();
              UserInfo userInfo = (UserInfo) session.getAttribute(constant.USER_SESSION_KEY);
              if (userInfo==null || userInfo.getId()<=0){
                  //用户未登录
                  response.setStatus(401);
                  return false;
              }
              return true;
          }
      }

      解释:

      我们这里拿到session后,进行判断,通过这里的key拿到对应的值,通过对象来接收后,判断这里的对象是否为空,或者这里的id的值是否小于0,若满足条件那么设置状态码401,然后进行拦截;

      2.配置拦截器
        @Override
          public void addInterceptors(InterceptorRegistry registry) {
      
              registry.addInterceptor(loginInterceptor)
                      .addPathPatterns("/**")
                      .excludePathPatterns("/user/login")
                      .excludePathPatterns("/css/**")
                      .excludePathPatterns("/js/**")
                      .excludePathPatterns("/pic/**")
                      .excludePathPatterns("/**/*.html")
              ;
          }

      解释:

      这里设置所有的后端请求,都包括这里的拦截器,但是我们的目的就是跳转至登录页面,所以这里的请求不必拦截,以及静态的前端请求不必拦截

      最后在前端的代码添加如下所示:

                     error: function (error) {
                          if (error != null && error.status == 401) {
                              location.href = "login.html";
                          }
                      }

      解释:

      当接收到401状态码后,重新定义error方法,直接进行页面的跳转,就完成了页面强制登录的操作了;这里我们响应中设置了状态码,所以这里直接取到状态码;

      📚️2.总结

      本期小编主要总结了在SpringBoot中统一功能处理的拦截器功能,从简单了解实现方法,定义到配置到如何运用到我们的图书管理系统代码里都做了解释~~

      版权声明:本文内容来自第三方投稿或授权转载,原文地址:https://blog.csdn.net/GGBond778/article/details/144856885,作者:GGBondlctrl,版权归原作者所有。本网站转在其作品的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如因作品内容、版权等问题需要同本网站联系,请发邮件至ctyunbbs@chinatelecom.cn沟通。

      上一篇:CSS基础之伪元素选择器(如果想知道CSS的伪元素选择器知识点,那么只看这一篇就足够了!)

      下一篇:【JavaEE初阶】网络原理—关于TCP协议值滑动窗口与流量控制,进来看看吧!!!

      相关文章

      2025-05-19 09:04:30

      token以及axios响应拦截器请求拦截器

      token以及axios响应拦截器请求拦截器

      2025-05-19 09:04:30
      axios , token , 拦截器 , 登录 , 跳转
      2025-05-19 09:04:22

      外设驱动库开发笔记54:外设库驱动设计改进的思考

      外设驱动库开发笔记54:外设库驱动设计改进的思考

      2025-05-19 09:04:22
      使用 , 函数 , 初始化 , 定义 , 对象
      2025-05-14 10:07:38

      30天拿下Python之函数

      在Python中,函数是一段可以重复使用的代码块,它可以提高代码的可重用性和可维护性,是编程中非常重要的概念。

      2025-05-14 10:07:38
      lambda , 代码 , 传递 , 关键字 , 函数 , 参数 , 定义
      2025-05-14 10:02:48

      互斥锁解决redis缓存击穿

      在高并发系统中,Redis 缓存是一种常见的性能优化方式。然而,缓存击穿问题也伴随着高并发访问而来。

      2025-05-14 10:02:48
      Redis , 互斥 , 数据库 , 线程 , 缓存 , 请求
      2025-05-13 09:49:27

      变量基础_变量定义

      变量基础_变量定义

      2025-05-13 09:49:27
      变量 , 定义 , 示例 , 移除 , 解析 , 语法
      2025-05-13 09:49:19

      脚本交互_基础知识_shell登录解读

      脚本交互_基础知识_shell登录解读

      2025-05-13 09:49:19
      shell , 基础知识 , 实践 , 效果 , 登录 , 配置文件
      2025-05-09 09:30:05

      WebAPi接口安全之公钥私钥加密

      WebAPi接口安全之公钥私钥加密

      2025-05-09 09:30:05
      加密 , 参数 , 接口 , 请求 , 重写
      2025-05-09 09:21:53

      WebAPI 和 webservice的区别

      WebAPI 和 webservice的区别

      2025-05-09 09:21:53
      HTTP , 协议 , 客户端 , 服务器 , 请求
      2025-05-09 08:50:35

      springboot实战学习(11)(更新用户基本信息接口主逻辑)

      springboot实战学习(11)(更新用户基本信息接口主逻辑)

      2025-05-09 08:50:35
      接口 , 方法 , 更新 , 用户 , 请求
      2025-05-07 09:12:52

      C语言:预处理详解

      C语⾔设置了⼀些预定义符号,可以直接使⽤,预定义符号也是在预处理期间处理的。

      2025-05-07 09:12:52
      define , 函数 , 参数 , 头文件 , 定义 , 替换 , 编译
      查看更多
      推荐标签

      作者介绍

      天翼云小翼
      天翼云用户

      文章

      33561

      阅读量

      5242230

      查看更多

      最新文章

      外设驱动库开发笔记54:外设库驱动设计改进的思考

      2025-05-19 09:04:22

      30天拿下Python之函数

      2025-05-14 10:07:38

      互斥锁解决redis缓存击穿

      2025-05-14 10:02:48

      WebAPi接口安全之公钥私钥加密

      2025-05-09 09:30:05

      springboot实战学习(11)(更新用户基本信息接口主逻辑)

      2025-05-09 08:50:35

      C语言:预处理详解

      2025-05-07 09:12:52

      查看更多

      热门文章

      Java(Spring拦截器、过滤器、AOP)

      2023-06-20 09:11:08

      Spring Boot 使用拦截器

      2023-05-04 09:43:47

      SpringMVC-拦截器

      2023-06-08 06:21:32

      简单的谈一下SpringMVC的工作流程

      2023-06-20 09:11:08

      Shiro过滤器源码

      2023-06-28 09:11:13

      java自定义接口方法的参数自动注入,比如@UserId Long userId、@LoginedUser User user

      2023-08-04 07:25:51

      查看更多

      热门标签

      java Java python 编程开发 代码 开发语言 算法 线程 Python html 数组 C++ 元素 javascript c++
      查看更多

      相关产品

      弹性云主机

      随时自助获取、弹性伸缩的云服务器资源

      天翼云电脑(公众版)

      便捷、安全、高效的云电脑服务

      对象存储

      高品质、低成本的云上存储服务

      云硬盘

      为云上计算资源提供持久性块存储

      查看更多

      随机文章

      Java中的抽象类详解

      【django】新闻模块——新闻详情页接口开发【36】

      Java中的匿名类详解

      Kotlin 代替Java接口回调,就这么简单

      [快学Python3]类基础

      CSS定义变量

      • 7*24小时售后
      • 无忧退款
      • 免费备案
      • 专家服务
      售前咨询热线
      400-810-9889转1
      关注天翼云
      • 旗舰店
      • 天翼云APP
      • 天翼云微信公众号
      服务与支持
      • 备案中心
      • 售前咨询
      • 智能客服
      • 自助服务
      • 工单管理
      • 客户公告
      • 涉诈举报
      账户管理
      • 管理中心
      • 订单管理
      • 余额管理
      • 发票管理
      • 充值汇款
      • 续费管理
      快速入口
      • 天翼云旗舰店
      • 文档中心
      • 最新活动
      • 免费试用
      • 信任中心
      • 天翼云学堂
      云网生态
      • 甄选商城
      • 渠道合作
      • 云市场合作
      了解天翼云
      • 关于天翼云
      • 天翼云APP
      • 服务案例
      • 新闻资讯
      • 联系我们
      热门产品
      • 云电脑
      • 弹性云主机
      • 云电脑政企版
      • 天翼云手机
      • 云数据库
      • 对象存储
      • 云硬盘
      • Web应用防火墙
      • 服务器安全卫士
      • CDN加速
      热门推荐
      • 云服务备份
      • 边缘安全加速平台
      • 全站加速
      • 安全加速
      • 云服务器
      • 云主机
      • 智能边缘云
      • 应用编排服务
      • 微服务引擎
      • 共享流量包
      更多推荐
      • web应用防火墙
      • 密钥管理
      • 等保咨询
      • 安全专区
      • 应用运维管理
      • 云日志服务
      • 文档数据库服务
      • 云搜索服务
      • 数据湖探索
      • 数据仓库服务
      友情链接
      • 中国电信集团
      • 189邮箱
      • 天翼企业云盘
      • 天翼云盘
      ©2025 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
      公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
      • 用户协议
      • 隐私政策
      • 个人信息保护
      • 法律声明
      备案 京公网安备11010802043424号 京ICP备 2021034386号