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

目录
  • springboot前端传参date类型后台处理
    • 先说结论
    • 解决方法
  • 前端如何发送date类型的参数给后端
    • 首先阐述一下常见的几种时间类型的区别
    • GET传参时
    • Post传参时
    • 后端接收请求代码
    • 模拟浏览器请求

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类型,不需要在做额外处理。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • springboot:接收date类型的参数方式

    目录 springboot:接收date类型的参数 springboot 传递Date等实体参数时候报错 springboot:接收date类型的参数 今天有个postmapping方法,地址都正确,就是死活进不去,真是奇怪了. 终于从日志中得出些端倪,见下: 只有这个属性报错,恰恰这个属性是Date型. 这句话说得更清楚: "defaultMessage":"Failed to convert property value of type 'java.lang.String

  • 基于springboot处理date参数过程解析

    这篇文章主要介绍了基于springboot处理date参数过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 前言 最近在后台开发中遇到了时间参数的坑,就单独把这个问题提出来找时间整理了一下: 正文 测试方法 bean代码: public class DateModelNoAnnotation { private Integer id; private Date receiveDate; } controller代码: @RestContr

  • 基于SpringBoot项目遇到的坑--Date入参问题

    目录 SpringBoot Date入参问题 1.传输中的Date类型时间不准确 2.后台返回的json数据 springboot接口入参的一些问题 入参绑定 入参错误全局异常处理 SpringBoot Date入参问题 springboot项目遇到的坑-----使用@ResponseBody @RequestBody,对象Date 类型入参,返回json格式化 1.传输中的Date类型时间不准确 时区会有8个小时偏差 原因分析 而SpringBoot默认的是Jackson框架转换,而Jacks

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

    目录 springboot前端传参date类型后台处理 先说结论 解决方法 前端如何发送date类型的参数给后端 首先阐述一下常见的几种时间类型的区别 GET传参时 Post传参时 后端接收请求代码 模拟浏览器请求 springboot前端传参date类型后台处理 先说结论 建议大家直接使用@JsonFormat,原因如下: 1.针对json格式:在配置文件中加以下配置 spring.jackson.date-format=yyyy-MM-dd HH:mm:ss spring.jackson.t

  • vue router 传参获取不到的解决方式

    在当前路由中有一个toArticle方法可以跳转到article页面 methods:{ toArticle:function(index) { this.$router.push({path:'/article',params:this.blogList[index]}); } } 在article中接受不到params mounted(){ console.log(this.$route.params) //这里输出undifined } 导致这样的原因是因为params需要通过name来获

  • SpringMVC @RequestBody Date类型的Json转换方式

    目录 SpringMVC @RequestBody Date类型的Json转换 通过GsonBuilder设置DateFormat的格式 以零配置框架为例 以零配置形式框架下的代码实现为例讲解 @RequestBody接收json字符串,自动将日期字符串转换为java.util.Date 1.配置springMVC可以接收json字符串 2.@Controller类代码 3.实体类对象代码 4.DateJsonSerializer类代码 5.DateJsonDeserializer类代码 Spr

  • Vue路由传参props解耦的三种方式小结

    目录 路由组件传参 布尔模式 对象模式 函数模式 总结 路由组件传参 在组件中使用 $route 会使之与其对应路由形成高度耦合,从而使组件只能在某些特定的 URL 上使用,限制了其灵活性. 使用 props 将组件和路由解耦: 布尔模式 商品展示界面传递id的动态参数 <template> <div class="home"> <TabBar></TabBar> <p>这是首页</p> <ul> &l

  • ConstraintValidator类如何实现自定义注解校验前端传参

    前言 今天项目碰到这么一个问题,前端传递的json格式到我的微服务后端转换为vo类,其中有一个Integer的字段后端希望它在固定的几个数里面取值,例如只能取值1.2.4. 一般咱们的思路是啥呢,找一些spring为我们提供的类似@Length.@NotBlank这些注解加在参数上面. 像下面这样 不过我这个校验一时间想不起来用哪个注解了,咋整呢?行吧,咱不求人,自己实现一个. 补充一句话,千万别直接拿着实体类往后传递到service层校验哈,太low了这样子. 一.利用@Constraint定

  • 浅谈Mybatis传参类型如何确定

    目录 I. 环境配置 1. 项目配置 2. 数据库表 II. 传参类型确定 1. 参数类型为整形 2. 指定jdbcType 3. 传参类型为String 4. TypeHandler实现参数替换强制添加引号 5. 小结 最近有小伙伴在讨论#{}与${}的区别时,有提到#{}是用字符串进行替换,就我个人的理解,它的主要作用是占位,最终替换的结果并不一定是字符串方式,比如我们传参类型是整形时,最终拼接的sql,传参讲道理也应该是整形,而不是字符串的方式 接下来我们来看一下,mapper接口中不同的

  • Docker如何给Springboot项目动态传参的实现方法

    背景 最近有些初学Docker的朋友问到,想通过docker-compose.yml来动态给微服务传参,而不是每次都要在项目配置文件硬编码,然后构建服务镜像,最后打包发布经过一些列流程才能更新配置,那能不能直接通过docker-compose.yml里把一些配置项放到环境变量,然后springboot项目自动从环境变量获取参数呢? 场景 假设现在有一个Springboot项目,它里面有一个数据库的配置项,但是不同的数据库测试环境(DEV\SIT\UAT),数据库ip有多个,想使用同一个Sprin

  • springboot通过spel结合aop实现动态传参的案例

    目录 前言 SpEl表达式简介 实例: SpEl结合AOP动态传参 小结 项目地址 前言 基于SpingBoot框架中, 我们随处可以见的便是各种各样的功能注解, 注解的实现原理AOP之前有说过(翻看本系列的前面几章即可), 这里不过多赘述. 那么, 你有没有碰到这样一种场景: 需要动态的传参数进注解, 注意是动态的而不是写死在代码里的. 针对这种需求, 今天, 我们就来实现一个简单的案例. SpEl表达式简介 正式撸代码之前, 先了解下SpEl (Spring Expression Langu

  • Spring Boot项目传参校验的最佳实践指南

    目录 场景还原 神注解加持 数据异常统一拦截 总结 场景还原 简单业务场景模拟: 假如你现在在做一个成绩录入系统,你愉快地用Spring Boot框架写了一个后台接口,用于接收前台浏览器传过来的 Student对象,并插入后台数据库. 我们将传入的 Student对象定义为: public class Student { private String name; // 姓名 private Integer score; // 考试分数(满分100分) private String mobile;

  • vuejs路由的传参及路由props配置详解

    目录 前言 方式1-使用query方式 命名路由 方式2-路由的params参数 query与params的区别 路由的props配置 路由配置的布尔模式 路由配置的对象模式 路由配置函数模式 总结 前言 在Vue项目里,去实现左侧菜单边栏多级内容的展示,导航的切换,以及内容链接的跳转等,用的都是前端路由vue-router,它的重要性,不可言喻 下面介绍一下Vue中的路由传参以及路由的prps配置 方式1-使用query方式 这里循环遍历一个列表为例,query的方式,跳转的url后面携带的一

随机推荐