SpringMVC:参数传递之日期类型参数传递

news/2024/12/4 14:46:53/

环境准备和参数传递请见:SpringMVC参数传递环境准备

日期类型比较特殊,因为对于日期的格式有N多中输入方式,比如:

  • 2088-08-18
  • 2088/08/18
  • 08/18/2088

针对这么多日期格式,SpringMVC该如何接收,它能很好的处理日期类型数据么?

接受请求:

java">//日期参数//使用@DateTimeFormat注解设置日期类型数据格式,默认格式yyyy/MM/dd@RequestMapping("/dataParam")@ResponseBodypublic 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'}";}

传参:
在这里插入图片描述
后台:
在这里插入图片描述

知识点1:@DateTimeFormat
名称@DateTimeFormat
类型形参注解
位置SpringMVC控制器方法形参前面
作用设定日期时间型数据格式
相关属性pattern:指定日期时间格式字符串
内部实现原理

讲解内部原理之前,我们需要先思考个问题:

  • 前端传递字符串,后端使用日期Date接收
  • 前端传递JSON数据,后端使用对象接收
  • 前端传递字符串,后端使用Integer接收
  • 后台需要的数据类型有很多中
  • 在数据的传递过程中存在很多类型的转换

问:谁来做这个类型转换?

答:SpringMVC

问:SpringMVC是如何实现类型转换的?

答:SpringMVC中提供了很多类型转换接口和实现类

在框架中,有一些类型转换接口,其中有:

  • (1) Converter接口
java">/**
*	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当做标配配置上去,不要省略

[声明]:内容主要来源黑马程序员网上资源学习,仅供学习参考


http://www.ppmy.cn/news/1552297.html

相关文章

大模型开发和微调工具Llama-Factory-->推理与评估

推理 LLaMA-Factory 支持多种推理方式。 您可以使用 llamafactory-cli chat inference_config.yaml 或 llamafactory-cli webchat inference_config.yaml 进行推理与模型对话。 对话时配置文件只需指定原始模型 model_name_or_path 和 template &#xff0c;并根据是否是微调…

卷积神经网络(CNN)的层次结构

卷积神经网络&#xff08;CNN&#xff09;是一种以其处理图像和视频数据的能力而闻名的深度学习模型&#xff0c;其基本结构通常包括以下几个层次&#xff0c;每个层次都有其特定的功能和作用&#xff1a; 1. 输入层&#xff08;Input Layer&#xff09;&#xff1a; 卷积神经网…

BGP基础

EGP&#xff1a;早期的外部网关协议&#xff0c;用于在自治系统间动态交换路由信息&#xff0c;但设计简单&#xff0c;无法避免环路问题 BGP&#xff1a;取代EGP的另外一种外部网关协议&#xff0c;能够进行路由优选&#xff0c;避免路由环路&#xff0c;提供更高效的路由传递…

李宏毅深度学习-Pytorch Tutorial2作业

一、任务描述 什么是张量&#xff1f; 张量&#xff08;Tensor&#xff09;是深度学习和机器学习中一个非常基础且重要的概念。在数学上&#xff0c;张量可以被看作是向量和矩阵的泛化。简单来说&#xff0c;张量是一种多维数组&#xff0c;它可以表示标量&#xff08;0维&am…

Linux系统:网络

目录 一、网络协议 1.网络协议概念 2.协议分层 3.OSI七层模型和TCP/IP五层&#xff08;或四层&#xff09;模型 4.为什么要有网络协议&#xff1f; 5.网络通信协议的原理 二、网络传输的基本流程 1.局域网的网络传输流程 1.MAC地址 2.局域网通信原理&#xff08;以太网…

远程桌面协助控制软件 RustDesk v1.3.3 多语言中文版

RustDesk 是一款开源的远程桌面软件&#xff0c;支持多平台操作&#xff0c;包括Windows、macOS、Linux、iOS、Android和Web。它提供端到端加密和基于角色的访问控制&#xff0c;确保安全性和隐私保护。使用简单&#xff0c;无需复杂配置&#xff0c;通过输入ID和密码即可快速连…

无线网络设备驱动开发

文章目录 一、总线设备驱动层二、网络设备驱动层1. 网络接口层2. 设备接口层3. 设备驱动功能层4. 网络设备和媒介层 无线网卡驱动可以借助PCI&#xff0c;SDIO&#xff0c;UART&#xff0c;USB来用于总线通讯。MAC层可以用软件来实现&#xff0c;也可以用硬件来实现。一般有mac…

每次执行 git pull 时都需要输入账号和密码

每次执行 git pull 时都需要输入账号和密码&#xff0c;可能是因为你的 Git 仓库使用的是 HTTPS 协议进行连接&#xff0c;而 HTTPS 协议默认需要每次请求时都进行身份验证。为了提高 convenience 和安全性&#xff0c;你可以采取以下几种方法来避免每次都输入账号和密码&#…