有些时候,我们希望控制器方法里的参数名与表单参数的 name 不一致。比如出于安全考虑,不希望黑客通过表单 name 猜测数据库表字段的列名。
此时可以使用 @RequestParam 注解将请求参数绑定到方法参数上:
@RequestMapping("/login")
public String login(
@RequestParam("loginName") String name,
@RequestParam("password") String pwd)
{
System.out.println("方法3:参数绑定获取");
System.out.println("loginName:" + name);
System.out.println("password:" + pwd);
return "index";
}Code language: JavaScript (javascript)
访问以下地址可以正常绑定:
http://localhost:8080/SpringMvc/home/login?loginName=zhangsan&password=123456
输出结果:
方法3:参数绑定获取
loginName:zhangsan
password:123456
而如果访问参数名不匹配的地址,则会出现 400 错误:
http://localhost:8080/SpringMvc/home/login?name=zhangsan&pwd=123456
这是因为 @RequestParam 默认要求参数必须存在且名称严格匹配,请求中未提供 loginName 和 password 参数,导致绑定失败。
Previous: 使用 Model 向视图传递数据
Next: 直接返回字符串(不使用视图)