What is `WebMvcConfigurer` does?
WebMvcConfigurer 用于自定义和扩展SpringMVC的功能配置。
比如:可以配置如视图解析器、静态资源处理、消息转换器、拦截器等MVC相关的组件。
实现 WebMvcConfigurer 接口,并使用 @Configuration 注解标记,使其成为一个配置类
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
[实践总结] 拦截器配置(Interceptors)
@Autowiredprivate ResponsePostInterceptor responsePostInterceptor;/*** 为拦截器注册表添加拦截器** @param registry 拦截器注册表*/@Overridepublic void addInterceptors(InterceptorRegistry registry) {// 在Spring MVC配置中注册一个名为responsePostInterceptor的拦截器,// 使其能够对匹配路径“/**”(即对应用程序中的所有路径)的请求进行拦截registry.addInterceptor(responsePostInterceptor).addPathPatterns("/**");}
视图控制器(View Controllers)
可以添加一些默认的路由规则,当请求特定URL时自动转发到指定视图。
/*** 向控制器注册表中添加视图控制器** @param registry 控制器注册表*/@Overridepublic void addViewControllers(ViewControllerRegistry registry) {//对于index.html的请求,设置返回的视图为index.htlregistry.addViewController("/index.html").setViewName("/index.htl");//所有以.do结尾的请求重定向到/index.html请求registry.addRedirectViewController("/**/*.do", "/index.html");}
静态资源处理(Static Resources)
可以配置静态资源如CSS、JavaScript等文件的映射路径
/*** 用于添加资源处理器** @param registry 资源处理器注册表*/@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("/resources/**").addResourceLocations("classpath:/static/resources/").setCacheControl(CacheControl.maxAge(365, TimeUnit.DAYS));}
视图解析器(View Resolvers)
可以配置视图解析器链,决定如何将处理结果映射到具体的视图模板。
/*** 配置视图解析器(ViewResolver),用于在Spring应用程序中自定义如何解析视图*/@Overridepublic void configureViewResolvers(ViewResolverRegistry registry) {// 创建 InternalResourceViewResolver 对象InternalResourceViewResolver resolver = new InternalResourceViewResolver();// 设置视图资源的前缀为 "/WEB-INF/views/"resolver.setPrefix("/WEB-INF/views/");// 设置视图资源的后缀为 ".jsp"resolver.setSuffix(".jsp");// 注册视图解析器registry.viewResolver(resolver);}
自定义配置HTTP消息转换器列表(Message Converters)
/*** 用于自定义配置HTTP消息转换器列表*/@Overridepublic void configureMessageConverters(List<HttpMessageConverter<?>> converters) {// StringHttpMessageConverter主要用于处理HTTP请求和响应中的字符串类型数据converters.add(new StringHttpMessageConverter());}
为跨域访问添加映射(Cors Mappings)
/*** 为跨域访问添加映射*/@Overridepublic void addCorsMappings(CorsRegistry registry) {// 允许所有跨域访问registry.addMapping ("/**");// 更为精细的控制// 仅仅允许来自 domain2.com 的跨域访问,并且限定访问路径为api 、方法是 POST 或者 GET 。registry.addMapping("/api/**").allowedOrigins("http://domain2.com").allowedMethods("POST", "GET");}
自定义的格式化器(Formatter)
@Overridepublic void addFormatters(FormatterRegistry registry) {//注册一个日期格式转换器registry.addConverter(String.class, Date.class, DateUtils::parseDate);}
自定义参数解析器
/*** 向SpringMVC框架中添加自定义参数解析器** @param argumentResolvers SpringMVC已有的参数解析器列表,用于处理控制器方法的参数解析工作*/@Overridepublic void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {// 添加一个自定义解析器,它能将请求中的字符串参数转换为Date类型,// 例如:假设前端传递的是"2022-12-31"这样的日期字符串,通过此解析器可直接注入到控制器方法的Date类型参数中。argumentResolvers.add(new CustomDateArgumentResolver());}
Further Reading : What is addArgumentResolvers does in WebMvcConfigurer ?
参考
[Ref] springboot-WebMvcConfigurer配置拦截器/跨域/格式化/注册控制器
相关文章:
What is `WebMvcConfigurer` does?
WebMvcConfigurer 用于自定义和扩展SpringMVC的功能配置。 比如:可以配置如视图解析器、静态资源处理、消息转换器、拦截器等MVC相关的组件。 实现 WebMvcConfigurer 接口,并使用 Configuration 注解标记,使其成为一个配置类 Configuration …...
安全强化学习笔记
这里写自定义目录标题 参考资料 Safe Reinforcement Learning环境算法CPO 2017 ICMLPCPO 2019 ICLRFOCOPS 2020 NIPSCRPO 2021 ICMLCUP 2022 NIPS TRPO 如何看懂TRPO里所有的数学推导细节? - 小小何先生的回答 - 知乎 参考资料 Safe Reinforcement Learning 安全/约束强化学…...
POI-tl 知识整理:整理1 -> 利用模板向word中写入数据
1 文本传值 Testpublic void testText() throws Exception {XWPFTemplate template XWPFTemplate.compile("D:\\Idea-projects\\POI_word\\templates.docx");Map<String, Object> map new HashMap<>();map.put("title", "Hi, girl"…...
PDF结构详解
文章目录 介绍前言高保真的文件什么是PDF?PDF的一些优点版本摘要谁在使用PDF?有用的免费软件谁应该阅读 构建一个简单PDF文件基本PDF语法File StructureDocument ContentPage Content 构建简单PDF文件头目录,交叉引用表和文件尾主要对象图形内…...
Three.js 镜面反射Reflector 为MeshStandardMaterial增加Reflector能力
效果效果官方案例 区别:官方的案例更像一个镜子 没有纹理等属性 也没有透明度修改 根据源码进行修改为 MeshStandardMaterial实现反射 使用案例 createReflector() {const plane this.helper.create.plane(2, 2);this.helper.add(plane.mesh);plane.mesh.rotat…...
UE4使用技巧
打开蓝图编辑器时不是打开一个新窗口,而是作为主窗口 适用于全部的打开新窗口的操作 蓝图编译时自动保存 开始游戏后立即捕获鼠标...
行为型设计模式—职责链模式
职责链模式:从名字可以拆分为 职责 和 链。即能为请求创建一条由多个处理器组成的链路,每个处理器各自负责自己的职责,相互之间没有耦合,完成自己任务后请求对象即传递到链路的下一个处理器进行处理。 如果在写好的执行函数里加上…...
EndNote快速上手
前言:用EndNote主要就是为了方便管理文章引用的文献,所以本篇就是针对EndNote在文章中引用文献需要的技巧,然后本文用的是EndNoteX9。 EndNote快速上手 创建文献资料库创建文献分组导入文献手动输入文件导入在线搜索 修改文献信息去重文献删除…...
GRE隧道(初级VPN)配置步骤
一、拓朴图: 要求:1、PC1 和 PC2 能访问充当互联网接口地址的ISP环回口地址8.8.8.8 2、PC1 和 PC2 走GRE隧道互通 二、配置步骤: 1、配置IP 2、R1、R2 配置nat,代理内网地址通过G0/0/0口上外网 acl 2000rule permit source a…...
自然语言处理笔记
文章目录 情感词典中文分词单词向量化技术Word2vecGloVefastText 关键词提取算法 情感词典 英文的情感词典有:LIWC, SentiWordNet等 中文的情感词典有:NTUSD, 正文褒贬词典TSING, 知网HowNet等 中文分词 中文分词的工具有:jieba(核心算法是…...
广东省第三届职业技能大赛“网络安全项目”B模块任务书
广东省第三届职业技能大赛“网络安全项目”B模块任务书 PS: 关注鱼影安全第一部分 网络安全事件响应任务 1:应急响应 第二部分 数字取证调查任务 2 :操作系统取证任务 3: 网络数据包分析取证任务 4: 计算机单机取证 第三部分 应用…...
如何利用API接口获取电商平台数据?
作为产品经理,我们需要了解电商平台的数据情况,以便更好地制定产品策略和优化用户体验。而利用API接口获取电商平台数据是一种高效、便捷的方式。本文将从以下几个方面介绍如何利用API接口获取电商平台数据。 一、了解API接口 首先,我们需要…...
C语言天花板——指针(经典题目)
指针我们已经学习的差不多了,今天我来给大家分享几个经典的题目,来让我们相互学习🏎️🏎️🏎️ int main() {int a[4] { 1, 2, 3, 4 };int* ptr1 (int*)(&a 1);int* ptr2 (int*)((int)a 1);printf("%x,%…...
进程上下文的概念和切换简单通俗的解释
进程上下文是进程执行活动全过程的静态描述。我们把已执行过的进程指令和数据在相关寄存器与堆栈中的内容称为进程上文,把正在执行的指令和数据在寄存器与堆栈中的内容称为进程正文,把待执行的指令和数据在寄存器与堆栈中的内容称为进程下文。 实际上li…...
python学习笔记10(选择结构2、循环结构1)
(一)选择结构2 1、if……else……语句 #(1)基本格式 numbereval(input("请输入您的6位中奖号码:")) if number123456:print("恭喜您,中奖了") else:print("未中奖")#&…...
IPv6过渡技术---手动隧道
IPv6隧道 隧道(Tunnel)是一种封装技术。利用一种网络协议来传输另一种网络协议,即利用一种网络传输协议,将其他协议产生的数据报文封装在自身的报文中,然后在网络中传输。 隧道是一个虚拟的点对点的连接。一个Tunnel提供了一条使封装的数据报文能够传输的通路,并且在一个…...
Redis中的Java客户端
一、Jedis Jedis是一个Java实现的Redis客户端连接工具。 Jedis使用非常简单,直接引入依赖。基于默认参数的Jedis连接池,初始化连接池类(使用默认连接池参数)JedisPool,获取一个Jedis连接Jedis jedisjp.getResource()…...
线性代数——行列式相关性质
目录 一、行列式与它的转置列行列式相等 二、对换行列式的两行(列),行列式变号 三、行列式某行(列)有公因子k,则k可以提到行列式外 四、行列式中若两行成比例,则行列式为0 五、行列式的某一行…...
跟着cherno手搓游戏引擎【5】layer(层)、Glad
编写基类层: Layer.h:提供Attach链接、Detach解绑、Update刷新、Event事件、GetName方法 #pragma once #include"YOTO/Core.h" #include"YOTO/Event/Event.h" namespace YOTO {class YOTO_API Layer{public:Layer(const std::string& nam…...
Windows无法登录管理路由器故障排查
问题描述 家里的路由器使用拨号上网,路由器DHCP分发IP的范围是192.168.1.0/24。默认使用192.168.1.1管理路由器。然后拨号上网成功后,修改了私网IP的分发范围:192.168.5.1-192.168.5.10。为了防止有人蹭网,只分配的10个IP地址。修…...
逆向思维:从资源困境到自由获取,猫抓如何重塑你的网页体验
逆向思维:从资源困境到自由获取,猫抓如何重塑你的网页体验 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否曾面对心仪…...
重新定义交通安全研究范式:基于无人机轨迹数据的数字孪生解决方案
重新定义交通安全研究范式:基于无人机轨迹数据的数字孪生解决方案 【免费下载链接】UCF-SST-CitySim1-Dataset 项目地址: https://gitcode.com/gh_mirrors/ucf/UCF-SST-CitySim-Dataset 在自动驾驶技术快速发展的今天,传统交通安全研究面临着一个…...
AI头像生成器开发者必备:GitHub项目管理核心技巧详解
AI头像生成器开发者必备:GitHub项目管理核心技巧详解 1. 引言:为什么GitHub对AI头像生成器项目至关重要 开发一个AI头像生成器项目时,你是否遇到过这些挑战:团队成员同时修改同一文件导致冲突、新功能上线后出现意外bug却无法快速…...
小白也能搞定:CYBER-VISION零号协议智能助盲系统部署全流程
小白也能搞定:CYBER-VISION零号协议智能助盲系统部署全流程 1. 系统介绍与准备工作 CYBER-VISION零号协议是一款专为视障人士设计的智能助盲系统,它通过先进的计算机视觉技术,将周围环境实时转化为可理解的语音提示。想象一下,当…...
Qwen3-14B企业知识沉淀:会议录音转写+关键结论自动提炼
Qwen3-14B企业知识沉淀:会议录音转写关键结论自动提炼 1. 企业知识管理的痛点与解决方案 在日常工作中,会议是信息交流的重要场景,但会议录音的整理工作往往耗时费力。传统的人工转写方式存在几个明显问题: 效率低下࿱…...
Vue3 + FFmpeg.wasm 实战:5分钟搞定浏览器端视频格式转换(附完整代码)
Vue3 FFmpeg.wasm:浏览器端视频处理的革命性方案 当现代Web应用越来越依赖多媒体处理能力时,传统依赖后端转码的方案暴露出明显短板:上传耗时、服务器压力大、隐私数据外流风险。而FFmpeg.wasm的出现彻底改变了这一局面——这个基于WebAssem…...
Calypso vs PC-DMIS:三坐标两大软件脱机编程实战对比与选型指南
Calypso vs PC-DMIS:三坐标测量软件脱机编程深度对比与实战选型策略 在精密制造领域,三坐标测量机(CMM)的脱机编程能力直接决定了检测效率与资源利用率。作为行业两大标杆,蔡司Calypso与海克斯康PC-DMIS在用户界面设计、编程逻辑、仿真验证等…...
毕业设计实战:基于Java+MySQL的教务管理系统设计与实现指南
毕业设计实战:基于JavaMySQL的教务管理系统设计与实现指南 在开发“基于JavaMySQL的教务管理系统”毕业设计时,曾因课程报名表未通过学生ID与课程ID双外键关联踩过关键坑——初期仅设计报名编号、报名时间等基础字段,未与学生表、课程表建立关…...
Matlab源代码教程:枝晶生长模拟中的溶质与液相分数分析
枝晶生长模拟,溶质、液相分数,matlab源代码 教程相场法模拟枝晶生长这事挺有意思的——想象金属熔液凝固时,那些像雪花般绽放的晶体结构,背后其实是溶质扩散和相变的战场。今儿咱们用MATLAB整活,搞个能看见晶体长毛刺的…...
SiameseUIE多任务统一Schema设计:一套定义覆盖NER/关系/事件/情感
SiameseUIE多任务统一Schema设计:一套定义覆盖NER/关系/事件/情感 1. 引言:信息抽取的“瑞士军刀” 想象一下,你手头有一堆杂乱无章的中文文档——可能是新闻稿、用户评论、技术报告或者客服对话。老板让你快速从中找出所有提到的人名、公司…...
