目录

​一、接收请求中的json数据​

​请求参数(传递json数组)​

​请求参数(传递json对象(POJO))​

​请求参数(传递json数组(POJO))​

​二、@RequestBody与@RequestParam区别​

​三、日期类型参数传递​

​类型转换器​


一、接收请求中的json数据

1、添加json数据转换相关坐标

    <dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.0</version>
</dependency>

2、设置发送json数据(请求body中添加json数据)

SpringMVC-接收请求中的json数据及日期类型参数传递_开发语言

 3、开启自动转换json数据的支持

@Configuration
@ComponentScan("com.itheima.controller")
//开启json数据类型自动转换
@EnableWebMvc
public class SpringMvcConfig {
}

注意事项:

@EnableWebMvc注解功能强大,该注解整合了多个功能,此处仅使用其中一部分功能,即json数据进行自动类型转换

名称:@EnableWebMvc

类型:配置类注解

位置:SpringMVC配置类定义上方

作用:开启SpringMVC多项辅助功能

范例:

​@Configuration @ComponentScan("com.itheima.controller") @EnableWebMvc public class SpringMvcConfig { }​

4、设置接收json数据

请求参数(传递json数组)

    //集合参数:json格式
//1.开启json数据格式的自动转换,在配置类中开启@EnableWebMvc
//2.使用@RequestBody注解将外部传递的json数组数据映射到形参的集合对象中作为数据
@RequestMapping("/listParamForJson")
@ResponseBody
public String listParamForJson(@RequestBody List<String> likes){
System.out.println("list common(json)参数传递 list ==> "+likes);
return "{'module':'list common for json param'}";
}

名称:@RequestBody

类型:形参注解

位置:SpringMVC控制器方法形参定义前面

作用:将请求中请求体所包含的数据传递给请求参数,此注解一个处理器方法只能使用一次

范例:

​ @RequestMapping("/listParamForJson") @ResponseBody public String listParamForJson(@RequestBody List<String> likes){ System.out.println("list common(json)参数传递 list ==> "+likes); return "{'module':'list common for json param'}"; }​

请求参数(传递json对象(POJO))

POJO参数:json数据与形参属性名相同,定义POJO类型形参即可接收参数

SpringMVC-接收请求中的json数据及日期类型参数传递_json_02

    //POJO参数:json格式
//1.开启json数据格式的自动转换,在配置类中开启@EnableWebMvc
//2.使用@RequestBody注解将外部传递的json数据映射到形参的实体类对象中,要求属性名称一一对应
@RequestMapping("/pojoParamForJson")
@ResponseBody
public String pojoParamForJson(@RequestBody User user){
System.out.println("pojo(json)参数传递 user ==> "+user);
return "{'module':'pojo for json param'}";
}

请求参数(传递json数组(POJO))

POJO集合参数:json数组数据与集合泛型属性名相同,定义List类型形参即可接收参数

SpringMVC-接收请求中的json数据及日期类型参数传递_java_03

     //集合参数:json格式
//1.开启json数据格式的自动转换,在配置类中开启@EnableWebMvc
//2.使用@RequestBody注解将外部传递的json数组数据映射到形参的保存实体类对象的集合对象中,要求属性名称一一对应
@RequestMapping("/listPojoParamForJson")
@ResponseBody
public String listPojoParamForJson(@RequestBody List<User> list){
System.out.println("list pojo(json)参数传递 list ==> "+list);
return "{'module':'list pojo for json param'}";
}

二、@RequestBody与@RequestParam区别

区别:

@RequesParam用于接收url地址传参,表单传参【application/x-www-form-urlencoded】

@RequestBody用于接收json数据【application/json】

应用:

后期开发中,发送json格式数据为主,@RequestBody应用较广

如果发送非json格式数据,选用@RequestParam接收请求参数

三、日期类型参数传递

日期类型数据基于系统不同格式也不尽相同

2088-08-18

2088/02/18

08/18/2088

接收形参时,根据不同的格式设置不同的接收方式

    //日期参数
//使用@DateTimeFormat注解设置日期类型数据格式,默认格式yyyy/MM/dd
@RequestMapping("/dataParam")
@ResponseBody
public String dataParam(Date date,
@DateTimeFormat(pattern="yyyy-MM-dd") Date date1,
@DateTimeFormat(pattern="yyyy/MM/dd HH:mm:ss") Date date2){
System.out.println("参数传递 date ==> "+date);
System.out.println("参数传递 date1(yyyy-MM-dd) ==> "+date1);
System.out.println("参数传递 date2(yyyy/MM/dd HH:mm:ss) ==> "+date2);
return "{'module':'data param'}";
}

http://localhost/dataParam?date=2088/08/08&date1=2088-08-18&date3=2088/08/28 8:08:08

名称:@DateTimeFormat

类型:形参注解

位置:SpringMVC控制器方法形参前面

作用:设定日期时间型数据格式

范例:

​ @RequestMapping("/dataParam") @ResponseBody public String dataParam(Date date){ System.out.println("参数传递 date ==> "+date2); return "{'module':'data param'}"; }​

属性:pattern:日期时间格式字符串

类型转换器

Converter接口

public interface Converter<S,T>{
@Nullable
T comvert(S var1);
}

请求参数年龄数据(String->Integer)

日期格式转换(String -> Date)

@EnableWebMvc功能之一:根据类型匹配对应的类型转换器