一.SpringMVC接受参数
- 语法:使用控制器方法的参数(形参),接受客户端的请求数据,
- 优点:完成类型的自动转换,定义不定长形式参数列表接受客户端请求数据
- 前台转递参数方式:
Get方式传递参数,通过url传递;例如url?id=2&name=zhangsan
Form表单post方式传递参数;
例如:
<form action="url" method="post">
<input type="text" name="id"/>
<input type="text" name="name"/>
<buttom>commit</buttom>
</form>
- 参数接受分类,采用Get方式:
4.1 接受零散类型数据:后台在控制器方法中生命多个形参,保证接受的参数变量名和前台传递参数名变量一致。conteoller方法:
/***
* 零散类型参数接收
* url?id=2&name=zhangsan&sex=true
* @return
*/
@RequestMapping("/test")
public String test(Integer id, String name, Boolean sex, @DateTimeFormat(pattern = "yyyy-MM-dd") Date bir){
System.out.println("id =="+id+"== 姓名 =="+name+"== 性别 =="+sex+"日期" +bir);
return "index";
}
前端访问和后端打印结果,注:时间已特别定义格式为yyyy-MM-dd,所以浏览器访问时也需要按照特定格式;访问形式:
4.2 接受对象类型数据:前台传递的参数形式,只需要保证传递参数名和接收的参数名变量名一致即可,将自动封装。conteoller方法:
//接收对象类型的参数
@RequestMapping("/test1")
public String test1(User user){
System.out.println(user);
return "index";
}
如果对象中包含对象,前台访问时可标注对象。
访问形式:
4.3 接受数组或集合类型数据:将要接收数组作为控制器方法的参数声明即可;前端语法:要求前台传递的多个参数的参数名都要与接收的数组变量名一致,springMVC自动将多个变量名放入一个数组中,conteoller方法:
@RequestMapping("/test2")
public String test2(String[] names){
for (String name:names) {
System.out.println(name);
}
return "index";
}
访问形式:
注:form表单方式:
<form action="url" method="post">
<input type="text" name="names"/>
<input type="text" name="names"/>
<buttom>commit</buttom>
</form>
注意:springMVC不允许直接接收集合类型参数,但是允许间接接收(将接收的集合放入自定义的对象中完成参数接收)
/***
* 接收集合类型的参数
* 将集合放入对象中接收
* @return
*/
@RequestMapping("/test3")
public String test3(User user){
user.getLists().forEach(str -> System.out.println(str));//lamda表达式
return "index";
}