Springboot中创建拦截器

目录

目的

实现过程

        1、创建拦截器

        2、注册拦截器

完整代码


目的

        在Springboot项目中创建拦截器,在进入Controller层之前拦截请求,可对拦截到的请求内容做响应处理,如:校验请求参数、验证证书等操作;

实现过程

        1、创建拦截器

        首先自定义创建一个类,然后使用该类实现HandlerInterceptor接口并实现接口中的preHandle、postHandle、afterCompletion方法;结构如下图所示:

     HandlerInterceptor接口中的方法作用和使用场景:

  1. preHandle() 方法:

    • 作用:在请求处理之前执行的方法。可以进行一些前置处理逻辑,例如权限验证、日志记录等。
    • 使用场景:适用于需要在请求处理之前进行拦截和处理的场景,例如身份验证、请求参数校验等。
  2. postHandle() 方法:

    • 作用:在请求处理之后执行的方法。可以对处理结果进行一些后置处理,例如添加返回结果信息、记录请求执行时间等。
    • 使用场景:适用于需要在请求处理之后进行拦截和处理的场景,例如添加公共返回信息、请求结果统计等。
  3. afterCompletion() 方法:

    • 作用:在请求完成后执行的方法。无论请求成功与否,都会执行该方法。可以进行资源释放和清理操作。
    • 使用场景:适用于需要在请求完成后进行资源释放和清理的场景,例如关闭数据库连接、释放文件资源等。
  • 鉴权拦截:在 preHandle() 方法中进行用户身份验证,根据验证结果决定是否放行请求。
  • 日志记录:在 postHandle() 方法中记录请求的处理结果和执行时间,用于统计和分析。
  • 资源释放:在 afterCompletion() 方法中释放数据库连接、关闭文件资源,确保资源的正确释放。

        

        2、注册拦截器

                自定义创建一个类,然后使用该类实现WebMvcConfigurer接口并实现接口中的addInterceptors防范;结构如下图所示:

        addInterceptor():将需要注册的拦截器放在该方法中;

        addPathPatterns():将需要被拦截的请求配置在该方法中,存在多个时可使用逗号间隔;

        excludePathPatterns():将需要放行的请求配置在该方法中,存在多个时可使用逗号间隔;

完整代码

    可以参考以下示例的完整代码Springboot中拦截GET请求获取请求参数验证合法性icon-default.png?t=N6B9https://blog.csdn.net/weixin_45151960/article/details/132184917?spm=1001.2014.3001.5501

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

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

相关文章

vivado tcl创建工程和Git管理

一、Tcl工程创建 二、Git版本管理 对于创建完成的工程需要Git备份时,不需要上传完整几百或上G的工程,使用tcl指令创建脚本,并只将Tcl脚本上传,克隆时,只需要克隆tcl脚本,使用vivado导入新建工程即可。 优…

Java基础篇--基本数据类型

目录 前言: 内置数据类型 类型默认值 示例: 内置数据类型转换 自动类型转换(隐式类型转换): 强制类型转换(显式类型转换): 隐含强制类型转换: 引用类型 前言: …

7个最先进的3D模型生成式AI大模型【AIGC】

AI正在不同的行业中出现,我们对 3D 资产生成的前景感到兴奋。 对于游戏开发商和工作室来说,3D 资产通常是开发过程中最棘手的部分之一,容易出现瓶颈。 生产一个模型的成本从 60 美元到 1500 美元不等,需要 2 到 10 周的时间来回制…

多个配置WebMvcConfigurationSupport失效问题

