Spring MVC 请求参数处理详解
在 Web 开发中,后端需要准确接收前端传来的数据。Spring MVC 提供了丰富的机制来处理各种形式的请求参数。实际开发中,我们主要通过 Postman 等工具模拟请求进行测试,重点在于理解后端如何解析和绑定这些参数。
1. 基本类型参数
1.1 单个参数
接收单个参数时,直接在方法声明中使用对应类型的形参即可。Spring MVC 会根据参数名自动匹配请求中的值。
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/param")
public class ParamController {
@RequestMapping("m1")
public String method1(String name) {
return "接收到参数 name:" + name;
}
}
访问 http://127.0.0.1:8080/param/m1?name=spring,后端能正确获取到 name 的值。
注意事项:
- 参数缺失: 使用基本类型(如
int,double)接收参数时,必须传参,否则会报 500 错误。因为基本类型不能为 null。建议改为包装类型(如Integer,Double),此时若未传参则值为null。 - 类型不匹配: 如果传递的值无法转换为目标类型(例如给
int传了字符串),会报 400 错误。
1.2 多个参数
接收多个参数与单个参数类似,只需增加形参数量。Spring MVC 通过参数名进行匹配,因此参数的顺序不影响结果。
@RequestMapping("/m2")
public Object method2(String name, String password) {
return "接收到参数 name:" + name + ", password:" + password;
}
请求 URL 可以是 .../m2?name=zhangsan&password=123456,也可以是 .../m2?password=123456&name=zhangsan,结果一致。
底层逻辑是:HTTP 协议将参数解析为键值对映射表(Map),Spring 根据方法参数名从表中取值。如果参数名不一致,默认取不到值(除非使用 @RequestParam 指定别名)。
2. 对象参数
当参数较多时,逐个声明形参会导致代码冗余。可以将参数封装为一个 JavaBean(POJO),Spring MVC 会自动将请求参数绑定到对象的属性上。


