Java课题笔记~ SpringMVC拦截器

news2024/11/19 9:25:46

SpringMVC 中的 Interceptor 拦截器,它的主要作用是拦截指定的用户请求,并进行相应的预处理与后处理。其拦截的时间点在“处理器映射器根据用户提交的请求映射出了所要执行的处理器类,并且也找到了要执行该处理器类的处理器适配器,在处理器适配器执行处理器之前”。当然,在处理器映射器映射出所要执行的处理器类时,已经将拦截器与处理器组合为了一个处理器执行链,并返回给了中央调度器。

3.1 拦截器介绍

3.1.1 拦截器的应用场景

1、日志记录:记录请求信息的日志

2、权限检查:如登录检查

3、性能检测:检测方法的执行时间

 

3.1.2 拦截器的执行原理

 

3.1.3 拦截器执行的时机

1)preHandle():在请求被处理之前进行操作

2)postHandle():在请求被处理之后,但结果还没有渲染前进行操作,可以改变响应结果

3)afterCompletion:所有的请求响应结束后执行善后工作,清理对象,关闭资源

3.1.4 拦截器实现的两种方式

1)继承HandlerInterceptorAdapter的父类

2)实现HandlerInterceptor接口,实现的接口,推荐使用实现接口的方式

3.2 HandlerInterceptor接口分析

自定义拦截器,需要实现 HandlerInterceptor 接口。而该接口中含有三个方法:

(1) preHandle

该方法在处理器方法执行之前执行。其返回值为 boolean,若为 true,则紧接着会执行处理器方法,且会将 afterCompletion()方法放入到一个专门的方法栈中等待执行。

(2) postHandle

该方法在处理器方法执行之后执行。处理器方法若最终未被执行,则该方法不会执行。由于该方法是在处理器方法执行完后执行,且该方法参数中包含 ModelAndView,所以该方法可以修改处理器方法的处理结果数据,且可以修改跳转方向。

(3)afterCompletion

当preHandle()方法返回 true 时,会将该方法放到专门的方法栈中,等到对请求进行响应的所有工作完成之后才执行该方法。即该方法是在中央调度器渲染(数据填充)了响应页面之后执行的,此时对 ModelAndView 再操作也对响应无济于事。afterCompletion 最后执行的方法,清除资源,例如在 Controller 方法中加入数据等。

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

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

相关文章

2023华为产品测评官-开发者之声 + 华为云ModelArts试用体验心得

2023华为产品测评官-开发者之声 华为云ModelArts试用体验心得 文章目录 2023华为产品测评官-开发者之声 华为云ModelArts试用体验心得一、活动介绍二、华为云ModelArts简介三、AI Gallery简介步骤1:订阅模型步骤2:使用订阅模型部…

Reids 的整合使用

大家好 , 我是苏麟 , 今天带来强大的Redis . REmote DIctionary Server(Redis) 是一个由 Salvatore Sanfilippo 写的 key-value 存储系统,是跨平台的非关系型数据库。 Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选…

冯·诺依曼计算机

一、定义 冯诺依曼机(von Neumann machine),又称冯诺依曼计算机,根据冯诺依曼提出的存储程序概念设计的计算机。主要特征是:指令与数据都以二进制形式储存在存储器里;指令根据其储存的顺序执行。 冯…

SpringBoot常用注解 - @Controller

Controller : Controller是加在类上面的注解,使得类里面的每个方法都返回一个视图页面 实际开发中,有时候只是让后端的结果返回到前端,而不作为新的视图页面,此时需要结合 ResponseBody,让这个方法返回给前端的不是一个…

三星霸主地位“无可撼动“,DRAM内存市场份额创近 9 年新低仍第一

三星电子在DRAM市场的竞争地位一直备受关注。据报告显示,除了市场份额下降外,三星电子在上半年的销售额也出现了下滑。这主要是由于全球消费电子产品需求下滑,导致三星电子的芯片需求减少。 存储芯片业务所在的设备解决方案部门的营收和利润也…

快速提高写作生产力——使用PicGo+Github搭建免费图床,并结合Typora

文章目录 简述PicGo下载PicGo获取Token配置PicGo结合Typora总结 简述PicGo PicGo: 一个用于快速上传图片并获取图片 URL 链接的工具 PicGo 本体支持如下图床: 七牛图床 v1.0腾讯云 COS v4\v5 版本 v1.1 & v1.5.0又拍云 v1.2.0GitHub v1.5.0SM.MS V2 v2.3.0-b…

Python_数据容器详解

