由于Json数据传递与接收在以后的开发中是主流,所以把它拿出来独立记一篇笔记,其他的笔记太庞杂了。
1. json数据参数传递实现步骤
1.1 添加json数据转换相关坐标
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.0</version>
</dependency>
1.2 postman发送json数据,请求body中添加json数据)
1.3 开启自动转换json数据的支持
package com.zhang.config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
@Configuration
@ComponentScan("com.zhang.controller")
//开启json数据类型自动转换
@EnableWebMvc
public class SpringMvcConfig {
}
1.4 在Controller中编写方法接收json参数
//集合参数:json格式
//1.开启json数据格式的自动转换,在配置类中开启@EnableWebMvc
//2.使用@RequestBody注解将外部传递的json数组数据映射到形参的集合对象中作为数据
@ResponseBody
@RequestMapping("/acceptListParammetersForJson")
public String acceptListParammetersForJson(@RequestBody List<String> hobbies){
System.out.println("接收到的Json数据是:"+ (hobbies));
return "Hello SpringMvc";
}
1.5 postman发送请求,控制台打印结果
2. @EnableWebMvc注解介绍
- 名称:@EnableWebMvc
- 类型:配置类注解
- 位置:SpringMVC配置类定义上方
- 作用:开启SpringMVC多项辅助功能
- 范例:
@Configuration
@ComponentScan("com.zhang.controller")
@EnableWebMvc
public class SpringMvcConfig {
}
3. @RequestBody注解介绍
@RequestBody注解将外部传递的json数组数据映射到形参的对象中作为数据
-
名称:@RequestBody
-
类型:形参注解
-
位置:SpringMVC控制器方法形参定义前面
-
作用:将请求中请求体所包含的数据传递给请求参数,此注解一个处理器方法只能使用一次
-
范例:
@ResponseBody @RequestMapping("/acceptListParammetersForJson") public String acceptListParammetersForJson(@RequestBody List<String> hobbies){ System.out.println("接收到的Json数据是:"+ (hobbies)); return "Hello SpringMvc"; } 4. 传递json对象
POJO参数:json数据与形参对象属性名相同,定义POJO类型形参即可接收参数
4. 传递json对象
4.1 postman
4.2 Controller
@ResponseBody
@RequestMapping("/acceptPojoParammetersForJson")
public String acceptPojoParammetersForJson(@RequestBody Student student){
System.out.println("接收到的Json数据是:"+ (student));
return "Hello SpringMvc";
}
4.3 postman发送请求,后台打印结果
5. 传递json对象数组
POJO集合参数:json数组数据与集合泛型属性名相同,定义List类型形参即可接收参数
5.1 postman
5.2 controller
@ResponseBody
@RequestMapping("/acceptPojoListParammetersForJson")
public String acceptPojoListParammetersForJson(@RequestBody List<Student> students){
System.out.println("接收到的Json数据是:"+ (students));
return "Hello SpringMvc";
}
5.3 postman发送请求,后台打印结果
6. @RequestBody与@RequestParam区别
- 区别
@RequestParam用于接收url地址传参,表单传参【application/x-www-form-urlencoded】
@RequestBody用于接收json数据【application/json】 - 应用
后期开发中,发送json格式数据为主,@RequestBody应用较广
RequestParam用于接收url地址传参,表单传参【application/x-www-form-urlencoded】
@RequestBody用于接收json数据【application/json】 - 应用
后期开发中,发送json格式数据为主,@RequestBody应用较广
如果发送非json格式数据,选用@RequestParam接收请求参数