拦截器在SpringBoot中使用,HandlerInterceptor,WebMvcConfigurer

img

拦截器在Controller之前执行。

用于权限校验,日志记录,性能监控

在SpringBoot中使用

  1. 创建拦截器类:首先,创建一个Java类来实现拦截器逻辑。拦截器类应该实现Spring提供的HandlerInterceptor接口。
  2. 实现拦截器方法:拦截器接口通常定义了三个方法:
  • preHandle 在方法调用之前执行逻辑,例如记录请求的开始时间
  • postHandle 在方法调用之后执行逻辑,但在视图渲染之前执行
  • afterCompletion 在整个请求处理完成后执行,用于资源清理等工作

你可以在这些方法中添加你需要的逻辑,比如在请求处理之前进行权限验证、在请求处理后记录日志等。

3.注册拦截器:将拦截器注册到Spring Boot应用程序中,使其生效。你可以通过配置类或者实现WebMvcConfigurer接口来完成拦截器的注册。

1.创建拦截器类实现HandlerInterceptor接口:

import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;public class LoggingInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {// 在方法调用之前执行逻辑,例如记录请求的开始时间System.out.println("Request received at: " + new Date());return true; // 放行请求}@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.注册拦截器:在Spring Boot中,可以通过配置类来注册拦截器。

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configurationpublic class WebMvcConfig implements WebMvcConfigurer {@Overridepublic void addInterceptors(InterceptorRegistry registry) {// 注册拦截器,并指定拦截的URL路径registry.addInterceptor(new LoggingInterceptor()).addPathPatterns("/**");}}

在上述示例中,我们创建了一个LoggingInterceptor拦截器,并且使用addInterceptor方法将其添加到拦截器注册表中,然后通过addPathPatterns指定要拦截的URL路径为"/**",表示拦截所有请求。

这样,在每个请求被处理前,都会先执行LoggingInterceptor中的preHandle方法,实现记录请求开始时间的功能。

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

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

相关文章

【Ubuntu】Ubuntu 22.04 升级 OpenSSH 9.3p2 修复CVE-2023-38408

升级原因 近日Openssh暴露出一个安全漏洞CVE-2023-38408,以下是相关资讯: 一、漏洞详情 OpenSSH是一个用于安全远程登录和文件传输的开源软件套件。它提供了一系列的客户端和服务器程序,包括 ssh、scp、sftp等,用于在网络上进行…

visual studio 生成dll文件以及修改输出dll文件名称操作

目录 visual studio 生成dll文件以及修改dll文件名称一、准备测试代码二、设置导出dll属性三、生成dll文件 .lib .dll .pdb 的简单介绍dll文件使用方式lib文件使用方式1、动态链接 (原理)2、静态链接: visual studio 生成dll文件以及修改dll文…

基于DiscordMidjourney API接口实现文生图

https://discord.com/api/v9/interactions 请求头: authorization:取自 浏览器中discord 文生图请求头中的 authorization 的值 Content-Type:application/json 请求体: {“type”:2,“application_id”:“93692956130267xxxx”,“guild_id”:“1135900…

Qt Creator中designer使用QWebEngine异常排查

Qt Creator中designer使用QWebEngine异常排查 1、前提背景 最近由于版权的原因,我们采取了自编译的Qt Creator。编译完成之后启动Qt Creator刚开始一切都是很顺利。 但是在Creator中打开designer,使用QWebEngine控件就发生了异常,Qt Creat…

「从零入门推荐系统」22:chatGPT、大模型在推荐系统中的应用

作者 | gongyouliu 编辑 | gongyouliu 提示:全文2.5万字,预计阅读时长2小时,可以先收藏再慢慢阅读。 我们在上一章介绍了chatGPT、大模型的基本概念、核心技术原理等基础知识,有了这些背景知识的铺垫,下面我们来介绍ch…

复现sci顶刊中的画中画(局部细节放大)

简介 小编在撰写学术论文时,为了突出所提模型的优越性,你可以通过放大图形中的局部位置来进行比较。尽管从全局来看,各个方法的拟合效果都还不错,但通过放大图中的特定区域,可以更清楚地展示所提模型相对于其他模型的…

HTML5中Canvas学习笔记:Canvas

目录 一、HTML中Canvas画图strokeStyle 和 fillStyle 的区别是什么? 二、如何设置一幅canvas图中某个颜色透明? 三、H5 canvas中strokeRect参数如果是小数,如何处理? 四、H5 Canvas中如何画圆角矩形框? 一、HTML中…

海外应用商店优化实用指南之关键词

和SEO一样,关键词是ASO中的一个重要因素。就像应用程序标题一样,在Apple App Store和Google Play中处理应用程序关键字的方式也有所不同。 关键词研究。 对于Apple,我们的所有关键词只能获得100个字符,Google Play没有特定的关键…

STL空间配置器入门

STL简介   STL(Standard Template Library,标准模板库),从根本上说,STL是一些“容器”的集合,这些“容器”有list,vector,set,map等,STL也是算法和其他一些组件的集合。 谈及组件&#xff0c…

8.5day06 框架基础--反射+注解

文章目录 反射获取类的各种信息获取类的字节码文件 注解元注解 复习redis两道算法题 摆烂了,不想学啦!!! 反射 反射主要用来做框架; 学习内容 获取类的各种信息 第一步 加载类,获取类的字节码文件 第二步 获取类的…

IDEA基础使用

IDEA基础使用 1、IDEA中显示用法和用户截图展示有调用显示无调用显示 对应方法 2、如何找出项目中所有不被调用方法截图展示对应方法 3、常用代码(Code)说明及快捷键:4、未完待续待日后更新。。。总结:欢迎指导,也祝码友们代码越来越棒,技术越…

AMEYA360:瑞萨电子MCU和MPU产品线将支持Microsoft Visual Studio Code

全球半导体解决方案供应商瑞萨电子宣布其客户现可以使用Microsoft Visual Studio Code(VS Code)开发瑞萨全系列微控制器(MCU)和微处理器(MPU)。瑞萨已为其所有嵌入式处理器开发了工具扩展,并将其…

月报总结|Moonbeam 7月份大事一览

炎炎夏日,Moonbeam于越南举办了线下交流会,在EthCC 2023和以太坊社区成员共同讨论多链应用,在Polkadot Decoded中分享了Moonbeam的与众不同之处。 Bear Necessities Hackathon也于本月圆满结束,选出了每个赛道最杰出的项目&#…

CMake:检测python解释器和python库

CMake:检测python解释器和python库 导言检测python解释器CMakeLists.txt输出附录 检测python库项目结构CMakeLists.txt相关源码附录 导言 python是一种非常流行的语言。许多项目用python编写的工具,从而将主程序和库打包在一起,或者在配置或构建过程中使…

MCU的类型和应用领域简介

MCU(Microcontroller Unit)根据存储器类型可分为无片内ROM型和带片内ROM型。无片内ROM型的芯片需要外接EPROM才能应用,而带片内ROM型则有不同的子类型,如片内EPROM型、MASK片内掩模ROM型和片内Flash型。 MCU还可以按照用途分为通…

Cesium 实战教程 - 调整 3dtiles 倾斜摄影大小

Cesium 实战教程 - 调整 3dtiles 倾斜摄影大小 核心代码完整代码在线示例 之前由于误解遇到一个特殊的需求:想要把三维球上叠加倾斜摄影进行自由放大缩小,跟随地图的缩放进行缩放。 后来经过搜索、尝试,终于实现了需求。 但是,后…

用Abp实现找回密码和密码强制过期策略

用户找回密码,确切地说是重置密码,为了保证用户账号安全,原始密码将不再以明文的方式找回,而是通过短信或者邮件的方式发送一个随机的重置校验码(带校验码的页面连接),用户点击该链接&#xff0…

SpringBoot 日志文件

一、日志的作用 日志是程序的重要组成部分,想象一下,如果程序报错了,不让你打开控制台看日志,那么你能找到报错的原因吗 答案是否定的,写程序不是买彩票,不能完全靠猜,因此日志对于我们来说&a…

C语言数组笔试题(详解)

目录 插入知识: 一.指向函数指针数组的指针 二.回调函数 什么是回调函数? 三.数组笔试题 个人名片: 🐼作者简介:一名乐于分享在学习道路上收获的大二在校生🐻‍❄个人主页:GOTXX &#x1f4…

【Apollo学习笔记】—— 相机仿真

文章目录 前言相关代码整理 测试实践文件目录包管理BUILD文件以及cyberfile.xml文件源程序BUILD运行结果其他参考CameraOutput channels启动camera驱动启动camera video compression驱动 前言 本文是对Cyber RT的学习记录,文章可能存在不严谨、不完善、有缺漏的部分&#xff0…