快速了解SpringBoot 统一功能处理
拦截器
什么是拦截器:
拦截器是Spring框架提供的重要功能之一,主要进行拦截用户请求,在指定方法前后,根据业务需求,执行预先设定的代码。
也就是说,允许开发⼈员提前预定义⼀些逻辑,在⽤⼾的请求响应前后执⾏.也可以在⽤⼾请求前阻⽌ 其执⾏. 在拦截器当中,开发⼈员可以在应⽤程序中做⼀些通⽤性的操作,⽐如通过拦截器来拦截前端发来的 请求,判断Session中是否有登录⽤⼾的信息.如果有就可以放⾏,如果没有就进⾏拦截

⽐如我们去银⾏办理业务,在办理业务前后,就可以加⼀些拦截操作 办理业务之前,先取号,如果带⾝份证了就取号成功 业务办理结束,给业务办理⼈员的服务进⾏评价. 这些就是"拦截器"做的⼯作.
下⾯我们先来学习下拦截器的基本使⽤.
拦截器的使⽤步骤分为两步:
定义拦截器
注册配置拦截器 ⾃定义拦截器:实现HandlerInterceptor接⼝,并重写其所有⽅法

preHandle()⽅法:⽬标⽅法执⾏前执⾏.返回true:继续执⾏后续操作;返0回false:中断后续操作.
ostHandle()⽅法:⽬标⽅法执⾏后执⾏
afterCompletion()⽅法:视图渲染完毕后执⾏,最后执⾏(后端开发现在⼏乎不涉及视图,暂不了解)
注册配置拦截器:实现WebMvcConfigurer接⼝,并重写addInterceptors⽅法
启动服务,试试访问任意请求,观察后端⽇志

我们把拦截器中preHandle 方法的返回值改为false再观察运行结果

