springboot前端传参date类型后台处理的方式
作者:香草天空Sky 发布时间:2023-04-12 16:47:35
springboot前端传参date类型后台处理
先说结论
建议大家直接使用@JsonFormat,原因如下:
1、针对json格式:在配置文件中加以下配置
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8
2、针对form表单格式,加下面这句配置就可以
spring.mvc.dateFormat = yyyy-MM-dd HH:mm:ss
3、也可以在pojo中对特定的date类型属性加了以下配置
@DateTimeFormat来控制入参,@JsonFormat来控制出参
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
4、前端以字符串的形式给后台传递 带有格式的 日期 和 数字 数据,导致后台无法解析数据:
解决方法
总结:
1.如果前后端传的数据都是json格式,那么后台接数据,传数据都可以用@JsonFormat ;
2.@DateTimeFormat适合后端接收前端传来的数据,不管是不是json格式都可以正确转换成Date型数据,只要前端传来的格式正确且后端@DateTimeFormat的pattern写正确。但是,这个注解无法将Date型数据用json传到前端去
综上所述,建议大家直接使用@JsonFormat
前端如何发送date类型的参数给后端
首先阐述一下常见的几种时间类型的区别
java.util.Date
日期格式为:年月日时分秒java.sql.Date
日期格式为:年月日java.sql.Time
日期格式为:时分秒java.sql.Timestamp
日期格式为:年月日时分秒纳秒(毫微秒)
前端传时间类型的参数给后端,一般有两种传参手段,GET传参和POST传参。
GET传参时
前段传过来的是一个string的字符串,后端用string类型接接收后需要做相关处理。处理代码如下:
String str="2021-5-21"; //假设str为前段传过来的时间类型参数
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date parse = simpleDateFormat.parse(str);
String format = simpleDateFormat.format(parse);
System.out.println(parse);
System.out.println(format);
Post传参时
前端传过来的是一个对象,时间参数只是对象当中的一个属性,该对象案例如下。
public class Student {
public String getName() {
return name;
}
public Date getDate() {
return date;
}
private String name;
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") //在时间属性上面加上该注解
private Date date;
}
后端接收请求代码
@RestController
@RequestMapping("/test")
public class TestTime {
@GetMapping("/time1")
public void service1(String time){
System.out.println(time);
}
@PostMapping("/time2")
public void service2(@RequestBody Student student){
System.out.println(student);
}
}
模拟浏览器请求
### GET 请求
GET {{baseUrl}}//test/time2?time=2021-5-8
### POST 请求
POST {{baseUrl}}//test/time2
Content-Type: application/json
{
"name": "小顾",
"date": "2020-05-08 17:08:10"
}
注:baseurl是我的ip地址,模拟请求的工具很多,上述只是一种工具而已,读者可用postman等工具模拟请求。
总结:get请求是字符串,需要做处理
post请求传的是对象,通过@requestbody,和在字段上添加jsonformat,会自动解析为date类型,不需要在做额外处理。
来源:https://blog.csdn.net/qsx741olm/article/details/100129755


猜你喜欢
- 线程组线程组可以批量管理线程和线程组对象。一级关联例子如下,建立一级关联。public class MyThread43 implement
- 简要介绍Retrofit是当前应用非常广泛的网络请求框架,通常结合RxJava来进行网络请求,本文将展示一个采用RxJava+Retrofi
- 本文实例讲述了C#操作windows系统进程的方法。分享给大家供大家参考。具体如下:这段代码演示了如何根据进程名关闭进程和启动进程/// &
- cookies的创建:在客户端创建一个username的cookies,其值为oneday,有效期为1天.方法1:Response.Cook
- 准备三个框架结合的lib包Spring3结合Struts2的步骤如下:1:开启Struts2结合Spring3,在struts.xml中添加
- 1.先通过程序生成报表样式的HTML页面,然后修改HTML页面的后缀名为DOC。 2.定制WORD文档的模板文件,在C#中操作WORD模板,
- SharedPreferences是Android中最容易理解的数据存储技术,实际上SharedPreferences处理的就是一个key-
- 前言需求要点如下:弹幕行数为3行,每条弹幕相互依靠但不存在重叠每条弹幕可交互点击跳转滚动速度恒定 触摸不可暂停播放弹幕数据固定一百条且支持轮
- 安装nodejs首先电脑中需要安装nodejs,这个就不多提了,windows就是下载node.exe,一步步安装就可以了。如需安装可参考一
- 当数据量比较大的时候,我们就需要考虑读写分离了,也就是动态切换数据库连接,对指定的数据库进行操作。在spring中实现动态的切换无非就是利用
- 数字签名广泛用于保护PDF文档,可见数字签名在日常生活中是相当重要的。在这篇文章中我将与大家分享如何给PDF文件添加可见的数字签名。首先我下
- 问题(1)synchronized的特性?(2)synchronized的实现原理?(3)synchronized是否可重入?(4)sync
- public bool isUtf8(byte[] rawText)
- 这篇文章主要介绍了SpringBoot整合Druid数据源过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价
- 调用SAP WebService服务需要转换操作1、通过浏览器访问SAP WebService地址,进行验证并生成wsdl文件地址并不是可以
- 目录单例模式单利模式使用Android 中使用内存泄漏问题本篇简单介绍如何在Android studio中 使用单例模式和使用注意事项。单例
- 一、二叉排序树定义1.二叉排序树的定义二叉排序树(Binary Sort Tree)又称二叉查找(搜索)树(Binary Search Tr
- 本文实例为大家分享了Android开发RecyclerView实现折线图效果的具体代码,供大家参考,具体内容如下效果图如下:实现的关键是自定
- 本文实例分析了C#中Convert.ToString和ToString的区别,对于初学者来说是很有必要加以熟练掌握的。具体分析如下:1.Co
- 本文实例为大家分享了Java Socket实现多人聊天系统的具体代码,供大家参考,具体内容如下前言GitHub地址开发环境:Eclipse