欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

嘮嗑部分

在做Java開發(fā)時,肯定會碰到傳遞時間參數(shù)的情況吧,比如用戶的出生日期、活動的開始,結(jié)束日期等等,這些參數(shù)往往是由前端傳遞過來的,那么在SpringBoot項目中,該如何正確的接收日期參數(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)行傳遞,多個參數(shù)使用&分割,如:http://127.0.0.1:8888/date/receiveParamOfQuery?bothDate=2023-05-22

3、請求體參數(shù)

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

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

言歸正傳

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

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

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

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

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

Params參數(shù)

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

@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ù)

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

在SpringBoot中,如果我們以JavaBean的形式接收Query參數(shù),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;
}

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

image-20230522140724166

注意哈,報錯了,意思是不能夠?qū)⒁粋€字符串解析為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;
}

運(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

又報錯了,SpringBoot默認(rèn)的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;
}

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

image-20230522141432210

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

結(jié)語

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

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

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

相關(guān)文章

  • Java?Collection接口中的常用方法總結(jié)

    Java?Collection接口中的常用方法總結(jié)

    這篇文章將大概用代碼案例簡單總結(jié)一下?Collection?接口中的一些方法,我們會以他的實(shí)現(xiàn)類?Arraylist?為例創(chuàng)建對象??煲黄饋砜纯窗?/div> 2022-12-12
  • 關(guān)于jar包增量更新分析

    關(guān)于jar包增量更新分析

    這篇文章主要介紹了關(guān)于jar包增量更新分析,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Java實(shí)現(xiàn)定時任務(wù)的方法總結(jié)

    Java實(shí)現(xiàn)定時任務(wù)的方法總結(jié)

    這篇文章主要為大家詳細(xì)介紹了Java中實(shí)現(xiàn)定時任務(wù)的常用7中方法,文中的示例代碼講解詳細(xì),具有一定的借鑒價值,需要的小伙伴可以參考一下
    2023-06-06
  • Java并發(fā)編程之重入鎖與讀寫鎖

    Java并發(fā)編程之重入鎖與讀寫鎖

    這篇文章主要介紹了Java并發(fā)編程之重入鎖與讀寫鎖,文中相關(guān)實(shí)例代碼詳細(xì),測試可用,具有一定參考價值,需要的朋友可以了解下。
    2017-09-09
  • SpringBoot實(shí)現(xiàn)過濾器Filter的三種方式

    SpringBoot實(shí)現(xiàn)過濾器Filter的三種方式

    過濾器Filter由Servlet提供,基于函數(shù)回調(diào)實(shí)現(xiàn)鏈?zhǔn)綄W(wǎng)絡(luò)請求與響應(yīng)的攔截與修改,本文講給大家詳細(xì)介紹SpringBoot實(shí)現(xiàn)過濾器Filter的三種方式,需要的朋友可以參考下
    2023-08-08
  • 計算機(jī)編程語言發(fā)展史

    計算機(jī)編程語言發(fā)展史

    這篇文章主要介紹了Java計算機(jī)編程語言發(fā)展史,編程語言?可以簡單的理解為一種計算機(jī)和人都能識別的語言。一種計算機(jī)語言讓程序員能夠準(zhǔn)確地定義計算機(jī)所需要使用的數(shù)據(jù),并精確地定義在不同情況下所應(yīng)當(dāng)采取的行動,下面詳細(xì)內(nèi)容,需要的小伙伴可以參考一下
    2022-01-01
  • 解決mybatis中的mapper命名問題

    解決mybatis中的mapper命名問題

    這篇文章主要介紹了解決mybatis中的mapper命名問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Spring?Cloud?oauth2?認(rèn)證服務(wù)搭建過程示例

    Spring?Cloud?oauth2?認(rèn)證服務(wù)搭建過程示例

    這篇文章主要為大家介紹了Spring?Cloud?oauth2?認(rèn)證服務(wù)搭建過程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • 使用jaxws建立webservice客戶端并實(shí)現(xiàn)soap消息的handler驗(yàn)證示例

    使用jaxws建立webservice客戶端并實(shí)現(xiàn)soap消息的handler驗(yàn)證示例

    這篇文章主要介紹了使用jaxws建立webservice客戶端并實(shí)現(xiàn)soap消息的handler驗(yàn)證示例,需要的朋友可以參考下
    2014-03-03
  • 詳解Java-Jackson使用

    詳解Java-Jackson使用

    這篇文章主要介紹了Java-Jackson使用詳解,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03

最新評論