拦截器的简单使用
拦截器的简单使用
- 拦截器的使用
- 创建拦截器
- preHandle 目标方法执行前执行
- postHandle 目标方法执行后执行
- afterCompletion 视图渲染后执行
- 拦截器使用场景
- 返回值
- 注册拦截器
- 运用拦截器
拦截器的使用

创建拦截器
首先,我们需要创建一个拦截器器的类,并且需要继承自HandlerInterceptor这一父类,这里我们假设我们需要做一个校验功能的拦截器

创建完成之后,我们可以给该类加一个注解:@Component,方便后续进行代码注入
我们就可以实现父类的方法了,下面我们来介绍三种方法

preHandle 目标方法执行前执行
postHandle 目标方法执行后执行
afterCompletion 视图渲染后执行
这里出现了一个新词,叫做目标方法,那么接下来,我们就来了解一下,什么是目标方法
拦截器使用场景
想要灵活正确的使用拦截器,我们就需要知道,拦截器的使用需要有目标方法和执行方法
要知道,我们程序猿的代码中会有很多形形色色的方法,我们的拦截器的作用,就是这些方法执行的前后进行校验以及执行相应的代码,那么我们就称这些方法为目标方法,而拦截器需要完成的任务就被称为执行方法
了解上面的知识过后,我们就可以理解上述三个方法的作用了,我们可以在上述三个方法中实现各自要完成的功能后,拦截器的功能也就基本实现了
返回值
可以看到,我们实现的各个拦截器的返回值都是布尔类型,这不正合了拦截器的字面含义吗,拦截拦截,如果拦截器校验失败,程序肯定就执行失败了,就不能继续执行下面的功能了,就会被拦截,如果拦截器校验成功则会被拦截器放行.
注册拦截器
虽然我们已经成功的创建了一个拦截器,但是这样还不能让拦截器生效,我们还需要在项目中注册你的拦截器
现在,我们需要再次创建一个类,并且继承WebMvcConfigurer这个父类,然后实现addInterceptors这个方法
除此之外,我们还需要给当前类添加一个注解:@Configuration


接下来,将我们之前创建的拦截器注入进来

然后进行拦截器的注册,也就是将其当作参数传递给registry,这里的registry也就是addInterceptors中的参数

这样,我们也就可以在项目中正常使用拦截器了
运用拦截器
想要正确的使用拦截器,我们还得了解一些其他的知识点
也就是registry.addInterceptor的两个方法

