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

拦截器的简单使用

拦截器的简单使用

  • 拦截器的使用
    • 创建拦截器
      • 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&#xf…...

鸿蒙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头文件中最大的一个&#xff0c;范围…...

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.环境 &#xff08;1&#xff09;主机 表…...

Linux命令-apropos命令(在 whatis 数据库中查找字符串)

补充说明 apropos命令 在一些特定的包含系统命令的简短描述的数据库文件里查找关键字&#xff0c;然后把结果送到标 准输出。 如果你不知道完成某个特定任务所需要命令的名称&#xff0c;可以使用一个关键字通过Linux apropos实用程 序来搜索它。该实用程序可以搜索关键字并且…...

【算法】解决动态规划问题的通用步骤思路及示例算法:打家劫舍【动态规划】

动态规划(Dynamic Programming,简称DP)是一种解决问题的算法设计技术,通常用于优化问题。它通过将问题分解为更小的子问题,并解决这些子问题,然后合并它们的解决方案来解决原始问题。动态规划通常用于具有重叠子问题和最优子结构性质的问题。 动态规划的主要思想是避免重…...

蓝桥杯之即约分数

求1~N的所有即约分数 公约数求法&#xff1a;可以使用欧几里得除法求得公约数 算法原理&#xff1a; a,b为两个整数&#xff0c;a>b a除以b的商q1和余数r1 如果r1为0&#xff0c;则最大公约数就为b 如果不为0&#xff0c;则继续使用b除以r取商为q2,余r2 如果r2为0&#xff0…...

Pointnet++改进优化器系列:全网首发Sophia优化器 |即插即用,实现有效涨点

简介:1.该教程提供大量的首发改进的方式,降低上手难度,多种结构改进,助力寻找创新点!2.本篇文章对Pointnet++特征提取模块进行改进,加入Sophia优化器,提升性能。3.专栏持续更新,紧随最新的研究内容。 目录 1.理论介绍 2.修改步骤 2.1 步骤一 2.2 步骤二 2.3...

1.27回溯(中等)

1.全排列 全排列 II 1.给定一个不含重复数字的数组 nums &#xff0c;返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 2.给定一个可包含重复数字的序列 nums &#xff0c;按任意顺序 返回所有不重复的全排列。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3…...

sql管理工具archery简介

在平时的工作过程中&#xff0c;我们肯定会遇到使用sql平台的场景&#xff0c;业内也有很多工具&#xff0c;类似阿里云的dms&#xff0c;但是这个是和云厂商绑定的&#xff0c;我们可能一般没有用到阿里云组件就比较困难了&#xff0c;那还有什么选项了&#xff0c;经过调研&a…...

老旧Windows 7系统硬件适配难题的技术解决方案:开源社区驱动的扩展支持包

老旧Windows 7系统硬件适配难题的技术解决方案&#xff1a;开源社区驱动的扩展支持包 【免费下载链接】win7-sp2 UNOFFICIAL Windows 7 Service Pack 2, to improve basic Windows 7 usability on modern systems and fully update Windows 7. 项目地址: https://gitcode.com…...

Pi0大模型环境配置详解:Python 3.11+PyTorch 2.7+lerobot依赖安装

Pi0大模型环境配置详解&#xff1a;Python 3.11PyTorch 2.7lerobot依赖安装 1. 项目概述 Pi0是一个创新的视觉-语言-动作流模型&#xff0c;专门设计用于通用机器人控制任务。这个项目最大的亮点是提供了一个直观的Web演示界面&#xff0c;让用户能够通过简单的操作体验先进的…...

OFA模型处理C语言文件读写操作生成的流程图描述

OFA模型处理C语言文件读写操作生成的流程图描述 最近在整理编程教学资料时&#xff0c;我遇到了一个挺有意思的需求&#xff1a;手头有一堆描述C语言文件读写操作的流程图&#xff0c;需要为每一张图配上清晰、准确的文字说明。这活儿听起来简单&#xff0c;做起来却挺费神&am…...

FreeRTOS定时器防抖实战:用STM32 HAL库+按键中断,告别按键连击烦恼

FreeRTOS定时器防抖实战&#xff1a;用STM32 HAL库按键中断&#xff0c;告别按键连击烦恼 在嵌入式开发中&#xff0c;按键处理看似简单却暗藏玄机。我曾在一个智能家居项目中遇到这样的尴尬场景&#xff1a;用户按下墙壁开关时&#xff0c;本该只触发一次的动作&#xff0c;由…...

保姆级教程:在Ubuntu上复现‘easy溯源’靶场,手把手教你分析反弹Shell和内网穿透痕迹

在Ubuntu上复现‘easy溯源’靶场&#xff1a;从环境搭建到痕迹分析实战指南 当你第一次接触应急响应时&#xff0c;是否曾被各种专业术语和复杂场景搞得晕头转向&#xff1f;本文将带你从零开始&#xff0c;在Ubuntu系统上完整复现一个名为easy溯源的靶场环境。这不是简单的解题…...

Mamba模型实战:如何用Python快速搭建一个长序列处理Demo(附代码)

Mamba模型实战&#xff1a;如何用Python快速搭建一个长序列处理Demo&#xff08;附代码&#xff09; 在自然语言处理和时间序列分析领域&#xff0c;处理长序列数据一直是个棘手的问题。传统Transformer架构虽然表现出色&#xff0c;但随着序列长度增加&#xff0c;其计算复杂度…...

基于遗忘因子递推最小二乘法的电池模型参数在线辨识与优化

1. 电池模型参数辨识为什么需要FFRLS算法 我第一次接触电池参数辨识是在开发一款智能硬件时&#xff0c;当时发现传统最小二乘法有个致命问题——它会把所有历史数据同等对待。这就像用算盘计算平均数时&#xff0c;不管数据是昨天还是去年的&#xff0c;都按相同权重处理。但在…...

Zotero插件安装失败?手把手教你解决版本兼容问题(以better-notes为例)

Zotero插件安装失败&#xff1f;手把手教你解决版本兼容问题&#xff08;以better-notes为例&#xff09; 学术研究离不开文献管理工具&#xff0c;Zotero作为开源免费的文献管理神器&#xff0c;凭借其强大的功能和丰富的插件生态&#xff0c;成为众多科研工作者的首选。然而…...

从理论到实践:几何完备扩散模型GCDM在SBDD任务中的实战评测与性能剖析

1. 几何完备扩散模型GCDM的核心原理 GCDM&#xff08;Geometry-Complete Diffusion Model&#xff09;作为新一代3D分子生成模型&#xff0c;其核心创新在于解决了传统方法无法有效学习分子几何特性的痛点。想象一下搭积木的场景&#xff1a;普通模型只能看到积木的颜色&#x…...

【苍穹外卖 | 篇⑥】登录流程

在牛某网看见了牛肉哥的帖子之后&#xff0c;打算向牛肉大佬学习&#xff0c;故开始书写CSDN博客&#xff0c;通过博客的方式来巩固自身知识学习。因为之前有粗略的学习了Java Web 的基础课程&#xff0c;所以博客内容主要是巩固之前学习当中的模糊点&#xff0c;以及一些自己认…...