Spring MVC 参数解析详解:按请求格式分类的原理与实践
Spring MVC 的参数解析机制是连接 HTTP 请求与 Controller 方法参数的核心桥梁,不同的请求格式(如表单、JSON、URL 路径参数、文件)对应不同的解析逻辑、注解和参数处理器。从 “格式特点→接收方式→参数处理器→底层原理→实战示例” 五个维度,系统解析 Spring MVC 如何将请求数据绑定到方法参数。
application/x-www-form-urlencoded:传统表单 / URL 编码格式
这是最经典的请求格式,适用于表单提交或URL 查询字符串(如 ?name=张三&age=25),数据以键值对形式传输,且会进行 URL 编码(如空格转为 %20)。
1. 格式特点
- 数据位置:URL 查询字符串(
?key=value)或请求体(表单提交时); - 数据结构:扁平键值对(不支持嵌套对象,如
user.name需拆分为user.name=张三); - 编码方式:URL 编码(ASCII 字符外的内容转为
%XX格式)。
2. 接收方式与参数处理器
根据参数类型(单个参数 / 对象),Spring MVC 会使用不同的参数处理器:
| 接收场景 | 注解 / 方式 | 核心参数处理器 | 适用场景 |
|---|---|---|---|
| 单个 / 多个简单参数 | @RequestParam |
RequestParamMapMethodArgumentResolver |
接收零散的键值对(如 name、age) |
| 复杂对象参数 | 无注解(直接用对象接收) | ServletModelAttributeMethodProcessor |
接收多个键值对,自动封装为 Java 对象(如 User) |