SprringMVC拦截器
1、拦截器的配置
SpringMVC中的拦截器用于拦截控制器方法的执行
SpringMVC中的拦截器需要实现HandlerInterceptor
SpringMVC的拦截器必须在SpringMVC的配置文件中进行配置:
<bean class="com.test.interceptor.FirstInterceptor"></bean>
<ref bean="firstInterceptor"></ref>
<!-- 以上两种配置方式都是对DispatcherServlet所处理的所有的请求进行拦截 -->
<mvc:interceptor><mvc:mapping path="/**"/><mvc:exclude-mapping path="/testRequestEntity"/><ref bean="firstInterceptor"></ref>
</mvc:interceptor>
<!-- 以上配置方式可以通过ref或bean标签设置拦截器,通过mvc:mapping设置需要拦截的请求,通过mvc:exclude-mapping设置需要排除的请求,即不需要拦截的请求
-->
2、拦截器的三个抽象方法
SpringMVC中的拦截器有三个抽象方法:
preHandle:控制器方法执行之前执行preHandle(),其boolean类型的返回值表示是否拦截或放行,返回true为放行,即调用控制器方法;返回false表示拦截,即不调用控制器方法
postHandle:控制器方法执行之后执行postHandle()
afterComplation:处理完视图和模型数据,渲染视图完毕之后执行afterComplation()
3、多个拦截器的执行顺序
a>若每个拦截器的preHandle()都返回true
此时多个拦截器的执行顺序和拦截器在SpringMVC的配置文件的配置顺序有关:
preHandle()会按照配置的顺序执行,而postHandle()和afterComplation()会按照配置的反序执行
b>若某个拦截器的preHandle()返回了false
preHandle()返回false和它之前的拦截器的preHandle()都会执行,postHandle()都不执行,返回false的拦截器之前的拦截器的afterComplation()会执行
4. 拦截器实现
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;/*** Date:2021/7/10* Author:ybc* Description:*/
public class TestInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println("TestInterceptor-->preHandle");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 {}
}
相关文章:
SprringMVC拦截器
1、拦截器的配置 SpringMVC中的拦截器用于拦截控制器方法的执行 SpringMVC中的拦截器需要实现HandlerInterceptor SpringMVC的拦截器必须在SpringMVC的配置文件中进行配置: <bean class"com.test.interceptor.FirstInterceptor"></bean> …...
redis的实际使用
Redis是一种内存数据库,常用于缓存、会话管理、消息队列等。在项目中合理使用Redis可以提高系统性能和可扩展性。以下是一些使用Redis的建议: 1. 缓存常用数据:将经常使用的数据缓存在Redis中,以减少数据库的读取次数,…...
造车先做三蹦子-之二:自制数据集(5x5数据集)230102
#Jupyter Notebook231001import torch import torch.nn as nn import torch.optim as optim# 定义模型 class Net(nn.Module):def __init__(self):super(Net, self).__init__()self.fc1 = nn.Linear(25, 50)self.fc2 = nn.Linear(50, 6)def forward(self, x):x = x.view(-1, 25…...
JS操作DOM及CSS
JS创造于1994年,其目的是为浏览器显示的文档赋予动态行为。 1 Web编程基础 本节讲解如何编写Web应用中的js程序,如果将这些程序加载到浏览器,以及如何获取输入、产出输出,如何运行响应事件的异步代码。 1.1 js 脚本 虽然现在不…...
Linux内核VFS详解
Linux内核VFS是什么? Linux内核VFS(Virtual File System)是Linux操作系统中的一个关键组件,用于提供文件系统抽象层。它允许用户空间和内核空间的各个部分以一种一致的方式访问不同类型的文件系统,包括磁盘文件系统(如EXT4、XFS、NTFS)、网络文件系统(如NFS、CIFS)、…...
在自己的服务器上部署个人博客和开源项目:实现数字存在感
在数字时代,拥有自己的服务器不再是一项难以实现的任务。通过云计算和开源技术的广泛应用,个人可以轻松地拥有自己的服务器,并在其上部署个人博客以及开源项目,为自己在互联网上创造一个数字存在感。本文将介绍如何在自己的服务器…...
【AI视野·今日Robot 机器人论文速览 第五十九期】Fri, 20 Oct 2023
AI视野今日CS.Robotics 机器人学论文速览 Fri, 20 Oct 2023 Totally 29 papers 👉上期速览✈更多精彩请移步主页 Daily Robotics Papers CCIL: Continuity-based Data Augmentation for Corrective Imitation Learning Authors Liyiming Ke, Yunchu Zhang, Abhay D…...
Chromium浏览器启动参数
文章目录 Chromium浏览器启动参数1. --disable-web-security2. --disable-gpu3. --incognito4. --no-sandbox5. --disable-infobars6. --disable-notifications7. --disable-extensions8. --disable-translate9. --disable-popup-blocking10. --remote-debugging-port=<port…...
【计算机视觉】MoCo v3 讲解
MoCo v3 论文信息 标题:An Empirical Study of Training Self-Supervised Vision Transformers 作者:Xinlei Chen, Saining Xie, Kaiming He 期刊:ICCV 2021 发布时间与更新时间:2021.04.05 2021.04.08 2021.05.05 2021.08.16 主题:计算机视觉、对比学习、MoCo arXiv:[21…...
MySQL - 对字符串字段创建索引
在数据库中,对字符串字段创建索引可以加速字符串字段的查询: 直接创建完整索引:这是最简单的方式,直接对整个字符串字段创建索引。这种方式占用的空间较大,但查询性能通常较好,特别是在精确匹配的情况下。…...
Qt pro文件中 CONFIG += debug 作用
作用 在 Qt 项目文件(.pro 文件)中,CONFIG debug 的作用是指定项目以调试模式进行构建。 当在项目文件中添加 debug 到 CONFIG 变量时,Qt 构建系统将使用调试配置来编译项目。 这意味着编译器将生成带有调试信息的可执行文件&a…...
java解析生成定时Cron表达式工具类
Cron表达式工具类CronUtil 构建Cron表达式 /****方法摘要:构建Cron表达式*param taskScheduleModel*return String*/public static String createCronExpression(TaskScheduleModel taskScheduleModel){StringBuffer cronExp new StringBuffer("");if(…...
庆祝1024
在CSDN1024这一天,我不禁回想起自己这几年来在这个平台上的经历。回忆着初来时的稚嫩,如今的迷茫与期待,我深深地感受到自己还需不断努力。 回想起八年前,我刚刚步入计算机科学与技术的领域,满怀激情地加入了CSDN这个高…...
时间格式记录
ISO 8601:这是一种国际标准的日期和时间表示方式,格式为YYYY-MM-DDTHH:mm:ss.sssZ,其中 YYYY 代表四位数年份,MM 代表月份,DD 代表天数,T 作为日期和时间的分隔符,HH 代表小时,mm 代…...
hive插入动态分区数据时,return code 2报错解决
目录 一、完整报错 二、原因 三、其他 一、完整报错 Error while processing statement: FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask 二、原因 大概率是因为没有开启允许动态分区或单次动态分区个数太小了。 -- 动态分区前…...
解决报错:gnutls_handshake() failed: The TLS connection was non-properly terminated.
执行git clone的时候,出现错误:gnutls_handshake() failed: The TLS connection was non-properly terminated. 如图: 解决方式: 两次重置代理:完美解决 git config --global --unset https.https://github.com.pro…...
《 汇编语言的系统学习》一、编程语言、机器语言与汇编语言
目录 《 汇编语言的系统学习》1、编程语言1.1 语言1.2 程序 2 编程语言分类2.1 机器语言2.2 汇编语言2.3 高级程序语言2.3.1 编译型2.3.1 解释型 《 汇编语言的系统学习》 1、编程语言 1.1 语言 定义:一种系统的,人与人之间通过声音、符号等进行交流的…...
【RocketMQ系列十四】RocketMQ中消息堆积如何处理
您好,我是码农飞哥(wei158556),感谢您阅读本文,欢迎一键三连哦。 💪🏻 1. Python基础专栏,基础知识一网打尽,9.9元买不了吃亏,买不了上当。 Python从入门到精…...
Ubuntu - sudo apt update 报错源问题解决方案
sudo apt update 报错…lease’ does not have a Release file. 反正就是觉得是网络的问题 尝试添加国内清华源、阿里源 不行 尝试DNS 为8.8.8.8,114.114.114.114 还是不行 解决方案:设置里面让 Ubuntu 找到适合自己的源 1、Settings -> About…...
MSQL系列(八) Mysql实战-SQL存储引擎
Mysql实战-SQL存储引擎 前面我们讲解了索引的存储结构,BTree的索引结构,我们一般都知道Mysql的存储引擎有两种,MyISAM和InnoDB,今天我们来详细讲解下Mysql的存储引擎 文章目录 Mysql实战-SQL存储引擎1.存储引擎2.MyISAM的特点3. InnoDB的特…...
基于RetinaFace的课堂考勤系统:人脸识别与数据分析
基于RetinaFace的课堂考勤系统:人脸识别与数据分析 1. 为什么传统点名方式正在被智能考勤替代 早上八点的教室里,老师站在讲台前翻着花名册,学生低头刷手机,后排有人悄悄把书包放在空座位上——这种场景在高校和职业院校并不少见…...
告别重训练!用Upsample Anything (UPA) 给SAM、DINOv2的特征图无损放大,实测教程
告别重训练!用Upsample Anything (UPA) 给SAM、DINOv2的特征图无损放大,实测教程 视觉基础模型(如SAM、DINOv2)在提取图像特征时,通常会输出低分辨率的特征图。这对于需要像素级精度的下游任务(如分割、检测…...
ha_xiaomi_home:小米智能家居与Home Assistant无缝集成指南
ha_xiaomi_home:小米智能家居与Home Assistant无缝集成指南 【免费下载链接】ha_xiaomi_home Xiaomi Home Integration for Home Assistant 项目地址: https://gitcode.com/GitHub_Trending/ha/ha_xiaomi_home ha_xiaomi_home是一款开源工具,能帮…...
告别MoveIt!用Pinocchio、OMPL和Ruckig手搓一个轻量级机械臂规划模块(附完整C++代码)
轻量级机械臂规划模块:Pinocchio、OMPL与Ruckig的黄金组合 在机器人开发领域,机械臂的运动规划一直是核心挑战之一。传统ROS生态中的MoveIt框架虽然功能全面,但其重型架构和高耦合性往往成为追求高性能和灵活性的开发者的桎梏。本文将带你探索…...
3个实战场景:如何用RegRipper3.0快速分析Windows注册表
3个实战场景:如何用RegRipper3.0快速分析Windows注册表 【免费下载链接】RegRipper3.0 RegRipper3.0 项目地址: https://gitcode.com/gh_mirrors/re/RegRipper3.0 Windows注册表分析工具RegRipper3.0是数字取证和事件响应领域的利器,它能从Window…...
LiveSplit:速度跑计时领域的精准度革新与实践指南
LiveSplit:速度跑计时领域的精准度革新与实践指南 【免费下载链接】LiveSplit A sleek, highly customizable timer for speedrunners. 项目地址: https://gitcode.com/gh_mirrors/li/LiveSplit 在竞技游戏的毫秒级竞争中,计时工具的精准度直接决…...
双向互转|IEC104↔Modbus 工业网关,电力 / 工业现场一键通联
一、产品核心定位三格电子推出SG-IEC104-TCP与SG-TCP-IEC104两款工业级网关,专为电力、能源、智能制造场景打造,实现IEC104 与 Modbus 双向协议转换,兼容 DLT645 电表采集,支持 MQTT 上云,打通电力主站与现场设备的数据…...
如何在VSCode安装stm32的开发环境
第一步先安装VSCode和STM32CubeMX;第二步在Vscode中安装插件1:chinese2:STM32Cube for Visual Studio Code第三步在STM32CubeMX生成代码,先进行调试接口配置,Serial Wire是stlink调试;再生成代码界面选择cmake和GCC&am…...
Claude Code /buddy 命令失效了?教你一招绕过限制,直接解锁金色传说!
最近升级到 Claude Code > v2.1.90 的小伙伴可能发现,输入 /buddy 命令后只会提示: buddy is unavailable on this configuration GitHub 上的 issue 也有相关讨论,官方把这个命令禁用了。那刚安装或升级的用户就没法体验 buddy 了吗&…...
QuickLook.Plugin.OfficeViewer-Native:Office文件秒级预览的轻量化技术实现解析
QuickLook.Plugin.OfficeViewer-Native:Office文件秒级预览的轻量化技术实现解析 【免费下载链接】QuickLook.Plugin.OfficeViewer-Native View Word, Excel, and PowerPoint files with MS Office and WPS Office components. 项目地址: https://gitcode.com/gh_…...