.addPathPatterns()的功能是添加实现拦截器的网络路径
.excludePathPatterns();的功能是添加屏蔽拦截器的网络路径
这里给大家附上路径的使用方法:
| 拦截路径 | 含义 | 举例 |
|---|---|---|
| /* | ⼀级路径 | 能匹配/user,/book,/login,不能匹配/user/login |
| /** | 任意级路径 | 能匹配/user,/user/login,/user/reg |
| /book/* | /book下的⼀级路径 | 能匹配/book/addBook,不能匹配/book/addBook/1,/book |
| /book/** | /book下的任意路径 | 能匹配/book,/book/addBook,/book/addBook/2不能匹配/user/login |
相关文章:
拦截器的简单使用
拦截器的简单使用 拦截器的使用创建拦截器preHandle 目标方法执行前执行postHandle 目标方法执行后执行afterCompletion 视图渲染后执行 拦截器使用场景返回值注册拦截器运用拦截器 拦截器的使用 创建拦截器 首先,我们需要创建一个拦截器器的类,并且需要继承自HandlerIntercep…...
【gmsh源码阅读】OCC对象绑定tag及获取几何与网格映射关系
一、Tag是什么? gmsh中的几何模型相对于OCC的模型增加了id编号,也叫tag,在gmsh中可以显示出来。在gmsh中,点、线、面、体都有Tag,以方便对其查找定位查找。在OCC中TopoDS_Shape只有几何与拓扑结构,没有唯一…...
【RTP】webrtc 学习3: webrtc对h264的rtp解包
rtp_rtcp\source\video_rtp_depacketizer_h264.cc【RTP】webrtc 学习2: webrtc对h264的rtp打包 中分析了打包过程的代码,这样再来看解析过程的源码就容易多了:本代码主要基于m79,m98类似。这里注明了jitterbuffer 会再次 做 解析stap-a 变为NAL units解析ParseFuaNalu 第一…...
幻兽帕鲁服务器多少钱?4核16G支持32人在线吗?
4核16G服务器是幻兽帕鲁Palworld推荐的配置,阿里云和腾讯云均推出针对幻兽帕鲁的4核16G服务器,阿里云4核16G幻兽帕鲁专属服务器32元1个月、66元3个月,腾讯云4核16G14M服务器66元1个月、277元3个月、1584元一年。云服务器吧yunfuwuqiba.com分享…...
AD/DA(模数数模转换)
文章目录 前言一、介绍部分介绍AD/DA硬件电路模型硬件电路ADC模块DAC模块ADC0809DAC0832 运算放大器(运放)运放电路 DA原理两种不同的DA转换器 AD原理部分AD/DA性能指标XPT2046介绍主要功能XPT2046时序结构控制字节解释单端模式配置表 二、实例使用AD读取…...
Docker数据卷挂载(以容器化Mysql为例)
数据卷 数据卷是一个虚拟目录,是容器内目录与****之间映射的桥梁 在执行docker run命令时,使用**-v 本地目录:容器目录**可以完成本地目录挂载 eg.Mysql容器的数据挂载 1.在根目录root下创建目录mysql及三个子目录: cd ~ pwd m…...
YOLOv8-Seg改进:注意力系列篇 | non-local自注意力,助力小目标分割
🚀🚀🚀本文改进:non-local自注意力,助力小目标分割 🚀🚀🚀YOLOv8-seg创新专栏:http://t.csdnimg.cn/KLSdv 学姐带你学习YOLOv8,从入门到创新,轻轻松松搞定科研; 1)手把手教你如何训练YOLOv8-seg; 2)模型创新,提升分割性能; 3)独家自研模块助力分割;…...
【Qt无门槛入门】信号以及信号机制及其常用控件(1)
信号与信号槽 信号源:由哪个控件发出的信号。 信号的类型:用户进行不同的操作,就可能出发不同的信号。 信号处理的方式:槽(slot)某个对象接收到这个信号之后,就会做一些相关的处理动作。但是Qt对象不会无故…...
【python】爬取百度热搜排行榜Top50+可视化【附源码】【送数据分析书籍】
英杰社区https://bbs.csdn.net/topics/617804998 一、导入必要的模块: 这篇博客将介绍如何使用Python编写一个爬虫程序,从斗鱼直播网站上获取图片信息并保存到本地。我们将使用requests模块发送HTTP请求和接收响应,以及os模块处理文件和目录操…...
排序(插入排序)
现在,我们学习了之前数据结构的部分内容,即将进入一个重要的领域:排序,这是一个看起来简单,但是想要理清其中逻辑并不简单的内容,让我们一起加油把! 排序的概念及其运用 排序的概念 排序&…...
Spring MVC 请求流程
SpringMVC 请求流程 一、DispatcherServlet 是一个 Servlet二、Spring MVC 的完整请求流程 Spring MVC 框架是基于 Servlet 技术的。以请求为驱动,围绕 Servlet 设计的。Spring MVC 处理用户请求与访问一个 Servlet 是类似的,请求发送给 Servlet…...
鸿蒙ArkUI 宫格+列表+HttpAPI实现
鸿蒙ArkUI学习实现一个轮播图、一个九宫格、一个图文列表。然后请求第三方HTTPAPI加载数据,使用了axios鸿蒙扩展库来实现第三方API数据加载并动态显示数据。 import {navigateTo } from ../common/Pageimport axios, {AxiosResponse } from ohos/axiosinterface IDa…...
【C++中的STL】常用算法1——遍历算法和查找算法
常用算法1 常用算法常用遍历算法for_eachtransform 常用查找算法findfind_ifadjacent_findbinary_searchcountcount_if 常用算法 算法主要是由头文件<algorithm><functional><numeric>组成。 <algorithm>是所有STL头文件中最大的一个,范围…...
Jmeter性能测试: 基于JDK 21 安装 Jmeter 5.6.3
目录 一、实验 1.环境 2.JDK下载 3.Jmeter下载 4.Windows安装JDK 21 5.Windows安装Jmeter 5.6.3 6.Linux安装JDK 21 7.Linux安装Jmeter 5.6.3 二、问题 1. Linux 的profile、bashrc、bash_profile文件有哪些区别 一、实验 1.环境 (1)主机 表…...
Linux命令-apropos命令(在 whatis 数据库中查找字符串)
补充说明 apropos命令 在一些特定的包含系统命令的简短描述的数据库文件里查找关键字,然后把结果送到标 准输出。 如果你不知道完成某个特定任务所需要命令的名称,可以使用一个关键字通过Linux apropos实用程 序来搜索它。该实用程序可以搜索关键字并且…...
【算法】解决动态规划问题的通用步骤思路及示例算法:打家劫舍【动态规划】
动态规划(Dynamic Programming,简称DP)是一种解决问题的算法设计技术,通常用于优化问题。它通过将问题分解为更小的子问题,并解决这些子问题,然后合并它们的解决方案来解决原始问题。动态规划通常用于具有重叠子问题和最优子结构性质的问题。 动态规划的主要思想是避免重…...
蓝桥杯之即约分数
求1~N的所有即约分数 公约数求法:可以使用欧几里得除法求得公约数 算法原理: a,b为两个整数,a>b a除以b的商q1和余数r1 如果r1为0,则最大公约数就为b 如果不为0,则继续使用b除以r取商为q2,余r2 如果r2为0࿰…...
Pointnet++改进优化器系列:全网首发Sophia优化器 |即插即用,实现有效涨点
简介:1.该教程提供大量的首发改进的方式,降低上手难度,多种结构改进,助力寻找创新点!2.本篇文章对Pointnet++特征提取模块进行改进,加入Sophia优化器,提升性能。3.专栏持续更新,紧随最新的研究内容。 目录 1.理论介绍 2.修改步骤 2.1 步骤一 2.2 步骤二 2.3...
1.27回溯(中等)
1.全排列 全排列 II 1.给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 2.给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。 示例 1: 输入:nums [1,2,3…...
sql管理工具archery简介
在平时的工作过程中,我们肯定会遇到使用sql平台的场景,业内也有很多工具,类似阿里云的dms,但是这个是和云厂商绑定的,我们可能一般没有用到阿里云组件就比较困难了,那还有什么选项了,经过调研&a…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...
理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...
2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...
Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...
IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...
QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...
全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...
