当前位置: 首页 > news >正文

快速了解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 的产生,而统一的代码风格则能提高团队协作的效率。为了实现这两个目标,我们通常会使用一些工具。 为了保证代码的可读性和维护性&#xff0…...

uniApp之uni-file-picker使用踩坑

标题党~也不算坑吧 就是初体验 上传是需要存储一下子的,我以为uniApp是自己免费开的服务给大家中转使用,就没管这个事,但是官网是这么说的: 就我是怎么发现的,使用了一段时间后,上传的图片都裂了&#xff…...

【C语言】。末尼

用js写一个冒泡排序 当然可以。在JavaScript中&#xff0c;你可以使用递归的方式来实现冒泡排序算法。这是一个简单的示例&#xff1a; function bubbleSort(arr) { let len arr.length; if(len < 1){ return arr; // 如果数组只有一个元素或为空&#xf…...

【鉴权】深入解析 Token:身份认证的核心技术

目录 引言一、Token 的定义与概念1.1 Token 是什么&#xff1f;1.2 无状态性与自包含性1.3 Token 的工作流程1.3.1 基本工作流程1.3.2 工作流程图示 二、Token 的常见用途2.1 用户身份验证2.2 授权控制2.3 防止跨站请求伪造&#xff08;CSRF&#xff09;2.4 跨域认证 三、Token…...

FastReport将停止 .NET Framework 上的 WebReport 更新

从2024/ 12 /1 日起&#xff0c;Fastreport将停止发布更新和提供对 FastReport.Web (.NET Framework) 的技术支持。该库一直是使用 Online Designer 的许多项目中报告的核心。这些更改意味着 FastReport.Web (Legacy) 库&#xff08;FastReport.Net包的一部分&#xff09;将不再…...

面试:TCP、UDP如何解决丢包问题

文章目录 一、TCP丢包原因、解决办法1.1 TCP为什么会丢包1.2 TCP传输协议如何解决丢包问题1.3 其他丢包情况&#xff08;拓展&#xff09;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可以按照以下步骤进行&#xff1a;步骤 1: 更新系统步骤 2: 安装Erlang步骤 3: 添加RabbitMQ仓库步骤 4: 更新APT索引并安装RabbitMQ步骤 5: 启动RabbitMQ服务步骤 6: 检查RabbitMQ状态步骤 7: …...

HTTPS通信和TCP通信有什么不一样

HTTPS通信和TCP通信的主要区别如下&#xff1a; ‌协议层次‌&#xff1a;HTTPS是应用层协议&#xff0c;建立在HTTP协议之上&#xff0c;并增加了SSL/TLS加密层&#xff1b;而TCP是传输层协议&#xff0c;提供可靠的数据传输服务。‌安全性‌&#xff1a;HTTPS通过SSL/TLS加密…...

Kafka 的一些问题,夺命15连问

kafka-中的组成员 kafka四大核心 生产者API 允许应用程序发布记录流至一个或者多个kafka的主题&#xff08;topics&#xff09;。 消费者API 允许应用程序订阅一个或者多个主题&#xff0c;并处理这些主题接收到的记录流 StreamsAPI 允许应用程序充当流处理器&#xff08;s…...

unity3d————延时函数

1.public void InvokeRepeating(string methodName, float time, float repeatRate); 延迟重复执行函数 InvokeRepeating 参数一&#xff1a;函数名字符串 参数二&#xff1a;第一次执行的延迟时间 参数三&#xff1a;之后每次执行的间隔时间 注意&#xff1a; 1-1.延时函数第…...

计算机学生自我提升方法——善用搜索引擎

计算机学生自我提升方法——善用搜索引擎 在信息爆炸的时代&#xff0c;计算机专业的学生如何有效地自我提升&#xff1f;答案可能就藏在一个简单却强大的工具——搜索引擎中。搜索引擎不仅是获取知识的入口&#xff0c;更是解决问题的利器。下面&#xff0c;我将分享一些善用…...

游戏引擎学习第一天

视频参考: https://www.bilibili.com/video/BV1zGDCYHErA/ 创建一个保存项目的路径 VS的安装略过&#xff0c;个人自行百度 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 安装 二&#xff1a;Spring boot 项目准备 三&#xff1a;nginx 安装 四&#xff1a;Jmeter 下载和配置 案例实战 优化一&#xff1a;加 synchronized 锁 优化二&#xff1a;使用 redis 的 setnx 实现分布式锁 优化三&#xff1a;使用 Lua 脚本…...

关于elementui el-radio 赋值问题

