SpringBoot3-实现和注册拦截器

1、pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.atguigu</groupId><artifactId>pro28-springboot-interceptor</artifactId><version>1.0-SNAPSHOT</version><!--所有springboot项目都必须继承自 spring-boot-starter-parent --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.0.5</version><relativePath />  <!-- 根据情况添加 --></parent><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><!--web开发的场景启动器 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--导入配置处理器,配置文件自定义的properties配置都会有提示--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency></dependencies>
</project>

2、实现HandlerInterceptor接口

package com.atguigu.interceptor;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
@Component
public class MyInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println("preHandle...");return true;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {System.out.println("postHandle...");}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {System.out.println("afterCompletion...");}
}

3、实现WebMvcConfigurer接口

package com.atguigu.config;
import com.atguigu.interceptor.MyInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class MyMvcConfig implements WebMvcConfigurer {@Autowiredprivate MyInterceptor myInterceptor;@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(myInterceptor).addPathPatterns("/**").excludePathPatterns("/hello/a/b");}
}

4、HelloController.java

package com.atguigu.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/hello")
public class HelloController {@GetMapping("/a/b")public String h01() {return "Hello world!";}@GetMapping("/b")public String h02() {return "hi world!";}@GetMapping("/c")public String h03() {return "bye bye!";}
}

5、MyApplication.java

package com.atguigu;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MyApplication {public static void main(String[] args) {SpringApplication.run(MyApplication.class);}
}

 6、HandlerInterceptor

HandlerInterceptor是Spring MVC框架中的一种拦截器,类似于Servlet开发中的过滤器Filter。它用于在请求处理器执行前后进行预处理和后处理,可以用于实现权限检查、性能监控等操作。

在Spring MVC中,拦截器是一个接口,需要实现preHandle、postHandle和afterCompletion方法。其中,preHandle方法在请求处理器处理请求之前执行,可以进行编码、安全控制、权限校验等处理;postHandle方法在请求处理器处理请求之后、渲染视图之前执行,可以通过modelAndView对模型数据进行处理或对视图进行处理;afterCompletion方法在请求处理完成后执行,可以进行资源清理等工作。

在实现拦截器时,需要将拦截器注册到Spring MVC的配置文件中,并指定需要拦截的URL和处理器。当请求匹配到指定的URL时,拦截器就会自动执行。

总之,HandlerInterceptor是Spring MVC中非常有用的工具,可以用于实现各种处理操作,提高Web应用程序的性能和安全性。

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

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

相关文章

安卓https抓包(提供软件+视频)

遇到的问题 因为android7.0以上机制不在信任用户证书&#xff0c;导致https协议无法抓包&#xff0c;除非把证书装在系统信任的证书里&#xff0c;此时手机需要root权限&#xff0c;但是如何不需要手机root也能抓包成功呢&#xff1f;我们采用virtualxposedjusttrustme来解决&…

图灵测试:人工智能的终极挑战

图灵测试&#xff1a;人工智能的终极挑战 一、引言 在人工智能的发展历程中&#xff0c;图灵测试一直被视为一个重要的里程碑。这个由英国计算机科学家艾伦图灵提出的实验&#xff0c;旨在评估人工智能是否能够像人一样思考和表达&#xff0c;为人类与机器智能之间的界限设立了…

Chrome浏览器调整搜索标签页按钮位置

地址栏输入 chrome://flags 搜索 chrome-refresh-2023 第一项 修改为Enabled 标签搜索页按钮出现在chrome的左上角 修改为Default 标签搜索页按钮出现在chrome的右上角 修改完成后&#xff0c;点击Relaunch&#xff0c;重启浏览器&#xff0c;修改生效。

Python+Appium自动化测试大法,让你的测试效率飞升,绝不等待!封装元素定位方法超详解!

在appium自动化测试脚本运行的过程中&#xff0c;因为网络不稳定、测试机或模拟器卡顿等原因&#xff0c;有时候会出现页面元素加载超时元素定位失败的情况&#xff0c;但实际这又不是bug&#xff0c;只是元素加载较慢&#xff0c;这个时候我们就会使用元素等待的方法来避免这种…

包与字符串

包是分类管理的需要&#xff0c;建立包用:package&#xff0c;包中类的引用import 学习使用javaAPI中的字符串类String&#xff0c;学会其成员方法的使用 &#xff08;必看&#xff09;eclipse包的分层等级结构设置 因为eclipse的包的结构默认是平行等级的&#xff0c;所以要手…

python多进程和多线程

在知道和使用多进程和多线程之前 需要知道&#xff0c;进程是什么线程是什么&#xff1f; 进程&#xff1a;是计算机中正在运行的程序的实例。它是操作系统调度和管理的基本单位&#xff0c;包含程序代码、数据和执行状态等信息。*每个进程都有自己的内存空间和资源&#xff0…

观察者模式来啦

观察者模式本质上就两个关键的操作&#xff0c;观察者关心自己订阅的主题&#xff0c;主题数据有变化需要通知所有的观察者。 举个&#x1f330; 在武侠甚至玄幻小说中&#xff0c;天人合一一直都是一个重要的&#xff0c;无法缺失的概念。天人合一一直以来都是天骄的专属名词…

