SpringBoot接口如何正确地接收时间参数

这篇具有很好参考价值的文章主要介绍了SpringBoot接口如何正确地接收时间参数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

唠嗑部分

在做Java开发时,肯定会碰到传递时间参数的情况吧,比如用户的出生日期、活动的开始,结束日期等等,这些参数往往是由前端传递过来的,那么在SpringBoot项目中,该如何正确的接收日期参数呢,这便是我们今日所说的内容

首先我们来回顾一下常用的几种传参方式

1、Params参数

Params参数也称路径传参,参数是路径的一部分,如:http://127.0.0.1:8888/date/receiveParamOfParams/2023-05-22

2、Query参数

Query参数通常使用?进行传递,多个参数使用&分割,如:http://127.0.0.1:8888/date/receiveParamOfQuery?bothDate=2023-05-22

3、请求体参数

请求体参数也是我们常用的json传参

那么为什么要回顾传参方式呢,难道说传参方式不同,接收日期参数的方式也不一样吗?是的没错

言归正传

日期是引用数据类型,在参数传递过程中是无法直接传递引用数据类型的参数的,对于日期时间而言,只能是传递指定格式的时间字符串,由框架帮我们转化为时间类型,对于SpringBoot来说,我们需要了解两个注解

@DateTimeFormat:将前端传递过来的时间格式的字符串转化为Java中的时间格式(引用数据类型)

@JsonFormat:将前端传递过来的时间格式的字符串转化为Java中的时间格式(引用数据类型)、将Java中的时间格式(引用数据类型)以指定的格式转成Json字符串

注意:@JsonFormat注解是由jackson提供的,而@DateTimeFormat注解是由Spring提供的

那下面就让我们分别说一下几种传递方式吧

Params参数

这种参数传递时间比较麻烦,大体思路是首先将时间格式的字符串以字符串传递过来,我们自行转化为时间

