SpringMVC通关秘籍(下):日期转换器、拦截器与文件上传的奇幻冒险

摘要:上篇我们搞定了JSON和乱码,本篇继续冲刺!自定义日期转换器让"字符串"变"Date",拦截器当"安检员"守好请求大门,还有文件上传的"快递驿站"搭建指南!


目录

  1. 一、日期转换器:让字符串和Date对象"无缝切换"

  2. 二、拦截器:SpringMVC的"安检员"(附与Filter的区别)

  3. 三、文件上传:搭建你的"快递驿站"(从依赖到Controller)


一、日期转换器:让字符串和Date对象"无缝切换"

前端传个日期字符串(比如"2026-03-19"),后端怎么直接转成java.util.Date?SpringMVC默认不会自动转,得我们自己写个"翻译官"------日期转换器!

1. 第一步:创建日期转换器类

实现Converter<String, Date>接口:

复制代码
2. 第二步:在SpringMVC配置文件中注册

springmvc.xml里配置转换器工厂,并让<mvc:annotation-driven>用上它:

复制代码
3. 第三步:Controller里直接用Date接收
复制代码

前端请求:/testDate?birthday=2026-03-19,完美接收!


二、拦截器:SpringMVC的"安检员"(附与Filter的区别)

拦截器(Interceptor)就像机场的安检员,在请求到达Controller之前和之后进行检查。它和Filter(过滤器)很像,但出身不同!

1. Filter vs Interceptor:出身和场景大不同
对比项 Filter(过滤器) Interceptor(拦截器)
原理 方法回调 AOP(面向切面编程)
依赖 不依赖Spring框架 必须依赖Spring框架
常见场景 中文乱码处理 登录校验、权限校验
2. 拦截器使用第一步:创建拦截器类

实现HandlerInterceptor接口,有三个方法可以重写:

复制代码
3. 拦截器使用第二步:在SpringMVC配置文件中配置

springmvc.xml里配置拦截路径和排除路径:

复制代码

三、文件上传:搭建你的"快递驿站"(从依赖到Controller)

文件上传就像开"快递驿站":前端是寄件人,表单是快递盒,后端是驿站管理员。我们来一步步搭建!

1. 第一步:导入依赖(pom.xml)

需要commons-fileupload依赖来处理文件上传:

复制代码
2. 第二步:配置文件上传解析器(springmvc.xml)

注意:这个Bean的id必须是multipartResolver

复制代码
3. 第三步:写上传表单(JSP/HTML)

表单必须满足三个条件:method="post"enctype="multipart/form-data"input type="file"

复制代码
4. 第四步:写Controller处理上传

MultipartFile接收上传的文件:

复制代码

注:记得在项目webapp下创建upload文件夹哦!


总结

SpringMVC的三大高级技能我们都搞定啦:

  1. 日期转换器:自定义Converter,字符串转Date不是梦;

  2. 拦截器:实现HandlerInterceptor,登录校验权限控;

  3. 文件上传:导入依赖配解析器,MultipartFile来接收。

至此,SpringMVC新手村通关!恭喜你成为初级SpringMVC战士!


互动话题

你用拦截器做过最有意思的功能是什么?评论区分享一下吧!

相关推荐
wangjialelele2 小时前
C++11、C++14、C++17、C++20新特性解析(一)
linux·c语言·开发语言·c++·c++20·visual studio
weixin_456321642 小时前
Java架构设计:Redis AOF持久化深度解析(原理+实战+避坑)
java·开发语言·redis
leaves falling2 小时前
数据结构-堆学习
java·数据结构·学习
阿蒙Amon2 小时前
C#常用类库-详解YamlDotNet
开发语言·c#
Java水解2 小时前
Java 中实现多租户架构:数据隔离策略与实践指南
java·后端
大傻^2 小时前
SpringAI2.0 Null Safety 实战:JSpecify 注解体系与 Kotlin 互操作
android·开发语言·人工智能·kotlin·springai
楼田莉子2 小时前
MySQL数据库:表及其表相关的操作
数据库·学习·mysql
ZTLJQ2 小时前
驾驭高并发:Python协程与 async/await 完全解析
服务器·数据库·python
不秃不少年2 小时前
Java 设计模式
java