最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot接口正確接收時(shí)間參數(shù)的幾種方式

 更新時(shí)間:2023年09月06日 11:02:12   作者:全棧小白.  
這篇文章主要給大家介紹了關(guān)于SpringBoot接口正確接收時(shí)間參數(shù)的相關(guān)資料,文中通過代碼示例介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用springboot具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

嘮嗑部分

在做Java開發(fā)時(shí),肯定會(huì)碰到傳遞時(shí)間參數(shù)的情況吧,比如用戶的出生日期、活動(dòng)的開始,結(jié)束日期等等,這些參數(shù)往往是由前端傳遞過來的,那么在SpringBoot項(xiàng)目中,該如何正確的接收日期參數(shù)呢,這便是我們今日所說的內(nèi)容

首先我們來回顧一下常用的幾種傳參方式

1、Params參數(shù)

Params參數(shù)也稱路徑傳參,參數(shù)是路徑的一部分,如:http://127.0.0.1:8888/date/receiveParamOfParams/2023-05-22

2、Query參數(shù)

Query參數(shù)通常使用?進(jìn)行傳遞,多個(gè)參數(shù)使用&分割,如:http://127.0.0.1:8888/date/receiveParamOfQuery?bothDate=2023-05-22

3、請求體參數(shù)

請求體參數(shù)也是我們常用的json傳參

那么為什么要回顧傳參方式呢,難道說傳參方式不同,接收日期參數(shù)的方式也不一樣嗎?是的沒錯(cuò)

言歸正傳

日期是引用數(shù)據(jù)類型,在參數(shù)傳遞過程中是無法直接傳遞引用數(shù)據(jù)類型的參數(shù)的,對(duì)于日期時(shí)間而言,只能是傳遞指定格式的時(shí)間字符串,由框架幫我們轉(zhuǎn)化為時(shí)間類型,對(duì)于SpringBoot來說,我們需要了解兩個(gè)注解

@DateTimeFormat:將前端傳遞過來的時(shí)間格式的字符串轉(zhuǎn)化為Java中的時(shí)間格式(引用數(shù)據(jù)類型)

@JsonFormat:將前端傳遞過來的時(shí)間格式的字符串轉(zhuǎn)化為Java中的時(shí)間格式(引用數(shù)據(jù)類型)、將Java中的時(shí)間格式(引用數(shù)據(jù)類型)以指定的格式轉(zhuǎn)成Json字符串

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

那下面就讓我們分別說一下幾種傳遞方式吧

Params參數(shù)

這種參數(shù)傳遞時(shí)間比較麻煩,大體思路是首先將時(shí)間格式的字符串以字符串傳遞過來,我們自行轉(zhuǎn)化為時(shí)間

@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;
}

image-20230522140139654

Query參數(shù)

如果單個(gè)接收的話,也可以根據(jù)Params參數(shù)一樣,先以字符串接收,自己轉(zhuǎn)化為時(shí)間即可

在SpringBoot中,如果我們以JavaBean的形式接收Query參數(shù),Spring會(huì)自動(dòng)的映射

@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;
}

運(yùn)行結(jié)果

image-20230522140724166

注意哈,報(bào)錯(cuò)了,意思是不能夠?qū)⒁粋€(gè)字符串解析為LocalDate類型,此時(shí)我們需要在字段上加@DateTimeFormat注解

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

運(yùn)行看結(jié)果

image-20230522140931120

請求體傳參(json傳參)

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

DateReq實(shí)體類如上哈

運(yùn)行結(jié)果

image-20230522141144246

又報(bào)錯(cuò)了,SpringBoot默認(rèn)的json解析器是jackson,它無法將時(shí)間字符串解析為時(shí)間類型,那么對(duì)于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;
}

運(yùn)行看結(jié)果

image-20230522141432210

換成@JsonFormat注解就可以了,大伙有沒有發(fā)現(xiàn),紅圈的位置,這個(gè)注解也能幫我們格式化時(shí)間輸出的樣式,可對(duì)比Query參數(shù)輸出的結(jié)果

結(jié)語

1、非Json傳參使用@DateTimeFormat,json傳參使用@JsonFormat。

2、SpringBoot默認(rèn)項(xiàng)目中的json解析器是jackson,如果配置的是fastjson,將@JsonFormat換成@JSONField注解即可。