@PostMapping("/date/receiveParamOfParams/{date}")
public CommonResult receiveParamOfParams(@PathVariable("date") String date){
    CommonResult r = CommonResult.success(null);
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
    if (StringUtils.hasLength(date)) {
        try {
            LocalDate localDate = LocalDate.parse(date, formatter);
            r.setData(localDate);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    return r;
}

springboot接收日期格式,Java全栈开发,SpringBoot,spring boot,java,spring

Query参数

如果单个接收的话,也可以根据Params参数一样,先以字符串接收,自己转化为时间即可

在SpringBoot中,如果我们以JavaBean的形式接收Query参数,Spring会自动的映射

@PostMapping("/date/receiveParamOfQuery")
public CommonResult receiveParamOfQuery(DateReq req){
    CommonResult r = CommonResult.success(null);
    r.setData(req);
    return r;
}

DateReq

@Data
public class DateReq {
    private LocalDate bothDate;
    private LocalDateTime startDateTime;
}

运行结果

springboot接收日期格式,Java全栈开发,SpringBoot,spring boot,java,spring

注意哈,报错了,意思是不能够将一个字符串解析为LocalDate类型,此时我们需要在字段上加@DateTimeFormat注解

@Data
public class DateReq {
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate bothDate;
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime startDateTime;
}

运行看结果

springboot接收日期格式,Java全栈开发,SpringBoot,spring boot,java,spring

请求体传参(json传参)

@PostMapping("/date/receiveParamOfJson")
public CommonResult receiveParamOfJson(@RequestBody DateReq req){
    CommonResult r = CommonResult.success(null);
    r.setData(req);
    return r;
}

DateReq实体类如上哈

运行结果

springboot接收日期格式,Java全栈开发,SpringBoot,spring boot,java,spring

又报错了,SpringBoot默认的json解析器是jackson,它无法将时间字符串解析为时间类型,那么对于json传参而言,@DateTimeFormat注解就失去它的作用了

@Data
public class DateReq {
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate bothDate;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime startDateTime;
}

运行看结果

springboot接收日期格式,Java全栈开发,SpringBoot,spring boot,java,spring

换成@JsonFormat注解就可以了,大伙有没有发现,红圈的位置,这个注解也能帮我们格式化时间输出的样式,可对比Query参数输出的结果

结语

1、非Json传参使用@DateTimeFormat,json传参使用@JsonFormat。

2、SpringBoot默认项目中的json解析器是jackson,如果配置的是fastjson,将@JsonFormat换成@JSONField注解即可。

3、制作不易,一键三连再走吧,您的支持永远是我最大的动力!文章来源地址https://www.toymoban.com/news/detail-616273.html

到了这里,关于SpringBoot接口如何正确地接收时间参数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringBoot接收请求参数的方式

    因为SpringBoot封装了Servlet,所以也允许使用HttpServletRequest类中的方法来获取 使用postman发送:http://localhost:8080/demo01?name=张三age=30,查看结果 springboot允许直接使用参数获取,简单优雅;另外,还也可使用“@RequestParam”注解给参数设置别名,这样页面提交的参数名使用别名也能

    2024年02月16日
    浏览(39)
  • springboot项目接收一个日期类型参数

            1. 在Controller的方法参数中使用 @RequestParam 注解接收日期参数,可以通过指定日期格式实现,例如:         2.使用 @PathVariable 注解接收日期参数,例如         3. 在请求体中发送JSON格式的数据,并使用 @RequestBody 注解接收日期类型的字段,例如:      

    2024年02月12日
    浏览(27)
  • SpringBoot文件上传同时,接收复杂参数

    目录 环境信息 问题描述 错误分析 解决方法 简单参数 总结         Spring Boot:2.0.8.RELEASE         Spring Boot内置的tomcat:tomcat-embed-core 8.5.37         收到文件上传的开发工作,要求能适配各种场景,并且各场景的请求参数不一样,因此接收的参数不能是固定的几个字段

    2024年02月09日
    浏览(34)
  • springboot接收参数的几种方式

    传参格式:?号传参,在地址栏上加参数 传参格式:请求体传参 form-data的请求是在body中,为key=value格式,同时可以传文件,Content-Type为multipart/form-data,后端可以用@RequestParam接收。 json传参也是在body当中,只不过json是一种数据格式,后端可以用@RequestBody接收。 地址栏传参,

    2024年02月10日
    浏览(31)
  • springboot后端接收前端传数组参数方法

    与@RequestBody不同,@RequestParam传递的数组中有多少个值,便排排下来写便是 (注意微操,参数名需为key的名称为@RequestParam括号里的名称,而不是定义的数组名)

    2024年02月16日
    浏览(28)
  • springboot接收前端参数的几种方式

    目录 第一种:直接在方法中指定参数 第二种:使用@requesrParam注解 第三种方法:基于@pathVariable  第四种方法:基于@ResquestBody 在开始之前,我们需要一下准备工作,创建数据库,springboot工程,添加依赖,配置文件,使用的技术有mybatisplus,springboot,maven,mysql。 首先,数据库

    2024年02月07日
    浏览(28)
  • 【SpringBoot 后台接收XML类型参数和返回XML类型参数】

    记录一下接收xml参数的坑 简单类型xml 1.使用@XmlRootElement注解指定根元素名称,不指定默认使用类名和属性名(小写),可以使用name属性指定 根元素和子元素的标签名 2.在controller 使用@RequestBody 接收请求参数 3.返回xml报文 在@xxxMapping中添加属性produces = MediaType.APPLICATION_XML_VALUE,即可

    2024年02月16日
    浏览(32)
  • 【SpringBoot系列】接收前端参数的几种方式

    前言 在现代Web开发中,前后端分离的架构已经成为主流。前端负责展示页面和用户交互,而后端则负责处理业务逻辑和数据存储。在这种架构下,前端需要将用户输入的数据发送给后端进行处理。而Spring Boot作为一种快速开发框架,提供了多种方式来接收前端数据。 本文将介

    2024年02月05日
    浏览(34)
  • SpringBoot——请求-Postman工具-6种常见请求参数接收

    前后端分离开发的情况下每开发一个功能都要对接口进行测试,通常都会去浏览器访问测试,但是这样子都是get请求,测试不了post请求。 postman可以模拟浏览器发起任何形式的http请求 ,下载完postman后登陆进去 创建一个workspace   这部分在Javaweb——Request通用方式获取请求参数

    2024年02月02日
    浏览(32)
  • SpringBoot中接收POST参数的几种方式

    今天在做一个vue前后端分离项目的过程中,踩了一个坑,记录一下 前端如下: 用户名字段: username 密码字段: password 提交后,发现后端怎么也收不到参数,总结如下: 常见的接收post参数,有三种 额外参数: 使用 required = false 标注参数是非必须的。 使用 defaultValue 给参数

    2024年02月15日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包