时间请求参数、响应

(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;
    }
    • 发送请求

相关推荐
我爱挣钱我也要早睡!32 分钟前
Java 复习笔记
java·开发语言·笔记
AD钙奶-lalala3 小时前
Mac OS上搭建 http server
java
皮皮林5516 小时前
SpringBoot 全局/局部双模式 Gzip 压缩实战:14MB GeoJSON 秒变 3MB
java·spring boot
weixin_456904277 小时前
Spring Boot 用户管理系统
java·spring boot·后端
趁你还年轻_7 小时前
异步编程CompletionService
java
DKPT7 小时前
Java内存区域与内存溢出
java·开发语言·jvm·笔记·学习
sibylyue7 小时前
Guava中常用的工具类
java·guava
奔跑吧邓邓子7 小时前
【Java实战㉞】从0到1:Spring Boot Web开发与接口设计实战
java·spring boot·实战·web开发·接口设计
专注API从业者7 小时前
Python/Java 代码示例:手把手教程调用 1688 API 获取商品详情实时数据
java·linux·数据库·python
奔跑吧邓邓子7 小时前
【Java实战㉝】Spring Boot实战:从入门到自动配置的进阶之路
java·spring boot·实战·自动配置