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

springboot前端传参date类型后台处理的方式

3、也可以在pojo中对特定的date类型属性加了以下配置

@DateTimeFormat来控制入参,@JsonFormat来控制出参

 @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
 @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")    

springboot前端传参date类型后台处理的方式

4、前端以字符串的形式给后台传递 带有格式的 日期 和 数字 数据,导致后台无法解析数据:

springboot前端传参date类型后台处理的方式

解决方法

springboot前端传参date类型后台处理的方式

总结:

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

标签:springboot,前端传参,date类型
0
投稿

猜你喜欢

  • java 利用反射获取内部类静态成员变量的值操作

    2023-03-28 21:30:04
  • OpenCV图像处理之常见的图像灰度变换

    2021-09-09 07:47:01
  • C#byte数组传入C操作方法

    2021-11-06 12:30:18
  • C# 使用CancellationTokenSource取消多线程

    2023-11-15 00:31:54
  • JavaSE中compare、compareTo的区别

    2021-12-28 09:37:47
  • spring mvc实现文件上传并携带其他参数的示例

    2023-11-20 11:54:06
  • Java中Builder模式的实现详解

    2022-08-06 15:37:24
  • Android开发两个activity之间传值示例详解

    2023-11-27 20:00:45
  • Java 详解循环屏障CyclicBarrier如何实现多线程分段等待执行完成

    2022-02-16 04:50:49
  • java参数传递之值传递和引用传递

    2021-09-26 10:28:46
  • Java实现简单的扫雷小程序

    2022-11-18 02:14:07
  • Android 媒体开发之MediaPlayer状态机接口方法实例解析

    2023-04-20 06:53:22
  • Android提高之ListView实现自适应表格的方法

    2023-04-05 17:25:09
  • Android基础之startActivityForResult()的用法详解

    2022-05-28 03:37:29
  • SpringBoot绿叶显示yml和端口问题及解决方法

    2023-12-09 00:29:13
  • SpringMvc web.xml配置实现原理过程解析

    2023-04-14 01:42:27
  • java抓取网页或文件中的邮箱号码

    2023-07-30 19:19:28
  • java实现点击按钮弹出新窗体功能

    2022-02-18 14:39:55
  • 基于@PathVariable注解的用法说明

    2023-10-01 17:22:55
  • 基于Java中字符串indexof() 的使用方法

    2022-12-09 19:37:38
  • asp之家 软件编程 m.aspxhome.com