最近在项目中用类继承WebMvcConfigurationSupport实现拦截器 Configuration RequiredArgsConstructor public class SpringWebSupport extends WebMvcConfigurationSupport {private final ProjectInterceptor projectInterceptor;// 拦截器 //设置拦截器对象和拦截请求Ove…

Vue3 + Ts + Vite 封装一套企业级axiso全流程

前期回顾 从零搭建 Vue3 VIte Ts 项目 —— 并集成eslint 、prettier、stylelint、husky、lint-staged、pinia、axios、loding、动态路由…_彩色之外的博客-CSDN博客 实现功能: 取消重复请求:完全相同的接口在上一个pending状态时,自动取…

企业服务器被devos勒索病毒攻击后怎么处理,devos勒索病毒如何攻击的

众所周知,科学技术是第一生产力,科学技术的发展给企业与人们的生活带来了极大变化,但随之而来的网络安全威胁也不断增加。最近,我们收到很多企业的求助,企业的计算机服务器遭到了devos勒索病毒的攻击,导致企…

oracle积累增量和差异增量

积累增量和差异增量: 对于 RMAN 来说,积累增量备份和差异增量备份都是增量备份的一种形式,它们之间的区别在于备份的范围和备份集的方式。 积累增量备份:在进行积累增量备份时,RMAN 会备份自最后一次完全备份或增量备…

【Mybatis】调试查看执行的 SQL 语句

1. 问题场景: 记录日常开发过程中 Mybatis 调试 SQL 语句,想要查看Mybatis 中执行的 SQL语句,导致定位问题困难 2. 解决方式 双击shift找到mybatis源码中的 MappedStatement的getBoundSql()方法 public BoundSql getBoundSql(Object para…

selenium爬虫,配置谷歌浏览器的driver

用selenium爬虫时,明明已经安装了selenium模块,程序却运行不了。在使用selenium之前必须先配置浏览器对应版本的webdriver 本文主要涉及驱动有问题driver 网上有很多手动的方法(查看谷歌浏览的版本然后在其他博主分享的webdriver中下载与自己…

Mybatis Plus条件构造器LambdaQueryWrapper

官网地址 Mybatis Plus条件构造器LambdaQueryWrapper 目前数据库数据情况,User表 iduser_namebirthdaysexaddress1张12023-08-10男123163.com2李12023-08-10女222163.com3张22023-08-10女999163.com4张32023-08-10男9994qq.com ## 简单介绍 如何使用各种场景 方法…

论文笔记:SUPERVISED CONTRASTIVE REGRESSION

2022arxiv的论文,没有中,但一作是P大图班本MIT博,可信度应该还是可以的 0 摘要 深度回归模型通常以端到端的方式进行学习,不明确尝试学习具有回归意识的表示。 它们的表示往往是分散的,未能捕捉回归任务的连续性质。…

gateway做token校验

本文使用springcloud的gateway做token校验 登录的本质&#xff1a;拿用户名和密码 换 token。 token会返回给浏览器&#xff08;存储&#xff09;&#xff0c;当访问的时候&#xff0c;携带token 发起请求。 token校验图 引入redis依赖 <dependency><groupId>or…

2000-2022年全国地级市乡村振兴测算数据(30个指标)

1、时间&#xff1a;2000-2022年 2、来源&#xff1a;城市统计NJ、各地区统计NJ 3、范围&#xff1a;地级市 4、指标&#xff1a;乡村振兴指数、人均农业机械总动力&#xff08;千瓦&#xff09;、粮食综合生产能力&#xff08;万吨&#xff09;、农业劳动生产率&#xff08…

Vue2:路由

Vue2&#xff1a;路由 Date: May 28, 2023 Sum: vue-router基本使用、高级用法 单页面应用程序 概念&#xff1a;SPA【Single Page Application】是指所有的功能都在一个html页面上实现 案例&#xff1a; 单页应用网站&#xff1a; 网易云音乐 https://music.163.com/ 多页…

Idea使用Docker插件实现maven打包自动构建镜像

Docker 开启TCP 服务 vi /lib/systemd/system/docker.service改写以下内容 ExecStart/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock重启服务 #重新加载配置文件 systemctl daemon-reload #重启服务 systemctl restart docker.service此时docker已…

大数据课程I1——Kafka的概述

文章作者邮箱&#xff1a;yugongshiyesina.cn 地址&#xff1a;广东惠州 ▲ 本章节目的 ⚪ 了解Kafka的概念&#xff1b; ⚪ 掌握Kafka的配置与启动&#xff1b; 一、简介 1. 基本概念 Apache kafka 是一个分布式数据流平台。可以从如下几个层面来理解&#x…

elasticsearch-head可视化安装

一、前言 elasticsearch-head 是用于监控 Elasticsearch 状态的客户端插件&#xff0c;包括数据可视化、执行增删改查操作等。 elasticsearch是通过API方式进行管理的&#xff0c;因此也可以使用postman等工具操作elasticsearch。 二、安装 lasticsearch-head插件是使用Jav…

C++核心编程——函数高级、类和对象

3 函数提高 3.1 函数默认参数 在C中&#xff0c;函数的形参列表中的形参是可以有默认值的。 语法&#xff1a;返回值类型 函数名 &#xff08;参数默认值&#xff09;{} 注意事项&#xff1a; 1、如果函数的参数列表中某个参数已经有了默认参数&#xff0c;那么从这个参…

cve-2021-2394 weblogic反序列化漏洞分析

前几天weblogic 7月例行更新中&#xff0c;修复了一个Rce漏洞。该漏洞性质属于绕过之前的反序列化漏洞补丁。要了解这个漏洞的原因&#xff0c;我们首先要学习其他几个漏洞的原理。 一 weblogic 反序列化绕过指南 本章节只是大概讲解一下如何绕过weblogic反序列化漏洞的补丁。…

解决selenium的“can‘t access dead object”错误

目录 问题描述 原因 解决方法 示例代码 资料获取方法 问题描述 在python执行过程中&#xff0c;提示selenium.common.exceptions.WebDriverException: Message: TypeError: cant access dead object 原因 原因是代码中用到了frame,获取元素前需要切换到frame才能定位到…