使用 @RequestParam 映射不同名称的参数

有些时候,我们希望控制器方法里的参数名与表单参数的 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 默认要求参数必须存在且名称严格匹配,请求中未提供 loginNamepassword 参数,导致绑定失败。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注