介绍
使用 @RequestParam 注解后,将请求中指定名字的参数值,赋给Controller方法形参
应用场景
请求中参数名 与 Controller方法形参名 不同时,如下:
在前后台分离式开发中,前台页面是由 前端程序员开发的,表单控件名是由 前端程序员命名的,命名为:u_name、u_pwd
后台程序员编写 Controller 时,方法的 形参名为:username、password,如果谁都不想改名,那么就用该注解
支持的数据类型
- 基本数据类型、字符串
- javabean
- 数组
- 集合。如:List、Map等
属性
value:请求中的参数名称。只用该属性时可省略;当用多个属性时,不能省略required:请求中是否必须有此参数,默认true,表示请求中必须有此参数,否则报错
例子
这里只演示一种,想 javabean、数组可参考 本例 和 springmvc教程-获取请求参数(参数名 与 Controller方法的形参名相同)
html 代码
<form method="post" action="login">
用户名:<input name="u_name" type="text"> <br>
密码:<input name="u_pwd" type="password"> <br>
<input type="submit">
</form>
Controller 代码
@Controller
public class Login {
@RequestMapping("/login")
public String login(@RequestParam("u_name") String username,@RequestParam("u_pwd") String password, HttpSession session){
System.out.println(username+"-"+password);
session.setAttribute("username",username);
return "success";
}
}
required 属性
表示 参数名是否必须存在,默认为true,表示 必须 存在
由于 Controller中使用 @RequestParam("u_name") ,默认 required=true ,那么前台页面 必须提供 u_name 参数,该参数可以是 空值,但必须得有此参数,没有此参数会报错
如果设置 required = false ,即:@RequestParam(value = "u_name",required = false),访问时没有提供 u_name 参数,也不会报错

