"小崔,用户提交的表单数据为什么到了后端变成了null?"黄俪在联调时焦急地问。白歌走过来拍了拍小崔的肩膀:"数据绑定是Spring MVC最'魔法'的地方,但也是最容易踩坑的地方。理解绑定原理,比死记注解重要一百倍。"
——白歌,飞翔科技架构师
本章导读:请求参数获取与转换
本章定位
本章解决的核心问题:控制器方法如何从HTTP请求中准确、安全地提取并转换数据,以及如何对输入数据进行校验。
学习路线图
学习建议:务必从"数据绑定原理"开始,它是理解所有参数注解的根基。随后三条支线(简单参数、JSON体、表单对象)并行学习,汇聚到"数据校验",最后学习请求头、Cookie和Model的传递。
文件关系说明
| 文件 | 一句话角色 |
|---|---|
数据绑定原理.md | 根基文件:Spring MVC如何将HTTP请求中的字符串数据转换为Java对象,WebDataBinder的工作机制与类型转换体系。 |
RequestParam.md | 简单参数:从URL查询字符串或表单中提取基本类型参数,如?name=xxx或id=123。 |
RequestBody.md | JSON参数:从请求体中读取JSON/XML数据并反序列化为Java对象,前后端分离项目的核心数据入口。 |
ModelAttribute.md | 表单对象:将表单字段自动绑定到复杂对象的属性上,传统表单提交场景的利器。 |
数据校验.md | 安全闸门:结合JSR-303/380(Bean Validation)对绑定后的数据进行规则校验,防止脏数据进入业务层。 |
RequestHeader.md | 头信息提取:从HTTP请求头中获取元数据,如User-Agent、Authorization等。 |
CookieValue.md | Cookie提取:从请求Cookie中读取特定值,常用于会话标识或个性化配置。 |
Model.md | 数据载体:在控制器与视图之间传递数据的容器,理解它与请求参数的区别与协作关系。 |
知识图谱
图谱解读:所有参数获取的底层都依赖WebDataBinder和类型转换体系。@RequestParam处理简单键值对,@RequestBody借助HttpMessageConverter处理结构化数据,@ModelAttribute处理表单到对象的属性映射。数据绑定完成后,通过Validator进行校验。Model则是控制器向视图层传递处理结果的通道。
与下一章的衔接
本章学完后,你已经掌握了"请求数据如何进入方法"。下一章将解决"方法处理完数据后,如何返回给客户端"——你将学习@ResponseBody、ResponseEntity、ViewResolver等响应机制,理解HTTP消息转换器如何序列化数据、视图解析器如何渲染页面,以及转发与重定向的区别,完成"请求-处理-响应"闭环的最后一环。