今天遇到这样的问题&#xff1a; 点击的时候&#xff0c;同时选中 照抄官网&#xff01; 后来发现了问题&#xff1a; 也就是说如果你的版本太低&#xff0c;就不能用value&#xff0c;而得用label&#xff0c;于是修改 <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权马上删除文章。 笔记只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 这节课旨在扩大自己在网络安全方面的知识面&#xff0c;了解网络安全领域的见闻&#xff0c;了…...

CentOS7系统维护终止后YUM源失效的解决方案

1. CentOS7维护终止带来的YUM源危机 去年夏天我给客户部署的CentOS7服务器突然无法安装新软件&#xff0c;屏幕上不断弹出"无法解析主机"的错误。这才意识到官方已经停止维护&#xff0c;默认的YUM源就像突然关门的超市&#xff0c;所有货架都空了。对于仍在使用Cent…...

OpenClaw怎么换大模型?3步免费切换各种大模型配置教程

手把手教你一键部署OpenClaw&#xff0c;连接微信、QQ、飞书、钉钉等&#xff0c;1分钟全搞定&#xff01; 简单说一下&#xff1a;OpenClaw这玩意儿本身没带“大脑”&#xff0c;它就是个负责干活的躯壳&#xff0c;得靠接外面的大模型才能思考。想换个“大脑”其实就三步&am…...

实战指南:如何为你的应用选择最优Cache替换算法(附性能对比)

实战指南&#xff1a;如何为你的应用选择最优Cache替换算法&#xff08;附性能对比&#xff09; 在构建高性能应用时&#xff0c;缓存系统的设计往往是决定整体性能的关键因素之一。想象一下&#xff0c;一个电商网站在大促期间&#xff0c;每秒需要处理数十万次商品详情查询&a…...

Paimon数据湖实战:Merge Engines深度解析与应用场景

1. Paimon数据湖中的Merge Engines核心机制 第一次接触Paimon的Merge Engines时&#xff0c;我完全被它强大的数据合并能力震撼到了。这就像是一个智能的数据管家&#xff0c;能够根据不同的业务需求&#xff0c;自动帮你处理各种复杂的数据合并场景。在实际项目中&#xff0c;…...

【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安装与配置全攻略&#xff08;含常见错误解决&#xff09; 如果你正在Ubuntu 20.04 LTS上搭建Python开发或数据科学环境&#xff0c;Miniconda3绝对是一个值得考虑的选择。作为Anaconda的精简版&#xff0c;它保留了核心的conda包管理功能&#x…...

Catime终极指南:3个技巧让你成为Windows番茄时钟大师

Catime终极指南&#xff1a;3个技巧让你成为Windows番茄时钟大师 【免费下载链接】Catime A very useful timer (Pomodoro Clock).[一款非常好用的计时器(番茄时钟)] 项目地址: https://gitcode.com/gh_mirrors/ca/Catime Windows番茄时钟、桌面倒计时工具和时间管理软件…...

计算机毕业设计springboot盐城市亭湖区药店销售管理系统 基于SpringBoot的盐城亭湖区医药零售信息化管理平台 亭湖区智慧药店进销存与在线服务系统

计算机毕业设计springboot盐城市亭湖区药店销售管理系统7f7299 &#xff08;配套有源码 程序 mysql数据库 论文&#xff09;本套源码可以先看具体功能演示视频领取&#xff0c;文末有联xi 可分享 在数字化医疗改革持续推进的背景下&#xff0c;基层药店作为医药服务的重要终端&…...

3大突破:开源工具VideoCaptioner如何让零门槛实现AI实时字幕效率提升300%

3大突破&#xff1a;开源工具VideoCaptioner如何让零门槛实现AI实时字幕效率提升300% 【免费下载链接】VideoCaptioner &#x1f3ac; 卡卡字幕助手 | VideoCaptioner - 基于 LLM 的智能字幕助手&#xff0c;无需GPU一键高质量字幕视频合成&#xff01;视频字幕生成、断句、校正…...

VoxTrans:离线英文转录 + AI 翻译工具,支持本地 / YouTube 素材,人声分离 + 标点优化,生成双语 SRT 字幕,兼顾隐私与效率,是创作学习的得力软件

大家好&#xff0c;我是大飞哥。日常处理英文音视频时&#xff0c;要么需要手动听写字幕耗时耗力&#xff0c;要么在线工具依赖网络且隐私风险高&#xff0c;要么翻译后的字幕语序混乱、专业术语出错&#xff0c;尤其是做内容创作、学习资料整理时&#xff0c;很难高效得到精准…...