Python数据容器 1. 列表基础语法和操作练习题 2. 列表的循环练习题 3. 元组 tuple4. 元组的循环练习题 5. 字符串6. 切片练习总结 7. set 集合8. 字典 dict字典的嵌套总结 字典常用操作练习 9. 对比总结以及通用操作对比总结通用操作 1. 列表基础语法和操作 """…

蓝桥杯嵌入式省一教程:(二)LCD显示

在嵌入式开发中,屏幕显示是一个非常重要的功能。同时,其移植对于初学者来说较为复杂,需要较好地掌握I2C或SPI等通讯协议。然而,在蓝桥杯中,比赛方已经为我们提供了与LCD有关的库,这让我们能够简单方便地使用…

Nginx 下载、安装与运行

下载地址 Nginx官网 - 下载页面 在Windows电脑,下载Windows版本。 下载的就是一个 zip 压缩包。解压后的文件就是可以直接使用的 Nginx 。 版本说明 选择 Mainline 版本就可以了。 解压到合适的位置 运行Nginx 命令行,进入 Nginx 所在的目录。运…

产品经理:能不能把 Vue 的中文输入法 bug 解决了?

前言 有个挺常见的需求相信大家应该都遇到过&#xff0c;就是一个搜索框&#xff0c;边输入边提示&#xff0c;类似于下面这样&#xff1a; 这玩意在前端也挺好实现的&#xff0c;就 v-model 然后 watch 再做个防抖请求接口呗&#xff01;于是我&#xff1a; <template>…

SAP MM学习笔记25- SAP中 基本数量单位,发注单位,发注价格单位

SAP 的 MM Master 中有 3种单位。 1&#xff0c;基本数量单位&#xff08; 基本订单单位&#xff0c; 库存管理的最小单位&#xff09; 2&#xff0c;发注单位&#xff08;订单单位&#xff09; 3&#xff0c;发注价格单位&#xff08;订单价格单位&#xff09; 管理 SAP 库…

【jenkins】jenkins流水线构建打包jar,生成docker镜像,重启docker服务的过程,在jenkins上一键完成,实现提交代码自动构建的功能

【jenkins】jenkins流水线构建打包jar&#xff0c;生成docker镜像&#xff0c;重启docker服务的过程&#xff0c;在jenkins上一键完成&#xff0c;实现提交代码自动构建&#xff0c;服务重启&#xff0c;服务发布的功能。一键实现。非常的舒服。 1. 启动脚本 shell脚本 这是 s…

测试部门来了个00后卷王之王,老油条感叹真干不过,但是...

在程序员职场上&#xff0c;什么样的人最让人反感呢? 是技术不好的人吗?并不是。技术不好的同事&#xff0c;我们可以帮他。 是技术太强的人吗?也不是。技术很强的同事&#xff0c;可遇不可求&#xff0c;向他学习还来不及呢。 真正让人反感的&#xff0c;是技术平平&…

SystemVerilog之接口详解

1.入门实例 测试平台连接到 arbiter的例子&#xff1a;包括测试平台, arbiter仲裁器, 时钟发生器 和连接的信号。 ㅤㅤㅤ ㅤ ㅤㅤㅤㅤㅤ Arbiter里面可以自定义发送的权重&#xff0c; 是轮询还是自定义 grant表示仲裁出来的是哪一个&#xff0c;也即只有0&#xff0c;1&am…

基于springboot校园缴费管理系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

MySQL 索引为什么使用 B+ 树,而不使用红黑树 / B 树 ?

面试官问 &#xff1a;索引为什么使用 B 树&#xff0c;而不使用 B 树&#xff0c;不使用红黑树呢 首先 B 树和 B 树 都是多叉搜索树&#xff0c;然后我们先来观察一下 B 树和 B 树的数据结构&#xff1a; B 树的数据结构实现 >> B 树的数据结构实现 >> 【B 树相…

JAVASE---数组的定义与使用

数组的基本概念 什么是数组 数组是具有相同类型元素的集合&#xff0c;在内存中连续存储。 1. 数组中存放的元素其类型相同 2. 数组的空间是连在一起的 3. 每个空间有自己的编号&#xff0c;起始位置的编号为0&#xff0c;即数组的下标 数组的创建及初始化 数组的创建 T[…

【Unity】UI的一些简单知识

Canvas 新建一个Canvas Render Mode Canvas 中有一个Render Mode&#xff08;渲染模式&#xff09;&#xff0c;有三种渲染模式: Screen Space-Overlay &#xff08;屏幕空间&#xff09;Screen Space-Camara 、 World Space 其中&#xff0c;Space- Overlay是默认显示在…

Docker容器基础

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、Docker概述1、docker是什么2、Docker的设计宗旨3、容器在内核中支持2种重要技术&#xff1a; 三、Docker的核心概念四、Docker相关命令1.安装依赖包2.设置阿里云…

《qt quick核心编程》笔记四

11 Model/View Delegate实际上可以看成是Item的一个模板 11.1 ListView ListView用于显示一个条目列表&#xff0c;数据来自于Model&#xff0c;每个条目的外观来自于Delegate 要使用ListView必须指定一个Model、一个Delegate Model可以是QML内建类型&#xff0c;如ListModel…