时间请求参数、响应

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

相关推荐
论迹复利12 小时前
FreeRTOS 在 RISC-V 上是如何“点火“的 —— 从 main() 到第一个任务的完整链路
java·开发语言·risc-v
小江的记录本12 小时前
【CSS】CSS 动画:transition、animation、transform、CSS3 新特性(附《思维导图》)
前端·css·安全·spring·前端框架·css3·动画
张宇Joaquin12 小时前
鲲鹏统一并行加速库KUPL--众核并行能力介绍
java·开发语言·网络
宸津-代码粉碎机13 小时前
AI攻防战升级!基于Spring AI构建Java应用自动免疫安全体系
java·大数据·开发语言·人工智能·python·安全·spring
2601_9637491014 小时前
越华环保集团数字化污水治理:端边云采集架构与平台对接实现
java·大数据·架构
朦胧之14 小时前
PostgreSQL 数据库笔记
人工智能·后端
xcLeigh14 小时前
Go入门:整数类型的溢出与安全边界
java·安全·golang
源码宝14 小时前
SpringBoot+Vue2 诊所门诊管理系统,完整前后端源码,可直接部署上线
java·源码·his系统·门诊系统·程序代码·诊所系统·门诊his
yychen_java14 小时前
九:Text-to-SQL 智能数据查询与 Human-in-the-Loop 人机协作
java·人工智能·架构
user_admin_god15 小时前
数据采集/交换系统设计经验
spring boot·spring·策略模式