到此這篇關(guān)于SpringBoot接口正確接收時(shí)間參數(shù)的文章就介紹到這了,更多相關(guān)SpringBoot接口接收時(shí)間參數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java對(duì)時(shí)間的簡單操作實(shí)例

    Java對(duì)時(shí)間的簡單操作實(shí)例

    這篇文章主要介紹了Java對(duì)時(shí)間的簡單操作,實(shí)例分析了針對(duì)java.util.Date的各類常見操作,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-01-01
  • Java基本數(shù)據(jù)類型包裝類原理解析

    Java基本數(shù)據(jù)類型包裝類原理解析

    這篇文章主要介紹了Java基本數(shù)據(jù)類型包裝類原理解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Hibernate原理及應(yīng)用

    Hibernate原理及應(yīng)用

    本文主要介紹了Hibernate原理及應(yīng)用。具有很好的參考價(jià)值,下面跟著小編一起來看下吧
    2017-02-02
  • Java反射機(jī)制實(shí)例代碼分享

    Java反射機(jī)制實(shí)例代碼分享

    這篇文章主要介紹了Java反射機(jī)制實(shí)例代碼分享,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • Spring 整合多個(gè)配置文件的方法

    Spring 整合多個(gè)配置文件的方法

    在一些大型應(yīng)用中,可能存在多個(gè)配置文件,這篇文章給大家介紹了Spring 整合多個(gè)配置文件的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,感興趣的朋友一起看看吧
    2018-05-05
  • Java字符串拼接的優(yōu)雅方式實(shí)例詳解

    Java字符串拼接的優(yōu)雅方式實(shí)例詳解

    字符串拼接一般使用“+”,但是“+”不能滿足大批量數(shù)據(jù)的處理,下面這篇文章主要給大家介紹了關(guān)于Java字符串拼接的幾種優(yōu)雅方式,需要的朋友可以參考下
    2021-07-07
  • Javaweb請求轉(zhuǎn)發(fā)及重定向?qū)崿F(xiàn)詳解

    Javaweb請求轉(zhuǎn)發(fā)及重定向?qū)崿F(xiàn)詳解

    這篇文章主要介紹了Javaweb請求轉(zhuǎn)發(fā)及重定向?qū)崿F(xiàn)詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Java8 LocalDateTime極簡時(shí)間日期操作小結(jié)

    Java8 LocalDateTime極簡時(shí)間日期操作小結(jié)

    這篇文章主要介紹了Java8-LocalDateTime極簡時(shí)間日期操作整理,通過實(shí)例代碼給大家介紹了java8 LocalDateTime 格式化問題,需要的朋友可以參考下
    2020-04-04
  • spring.mvc.servlet.load-on-startup屬性方法源碼解讀

    spring.mvc.servlet.load-on-startup屬性方法源碼解讀

    這篇文章主要介紹了spring.mvc.servlet.load-on-startup的屬性方法源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • java中Arthas的作用和使用方式

    java中Arthas的作用和使用方式

    Arthas 是由阿里巴巴開源的 Java 診斷工具,主要用于在生產(chǎn)環(huán)境中診斷和解決 Java 應(yīng)用問題,它提供實(shí)時(shí)監(jiān)控、類信息查看、動(dòng)態(tài)追蹤、條件表達(dá)式斷點(diǎn)等功能,支持非侵入式設(shè)計(jì)和高擴(kuò)展性,通過 Arthas,開發(fā)者可以在不停止應(yīng)用的情況下,快速定位和解決問題
    2025-01-01

最新評(píng)論

海林市| 淮阳县| 咸宁市| 寻甸| 绥芬河市| 内丘县| 济阳县| 巴青县| 保德县| 龙游县| 唐河县| 鄂伦春自治旗| 湛江市| 天水市| 永泰县| 莱西市| 高安市| 榆社县| 伽师县| 平乡县| 怀柔区| 镇宁| 邵武市| 富阳市| 西藏| 秦皇岛市| 日照市| 茌平县| 乐业县| 潜江市| 广宗县| 来宾市| 香河县| 淮滨县| 齐河县| 诸城市| 白河县| 涞水县| 曲靖市| 阿克苏市| 新宁县|