SpringMvc(二、请求传参
一、常见参数种类
- 普通参数
- 实体类参数
- 嵌套实体类参数
- 数组类型参数
- 集合类型参数
1,普通参数
/**
* 直接用形参传递即可,若请请求参数和形参名称不同,用@RequestParam(value)指定
* @return
*/
@ResponseBody
@RequestMapping("/add")
public String add(@RequestParam("username") String name,String city){
System.out.println("普通参数传递测试...."+name+"\t"+city);
return "{'model':'springMvc'}";
}
注解:@RequestParam
作用:绑定请求参数和处理器形参名称绑定关系
参数:required:是否为必传参数 defaultValue:参数默认值
2,实体类参数
形参直接传递实体类即可
/**
* 实体类参数传递
* @return
*/
@ResponseBody
@RequestMapping("/add")
public String add(Address address){
System.out.println("实体类参数传递...."+address);
return "{'model':'springMvc'}";
}
3,嵌套实体类参数
/**
* 实体类嵌套传递
* @return
*/
@ResponseBody
@RequestMapping("/add")
public String add(User user){
System.out.println("实体类嵌套参数传递...."+user);
return "{'model':'springMvc'}";
}
4,数组类型参数
/**
* 数组类型参数传递
* @return
*/
@ResponseBody
@RequestMapping("/add")
public String add(String[] likes){
System.out.println("数组类型参数传递...."+likes);
return "{'model':'springMvc'}";
}
5,集合参数传递
/**
* 集合类型参数传递
* @return
*/
@ResponseBody
@RequestMapping("/add")
public String add(@RequestParam List<String> likes){
System.out.println("实体类参数传递...."+likes);
return "{'model':'springMvc'}";
}
注意:
需要对集合指定@RequestParam注解
否则编译器会认为List是引用类型去调用List的构造函数
二、JSON参数传递
- json数组
- json对象(POJO)
- json数组对象(POJO)
1,在pom文件添加 fastjson 或 jackson
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.62</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>com.fasterxml.jackson.core</groupId>-->
<!-- <artifactId>jackson-databind</artifactId>-->
<!-- <version>2.9.0</version>-->
<!-- </dependency>-->
2,修改SpringMvc配置类
注解:@RequestBody
作用:将请求中请求体所包含的数据传递给请求参数,一个方法只能使用一次
参数:required:是否为必传参数 defaultValue:参数默认值
三、@RequestParam和@RequestBody
- 区别
- @RequestParam用于地址栏url的参数传递
- @ReuqestBody用于接收json数据
- 应用
- 后期开发中,主要发送json数据,@RequestBody使用更多
- 若发送普通数据,选用@RequestParam