时间请求参数、响应

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

相关推荐
triticale10 分钟前
【Java】网络编程(Socket)
java·网络·socket
淘源码d13 分钟前
什么是ERP?ERP有哪些功能?小微企业ERP系统源码,SpringBoot+Vue+ElementUI+UniAPP
java·源码·erp·erp源码·企业资源计划·企业erp·工厂erp
源码方舟14 分钟前
【基于ALS模型的教育视频推荐系统(Java实现)】
java·python·算法·音视频
蜗牛沐雨16 分钟前
Rust 中的 `PartialEq` 和 `Eq`:深入解析与应用
开发语言·后端·rust
Python私教17 分钟前
Rust快速入门:从零到实战指南
开发语言·后端·rust
Mcworld85743 分钟前
整数分解JAVA
java·开发语言
小南家的青蛙1 小时前
LeetCode面试题 01.09 字符串轮转
java·leetcode
秋野酱1 小时前
基于javaweb的SpringBoot爱游旅行平台设计和实现(源码+文档+部署讲解)
java·spring boot·后端
饕餮争锋2 小时前
org.slf4j.MDC介绍-笔记
java·开发语言·笔记
shane-u2 小时前
Maven私服搭建与登录全攻略
java·maven