拦截器(springboot)

1、拦截器介绍

在SpringBoot中,拦截器是一种用于拦截请求并在处理请求之前或之后执行特定操作的机制。
拦截器可以用于实现一些通用的功能,例如身份验证、日志记录、性能监控等。
Springboot中的拦截器是通过实现HandlerInterceptor接口来实现的,该接口定义了三个方法:
(1)preHandle:在请求处理之前调用,可以进行一些前置处理逻辑,如果该方法返回false,则请求将被中断,不再继续处理;
(2)postHandle:在请求处理之后调用,但在试图渲染之前。可以对请求的结果进行进一步的处理或修改;
(3)afterCompletion:在整个请求完成之后调用,包括试图渲染完成,可以进行一些资源清理操作。

2、使用拦截器的基本思路

创建一个类,并实现HandlerInterceptor接口,并重写上述的三个方法,然后再配置类中注册该拦截器。基本代码如下:
(1)拦截器

@Component  //该注解是将该拦截器声明为一个Spring组件,以便Springboot能够自动扫描并将其纳入管理。
public class MyInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {// 在请求处理之前进行拦截处理return true; // 返回true表示继续执行请求,返回false表示中断请求}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {// 在请求处理之后进行拦截处理,但在视图渲染之前}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {// 在整个请求完成之后进行拦截处理,包括视图渲染完成}
}

(2)配置类中注册该拦截器

