时间请求参数、响应
(7)时间请求参数
-
1.默认格式转换
-
控制器
@RequestMapping("/commonDate") @ResponseBody public String commonDate(Date date){ System.out.println("默认格式时间参数 date ==> "+date); return "{'module' : commonDate}"; }
-
发送请求
-
采取默认格式转换无需其它操作,但是对字符串格式有要求只能是yyyy/MM/dd HH:mm:ss
-
-
2.自定义时间格式转换
-
在SpringMVCConfig配置类中开启注解支持@EnableWebMvc
@Configuration @ComponentScan("dateParam") @EnableWebMvc public class SpringMVCConfig {...}
-
在控制器参数上使用@DateTimeFormat(pattern="yyyy&MM&dd HH:mm:ss")==》pattern的值问自定义参数,&==》日期任意连接符
@RequestMapping("/customDate") @ResponseBody public String customDate(@DateTimeFormat(pattern = "yyyy-MM-dd") Date date, @DateTimeFormat(pattern = "yyyy-MM-dd HH.mm.ss") Date date2) { System.out.println("自定义格式时间参数 date(yyyy-MM-dd) ==> " + date); System.out.println("自定义格式时间参数 date(yyyy-MM-dd HH.mm.ss) ==> " + date2); return "{'module' : customDate}"; }
-
发送请求
-
(8)内部实现原理
-
SpringMVC实现下列自动转换
-
前端传递字符串,后端使用日期Date接收
-
前端传递JSON数据,后端使用对象接收
-
前端传递字符串,后端使用Integer接收
-
后台需要的数据类型有很多中
-
在数据的传递过程中存在很多类型的转换
-
-
如何实现自动转换的呢?
-
SpringMVC中提供了很多类型转换接口和实现类
-
在框架中,有一些类型转换接口,其中有:
-
(1) Converter接口
-
/** * S: the source type * T: the target type */ public interface Converter<S, T> { @Nullable //该方法就是将从页面上接收的数据(S)转换成我们想要的数据类型(T)返回 T convert(S source); }
-
注意:Converter所属的包为
org.springframework.core.convert.converter
-
Converter接口的实现类
-
-
框架中有提供很多对应Converter接口的实现类,用来实现不同数据类型之间的转换,如:
-
请求参数年龄数据(String→Integer)
-
日期格式转换(String → Date)
-
(2) HttpMessageConverter接口
-
该接口是实现对象与JSON之间的转换工作
-
※※※注意:SpringMVC的配置类把@EnableWebMvc当做标配配置上去,不要省略※※※
-
(9)响应
-
1.响应页面
-
控制器
@RequestMapping("/toJumpPage") @RequestBody public String toJumpPage(){ return "index.jsp"; }
-
发送请求
-
使用@RequestBody注解后请求响应的是字符串,并非页面,这是由于页面响应返回的是目标路径,注解后它不会解析其路径
-
-
2.响应纯文本
-
控制器
//@RequestMapping("/toText") @RequestMapping(value = "/toText",produces = {"text/html;charset=UTF-8;", "application/json;"}) @ResponseBody public String toText(){ return "纯文本"; }
-
发送请求
-
响应中文乱码==》在@RequestMapping上使用属性produces设置编码
-
-
3.响应POJO对象
-
控制器
@RequestMapping("/toPojo") @ResponseBody public User toPojo(){ return new User("模拟数据库用户1",18); }
-
发送请求
-
-
4.响应POJO对象集合
-
控制器
@RequestMapping("/toPojoList") @ResponseBody public List<User> toPojoList(){ User user = new User("模拟数据库用户1", 18); User user2 = new User("模拟数据库用户2", 19); User user3 = new User("模拟数据库用户3", 20); ArrayList<User> list = new ArrayList<User>(); list.add(user); list.add(user2); list.add(user3); return list; }
-
发送请求
-