可以发现,拦截器拦截了请求,没有执行test方法
拦截器的具体实现逻辑
拦截器的⼊⻔程序完成之后,接下来我们来介绍拦截器的使⽤细节。拦截器的使⽤细节我们主要介绍 两个部分:
1. 拦截器的拦截路径配置
2. 拦截器实现原理
设置拦截器的拦截路径
拦截路径是指我们定义的这个拦截器,对哪些请求⽣效.
我们在注册配置拦截器的时候,通过 addPathPatterns() ⽅法指定要拦截哪些请求.也可以通过 excludePathPatterns() 指定不拦截哪些请求.
上述代码中,我们配置的是 /** ,表⽰拦截所有的请求.
⽐如⽤⼾登录校验,我们希望可以对除了登录之外所有的路径⽣效.

在拦截器中除了可以设置 /** 拦截所有资源外,还有⼀些常⻅拦截路径设置

拦截器执行流程

1. 添加拦截器后,执⾏Controller的⽅法之前,请求会先被拦截器拦截住.执⾏ preHandle() ⽅法, 这个⽅法需要返回⼀个布尔类型的值.如果返回true,就表⽰放⾏本次操作,继续访问controller中的 ⽅法.如果返回false,则不会放⾏(controller中的⽅法也不会执⾏).
2. controller当中的⽅法执⾏完毕后,再回过来执⾏ postHandle() 这个⽅法以及
afterCompletion() ⽅法,执⾏完毕之后,最终给浏览器响应数据.
时光在指尖溜走,一篇博客又到了尾声。在这里,我分享了自己的故事、想法与感悟,也希望能在茫茫网络世界中与每一位有缘读到的你产生一丝共鸣。感谢你花费时间停留在此,愿我们都能在生活的旅途中不断发现美好,期待下一次与你在文字里重逢呀。
相关文章:
快速了解SpringBoot 统一功能处理
拦截器 什么是拦截器: 拦截器是Spring框架提供的重要功能之一,主要进行拦截用户请求,在指定方法前后,根据业务需求,执行预先设定的代码。 也就是说,允许开发⼈员提前预定义⼀些逻辑,在⽤⼾的请求响应前后执⾏.也可以…...
C++区分数组的引用和引用的数组
void f(int (&arr)[10]) {//正确} void f1(int &arr[10]) {//不允许使用引用的数组} [](数组下标运算符)的优先级高于&(取地址运算符)。所有表达式&arr[i]等价于&(arr[i]) 引用的数组 一个包含引用的数组&…...
【harbor】离线安装2.9.0-arm64架构服务制作和升级部署
harbor官网地址:Harbor 参考文档可以看这里:部署 harbor 2.10.1 arm64 - 简书。 前提环境准备: 安装docker 和 docker-compose 先拉arm64架构的harbor相关镜像 docker pull --platformlinux/arm64 ghcr.io/octohelm/harbor/harbor-regist…...
ESLint 使用教程(五):ESLint 和 Prettier 的结合使用与冲突解决
前言 在现代前端开发中,代码质量与代码风格的统一是两个非常重要的方面。良好的代码质量能减少 bug 的产生,而统一的代码风格则能提高团队协作的效率。为了实现这两个目标,我们通常会使用一些工具。 为了保证代码的可读性和维护性࿰…...
uniApp之uni-file-picker使用踩坑
标题党~也不算坑吧 就是初体验 上传是需要存储一下子的,我以为uniApp是自己免费开的服务给大家中转使用,就没管这个事,但是官网是这么说的: 就我是怎么发现的,使用了一段时间后,上传的图片都裂了ÿ…...
【C语言】。末尼
用js写一个冒泡排序 当然可以。在JavaScript中,你可以使用递归的方式来实现冒泡排序算法。这是一个简单的示例: function bubbleSort(arr) { let len arr.length; if(len < 1){ return arr; // 如果数组只有一个元素或为空…...
【鉴权】深入解析 Token:身份认证的核心技术
目录 引言一、Token 的定义与概念1.1 Token 是什么?1.2 无状态性与自包含性1.3 Token 的工作流程1.3.1 基本工作流程1.3.2 工作流程图示 二、Token 的常见用途2.1 用户身份验证2.2 授权控制2.3 防止跨站请求伪造(CSRF)2.4 跨域认证 三、Token…...
FastReport将停止 .NET Framework 上的 WebReport 更新
从2024/ 12 /1 日起,Fastreport将停止发布更新和提供对 FastReport.Web (.NET Framework) 的技术支持。该库一直是使用 Online Designer 的许多项目中报告的核心。这些更改意味着 FastReport.Web (Legacy) 库(FastReport.Net包的一部分)将不再…...
面试:TCP、UDP如何解决丢包问题
文章目录 一、TCP丢包原因、解决办法1.1 TCP为什么会丢包1.2 TCP传输协议如何解决丢包问题1.3 其他丢包情况(拓展)1.4 补充1.4.1 TCP端口号1.4.2 多个TCP请求的逻辑1.4.3 处理大量TCP连接请求的方法1.4.4 总结 二、UDP丢包2.1 UDP协议2.1.1 UDP简介2.1.2…...
在Ubuntu下安装RabbitMQ、添加一个新的登录用户并设置密码
在Ubuntu下安装RabbitMQ、添加一个新的登录用户并设置密码 在Ubuntu下安装RabbitMQ可以按照以下步骤进行:步骤 1: 更新系统步骤 2: 安装Erlang步骤 3: 添加RabbitMQ仓库步骤 4: 更新APT索引并安装RabbitMQ步骤 5: 启动RabbitMQ服务步骤 6: 检查RabbitMQ状态步骤 7: …...
HTTPS通信和TCP通信有什么不一样
HTTPS通信和TCP通信的主要区别如下: 协议层次:HTTPS是应用层协议,建立在HTTP协议之上,并增加了SSL/TLS加密层;而TCP是传输层协议,提供可靠的数据传输服务。安全性:HTTPS通过SSL/TLS加密…...
Kafka 的一些问题,夺命15连问
kafka-中的组成员 kafka四大核心 生产者API 允许应用程序发布记录流至一个或者多个kafka的主题(topics)。 消费者API 允许应用程序订阅一个或者多个主题,并处理这些主题接收到的记录流 StreamsAPI 允许应用程序充当流处理器(s…...
unity3d————延时函数
1.public void InvokeRepeating(string methodName, float time, float repeatRate); 延迟重复执行函数 InvokeRepeating 参数一:函数名字符串 参数二:第一次执行的延迟时间 参数三:之后每次执行的间隔时间 注意: 1-1.延时函数第…...
计算机学生自我提升方法——善用搜索引擎
计算机学生自我提升方法——善用搜索引擎 在信息爆炸的时代,计算机专业的学生如何有效地自我提升?答案可能就藏在一个简单却强大的工具——搜索引擎中。搜索引擎不仅是获取知识的入口,更是解决问题的利器。下面,我将分享一些善用…...
游戏引擎学习第一天
视频参考: https://www.bilibili.com/video/BV1zGDCYHErA/ 创建一个保存项目的路径 VS的安装略过,个人自行百度 1. vs 创建第一个CMAKE的窗口项目 game.cpp 修改如下的代码 到https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-winmain 去…...
uni-app view循环绑定click和 v-if
<view class"layout-wrap-item" v-for"(item, index) in menuItems" :key"index" click"item.clickHandler" :v-if"showMenu(item)"></view> const xxx (id) > { }; // 定义菜单项数组 const menuItems …...
Redis 高并发分布式锁实战
目录 环境准备 一 . Redis 安装 二:Spring boot 项目准备 三:nginx 安装 四:Jmeter 下载和配置 案例实战 优化一:加 synchronized 锁 优化二:使用 redis 的 setnx 实现分布式锁 优化三:使用 Lua 脚本…...
关于elementui el-radio 赋值问题
今天遇到这样的问题: 点击的时候,同时选中 照抄官网! 后来发现了问题: 也就是说如果你的版本太低,就不能用value,而得用label,于是修改 <el-radio-group v-model"searchTime"&g…...
2024-11-6----Android 11(全志713m)----- 关于添加 Selinux 权限
需求 节点: /sys/devices/platform/motor0/motor_ctrl上层 APP 使用 JNI 需要对该节点进行 echo 的操作,操作失败。 添加前的验证工作 adb 进去验证下,如下图所示: 发现权限不够。su 以后再操作是OK的,如下图: 添加前的修改 为防止报权限错误,直接给777,因为该…...
shodan5(泷羽sec)
声明 学习视频来自B站UP主 泷羽sec,如涉及侵泷羽sec权马上删除文章。 笔记只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 这节课旨在扩大自己在网络安全方面的知识面,了解网络安全领域的见闻,了…...
CentOS7系统维护终止后YUM源失效的解决方案
1. CentOS7维护终止带来的YUM源危机 去年夏天我给客户部署的CentOS7服务器突然无法安装新软件,屏幕上不断弹出"无法解析主机"的错误。这才意识到官方已经停止维护,默认的YUM源就像突然关门的超市,所有货架都空了。对于仍在使用Cent…...
OpenClaw怎么换大模型?3步免费切换各种大模型配置教程
手把手教你一键部署OpenClaw,连接微信、QQ、飞书、钉钉等,1分钟全搞定! 简单说一下:OpenClaw这玩意儿本身没带“大脑”,它就是个负责干活的躯壳,得靠接外面的大模型才能思考。想换个“大脑”其实就三步&am…...
实战指南:如何为你的应用选择最优Cache替换算法(附性能对比)
实战指南:如何为你的应用选择最优Cache替换算法(附性能对比) 在构建高性能应用时,缓存系统的设计往往是决定整体性能的关键因素之一。想象一下,一个电商网站在大促期间,每秒需要处理数十万次商品详情查询&a…...
Paimon数据湖实战:Merge Engines深度解析与应用场景
1. Paimon数据湖中的Merge Engines核心机制 第一次接触Paimon的Merge Engines时,我完全被它强大的数据合并能力震撼到了。这就像是一个智能的数据管家,能够根据不同的业务需求,自动帮你处理各种复杂的数据合并场景。在实际项目中,…...
【2026年蚂蚁集团暑期实习- 3月29日-开发岗-第二题- 质数合数】(题目+思路+JavaC++Python解析+在线测试)
题目内容 在数论中,质数是大于 $1 $且仅能被 $1 和自身整除的正整数;合数是大于和自身整除的正整数;合数是大于和自身整除的正整数;合数是大于 1$ 且除了 $1 $和自身外还有其他正因子的正整数。 给定一个长度为$ n$ 的数组 { a1,a2,…,ana_1,a_2,…,a_na...
Ubuntu 20.04 LTS下Miniconda3安装与配置全攻略(含常见错误解决)
Ubuntu 20.04 LTS下Miniconda3安装与配置全攻略(含常见错误解决) 如果你正在Ubuntu 20.04 LTS上搭建Python开发或数据科学环境,Miniconda3绝对是一个值得考虑的选择。作为Anaconda的精简版,它保留了核心的conda包管理功能&#x…...
Catime终极指南:3个技巧让你成为Windows番茄时钟大师
Catime终极指南:3个技巧让你成为Windows番茄时钟大师 【免费下载链接】Catime A very useful timer (Pomodoro Clock).[一款非常好用的计时器(番茄时钟)] 项目地址: https://gitcode.com/gh_mirrors/ca/Catime Windows番茄时钟、桌面倒计时工具和时间管理软件…...
计算机毕业设计springboot盐城市亭湖区药店销售管理系统 基于SpringBoot的盐城亭湖区医药零售信息化管理平台 亭湖区智慧药店进销存与在线服务系统
计算机毕业设计springboot盐城市亭湖区药店销售管理系统7f7299 (配套有源码 程序 mysql数据库 论文)本套源码可以先看具体功能演示视频领取,文末有联xi 可分享 在数字化医疗改革持续推进的背景下,基层药店作为医药服务的重要终端&…...
3大突破:开源工具VideoCaptioner如何让零门槛实现AI实时字幕效率提升300%
3大突破:开源工具VideoCaptioner如何让零门槛实现AI实时字幕效率提升300% 【免费下载链接】VideoCaptioner 🎬 卡卡字幕助手 | VideoCaptioner - 基于 LLM 的智能字幕助手,无需GPU一键高质量字幕视频合成!视频字幕生成、断句、校正…...
VoxTrans:离线英文转录 + AI 翻译工具,支持本地 / YouTube 素材,人声分离 + 标点优化,生成双语 SRT 字幕,兼顾隐私与效率,是创作学习的得力软件
大家好,我是大飞哥。日常处理英文音视频时,要么需要手动听写字幕耗时耗力,要么在线工具依赖网络且隐私风险高,要么翻译后的字幕语序混乱、专业术语出错,尤其是做内容创作、学习资料整理时,很难高效得到精准…...