@Configuration
public class WebConfig implements WebMvcConfigurer {//导入拦截器@Autowiredprivate MyInterceptor myInterceptor;@Overridepublic void addInterceptors(InterceptorRegistry registry) {//        添加拦截器
//        registry.addInterceptor(interceptor):该方法用来添加拦截器
//        .addPathPatterns("/**"):该方法指定需要拦截的请求路径
//        .excludePathPatterns("/login","/register"):该方法可以配置排除路径registry.addInterceptor(myInterceptor).addPathPatterns("/**"); // 拦截所有请求}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/757205.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Halcon学习笔记]机器视觉缺陷检测常用方法对比总结

1、介绍 缺陷检测时机器视觉需求中最复杂难度较大的一类需求。究其原因,主要是在项目开发过程中首先要保证检测的稳定性和精度,又要实现缺陷检测的通用性,常见的缺陷:凹凸、污点瑕疵、划痕、裂缝、伤痕、毛刺等等类型种类繁杂&am…

uniapp 使用sqlite时无法读取到db文件中的数据

问题 {“code”:-1404,“message”:“android.database.sqlite.SQLiteException: no such table: user (Sqlite code 1): , while compiling: select * from user, (OS error - 2:No such file or directory),http://ask.dcloud.net.cn/article/282”} at pages/index/index.vu…

Python内置对象

Python是一种强大的、动态类型的高级编程语言,其内置对象是构成程序的基础元素。Python的内置对象包括数字、字符串、列表、元组、字典、集合、布尔值和None等,每种对象都有特定的类型和用途。 01 什么是内置对象 这些对象是编程语言的基础构建块&…

STP环路避免实验(思科)

华为设备参考:STP环路避免实验(华为) 一,技术简介 Spanning Tree Protocol(STP),即生成树协议,是一种数据链路层协议。主要作用是防止二层环路,并自适应网络变化和故障…

【AI案例】做AI视频如何实现数字人实时口型同步

首先,这个方案提供了一个令人瞩目的实时唇语同步API。这一技术能够将任何视频与任何语言的音频进行视觉配音,而且无需繁琐的训练过程。这样的功能极大地拓宽了视频内容的传播范围,使得无论语言背景如何,人们都能够理解并享受视频内容。 其次,这个API的适用性非常广泛,无…

Unity2D实现鼠标拖动物体移动(简单好抄)

1.新建脚本,并将脚本拖到你想要拖动的物体上即可 using System.Collections; using System.Collections.Generic; using Unity.VisualScripting; using UnityEngine;public class text : MonoBehaviour {private Vector3 offset;public int x 1;void OnMouseDown(…

第十三届“中关村青联杯”全国研究生数学建模竞赛-A题:多无人机协同任务规划(续)

目录 7.2 模型三的建立与求解 8 问题四:针对远程雷达的分步优化模型 9 问题五:模型分析

【Pandas】(2)DataFrame

Pandas 的 DataFrame 是一个二维的、大小可变的、异质型表格数据结构,带有标签化的轴(行和列)。简单来说,你可以将 DataFrame 看作是一个 Excel 表格或 SQL 数据表,在数据分析和数据处理中非常有用。 创建 DataFrame DataFrame 可以通过多种方式创建,最常用的是直接从字…

SAP前台处理:物料主数据创建<MM01>之销售视图

一、背景: 终于来到了物料主数据,我觉得物料账是SAP最重要的一项发明,也一直是SAP的一项重要优势,物料账记录了一个个物料的生生不息; 本章主要讲解物料主数据和财务相关的主要内容:这里特别提示由于作者…

matlab软件基础

第1讲 MATLAB初步 MATLAB是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。MATLAB和Mathematica、Maple并称为三…

Linux 发布项目到OpenEuler虚拟机

后端:SpringBoot 前端:VUE3 操作系统:Linux 虚拟机:OpenEuler 发布项目是需要先关闭虚拟机上的防火墙 systemctl stop firewalld 一、运行后端项目到虚拟机 1、安装JDK软件包 查询Jdk是否已安装 dnf list installed | grep jd…

Redis数据结构对象中的类型检查与命令多态、内存回收

类型检查与命令多态 概述 redis中用于操作键的命令基本上可以分为两种类型。其中一种命令可以对任何类型的键执行,比如说DEL命令、EXPIRE命令、RENAME命令、TYPE命令、OBJECT命令等. 而另一种命令只能对特定类型的键执行,比如说 1.SET、GET、APPEND、…

OPTEE v3.20.0 FVP环境搭建

目录 一、前提条件 二、下载fvp代码 三、下载工具链 四、下载Foundation_Platform FVP平台 五、编译及运行 一、前提条件 1、安装如下的依赖工具 sudo apt-get install android-tools-adb android-tools-fastboot autoconf \ automake bc bison build-essential ccache c…

windows管理github代码

资料 windows SSH下载github

预处理 #pragma 命令详解

目录 1.引言 2.#pragma once 3.#pragma waring(...) 4.#pragma comment 4.1.lib 4.2.linker 5.#pragma region … /endregion … 6.#pragma optimize 7.#pragma message (message string) 8.#pragma omp parallel for 9.#pragma pack([ show ] |…

51单片机—AD/DA

目录 1.AD/DA元件介绍 2.运算放大器 3.原理分析 4.性能指标 5.内部芯片时序 6.程序实操 7.原理图 1.AD/DA元件介绍 一般传感器的值会随参数的值变化,AD一般对电压进行转换,AD有多个通道,但是DA只有一个通道,且AD的运用较为广…

路由器怎么做端口映射

路由器在网络中起到了连接不同设备和提供网络服务的重要作用。端口映射是一项常见的操作,它允许外部网络中的设备通过路由器访问内部网络中的设备。我们将介绍如何在路由器上进行端口映射的设置。 理解端口映射 在开始操作之前,我们需要了解一些基本概念…

反射 Reflection

反射 反射的概念 反射机制允许程序在执行期借助于ReflectionAPI取得任何类的内部信息(比如成员变量,构造器,成员方法等等),并能操作对象的属性及方法。反射在设计模式和框架底层都会用到加载完类之后,在堆中就产生了一个Class类型…

前端之各浏览器间差异和平台的兼容性问题

目录 这些差异和兼容性问题主要源于以下方面为解决这些兼容性问题,常用的做法包括浏览器的差异主要体现在它们对于 HTML、CSS 和 JavaScript 的解析和渲染上。为了处理不同浏览器和平台的兼容性问题,我们可以采取以下几个步骤:IE、Firefox、S…

GET请求和POST请求

GET请求和POST请求是HTTP协议中最常用的两种请求方法,它们在Web开发中起着至关重要的作用。 GET请求 用途:用于请求指定资源的表示形式,通常用于获取数据。幂等性:GET请求是幂等的,即多次请求同一资源应该返回相同的…