1、普通参数
//普通参数:请求参数名与形参名不同
@RequestMapping("/commonParamDifferentName")
@ResponseBody
public String commonParamDifferentName(@RequestParam("name") String username, int age){
System.out.println("普通参数传递:username:"+username+",age:"+age);
return "{'module':'common param differenet name'}";
}
@RequestParam 相当于给对应的形参起了一个别名,用来接受url中 name对应的值:
xxxx?name=xx&age=xx或是xxxx?username=xx&age=xx 都是一样的效果
2、对引用类型
@RequestMapping("/pojoParam")
@ResponseBody
public String PojoParam(User user){
System.out.println("pojo类型参数传递:user:"+user);
return "{'module':'pojo param'}";
}
//嵌套pojo参数(一个pojo对象中包含其他的pojo对象,User中包含address)
@RequestMapping("/pojoContainParam")
@ResponseBody
public String pojoContainParam(User user){
System.out.println("pojo嵌套类型参数传递:user"+user);
return "{'module':'pojoContainParam'}";
}
在SpringMVC下,获取pojo参数只需要把对应的值发送请求即可。
会自动创建一个对象来接受url中的数据,比如:
user中的属性 address中的属性
当url中为:xx?name=xx&age=&xx&address.province=xx&address&city=xx这样的请求信息提交后,会自动创建一个user对象来接收这些数据装配成一个user对象。
3、数组和集合
//数组
@RequestMapping("/arrayParam")
@ResponseBody
public String arrayParam(String[] likes){
System.out.println("数组传递参数:likes"+ Arrays.toString(likes));
return "{'module':'array param'}";
}
//集合参数
@RequestMapping("/listParam")
@ResponseBody
public String listParam(@RequestParam List<String> likes){
System.out.println("集合参数传递:"+likes);
return "{'module':'listParam'}";
}
在集合参数传递时,第一次不加@RequestParam注解产生的错误:
意思是List 没有构造方法。
对@RequestParam的认识:当有这个注解的时候,不会创建一个对象来接受url中的数据,即将数据作为参数放入集合即可。