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战士!


互动话题

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

相关推荐
吹什么轩4 分钟前
MySQL 事务管理:从 ACID 到 MVCC,一篇讲透
数据库·mysql
IT枫斗者枫哥12 分钟前
CompletableFuture失败后返回空列表:异常没了,业务含义也变了
java·后端
知识搬运临时工23 分钟前
一个模板把 AEM 拖进 Full GC 死亡螺旋:300% CPU、7 GB 堆、310 万行堆栈
java·aws
熊猫钓鱼>_>25 分钟前
鸿蒙 PC 三方库适配复盘:libfvad 1.0 —— 把 WebRTC VAD 做成能装进采集链路的静态库
服务器·开发语言·华为·harmonyos·openharmony·适配·鸿蒙pc
用户4329359280526 分钟前
CoAP还是MQTT:1万只Cat.1水表三个月带宽续航实测
java
sunlifenger35 分钟前
嵌入式部署,解锁张家港智慧灯杆的“极简组网”密码
科技·状态模式
知守观37 分钟前
多模块架构演进:横向分层 vs 纵向领域,13 个真实项目的切分对照
java·后端·微服务
Ai-_Man37 分钟前
Coze扣子还是不可以导出左侧所有对话,只能点进去单条内容导出,方法不对吗?
开发语言·人工智能·ai·小程序·1024程序员节
时间售卖铺44 分钟前
Oracle DQL精髓:从基础到高级实战
运维·数据库·云原生·oracle
raindayinrain1 小时前
c++设计模式
开发语言·c++·设计模式