Java不可变集合

Java不可变集合 不可变集合&#xff1a;也就是不可以被修改的集合 创建不可变集合的应用场景 ●如果某个数据不能被修改&#xff0c;把它防御性地拷贝到不可变集合中是个很好的实践。 ●当集合对象被不可信的库调用时&#xff0c;不可变形式是安全的。 简单理解&#xff1…

ArcGIS Enterprise on Kubernetes 11.1安装示例

博客主页&#xff1a;https://tomcat.blog.csdn.net 博主昵称&#xff1a;农民工老王 主要领域&#xff1a;Java、Linux、K8S 期待大家的关注&#x1f496;点赞&#x1f44d;收藏⭐留言&#x1f4ac; 目录 安装前置条件基本安装解压文件生成秘钥执行安装脚本 配置DNS方法一方法…

【Linux 进度条小程序】缓冲区+回车换行

文章目录 回车与换行缓冲区举个栗子fflush函数倒计时小程序进度条小程序 回车与换行 回车和换行是不同的两个概念 回车&#xff1a;\r 使光标回到本行行首。 换行&#xff1a;\n使光标下移一格。 一般我们的键盘上的Enter键是回加换行键 在c语言中 \n 表示回车换行 效果和Ent…

代码随想Day24 | 回溯法模板、77. 组合

理论基础 回溯法和递归不可分割&#xff0c;回溯法是一种穷举的方法&#xff0c;通常需要剪枝来降低复杂度。回溯法有一个选择并退回的过程&#xff0c;可以抽象为树结构&#xff0c;回溯法的模板如下&#xff1a; void backtracking(参数) {if (终止条件) {存放结果;return;}…

Java动态代理实现与原理详细分析

Java动态代理实现与原理详细分析 关于Java中的动态代理&#xff0c;我们首先需要了解的是一种常用的设计模式–代理模式&#xff0c;而对于代理&#xff0c;根据创建代理类的 时间点&#xff0c;又可以分为静态代理和动态代理。 1、代理模式 代理模式是常用的java设计模式&…

graph neural network 和 geometric neural network

一、graph neural network 处理图结构数据。 学习图中节点和边的表示。 任务&#xff1a;节点分类、图分类、链接预测。 核心思想&#xff1a;通过迭代地聚合节点的邻居信息来更新每个节点的表示&#xff0c;从而捕捉图结构中的局部和全局信息。 二、geometric neural netw…

从cot到agent的survey视频笔记

参考视频&#xff1a; 从CoT到Agent的列车即将发车&#xff0c;请各位旅客尽快上车 姚杳 由于总结不易&#xff0c;所以暂时都是粉丝可见&#xff0c;如果总结的不好见谅。 核心理解点总结&#xff1a; paradigm shifts of cot when cot&#xff1f;推理多的任务时 how cot…

是否曾经想过关闭Microsoft账户,那么你来对地方了

本文介绍如何使用web浏览器删除Microsoft账户。 如果你删除Microsoft帐户&#xff0c;你将无法访问所有Microsoft应用程序和服务&#xff0c;包括Xbox网络。 如何永久删除Microsoft帐户 完全关闭你的Microsoft帐户的唯一方法是访问Microsoft网站。在开始之前&#xff0c;你应…

ssh远程连接服务器

目录 一、远程连接服务器简介 1、什么是远程连接服务器 2、远程连接服务器的功能 3、远程连接服务器的类型&#xff08;以登录的连接界面来分类&#xff09; 4、文字接口连接服务器 二、连接加密技术简介 安全套接层&#xff1a; 1、版本协商阶段 2、密钥和算法协商阶…

初识MQ——消息队列技术选型

文章目录 同步和异步通讯同步通讯异步通讯 技术对比 同步和异步通讯 微服务间通讯有同步和异步两种方式&#xff1a; 同步通讯&#xff1a;就像打电话&#xff0c;需要实时响应。 异步通讯&#xff1a;就像发邮件&#xff0c;不需要马上回复。 两种方式各有优劣&#xff0c…

解决vue3使用iconpark控制台预警提示问题

前言 最近在项目中使用 iconpark-icon 来管理图标&#xff0c;一切都很顺利&#xff0c;引入链接后&#xff0c;图标正常显示&#xff0c;没有报错。但是控制台却发出了预警信息。 [Vue warn]: Failed to resolve component: iconpark-icon If this is a native custom eleme…

要求CHATGPT高质量回答的艺术:提示工程技术的完整指南—第 11 章:知识整合提示

要求CHATGPT高质量回答的艺术&#xff1a;提示工程技术的完整指南—第 11 章&#xff1a;知识整合提示 这种技巧利用模型已有的知识来整合新信息或连接不同的信息。 这种方法适用于将现有知识与新信息结合起来&#xff0c;从而更全面地理解特定主题。 如何在 ChatGPT 中使用…

redis------在java中操作redis

Redis&#xff08;非关系型数据库&#xff09;简介 redis下载 点击即可进入redis中文网进行下载 百度网盘windows版本 提取码 DMH6 redis主要特点 基于内存存储&#xff0c;读写性能高 适合存储热点数据&#xff08;热点商品、资讯、新闻&#xff09; 企业应用广泛 redis不同…