springboot接收日期類(lèi)型參數(shù)的操作方法
嘮嗑部分
在做Java開(kāi)發(fā)時(shí),肯定會(huì)碰到傳遞時(shí)間參數(shù)的情況吧,比如用戶的出生日期、活動(dòng)的開(kāi)始,結(jié)束日期等等,這些參數(shù)往往是由前端傳遞過(guò)來(lái)的,那么在SpringBoot項(xiàng)目中,該如何正確的接收日期參數(shù)呢,這便是我們今日所說(shuō)的內(nèi)容
首先我們來(lái)回顧一下常用的幾種傳參方式
1、Params參數(shù)
Params參數(shù)也稱(chēng)路徑傳參,參數(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、請(qǐng)求體參數(shù)
請(qǐng)求體參數(shù)也是我們常用的json傳參
那么為什么要回顧傳參方式呢,難道說(shuō)傳參方式不同,接收日期參數(shù)的方式也不一樣嗎?是的沒(méi)錯(cuò)
下面步入正文。
springboot接收日期類(lèi)型參數(shù)
如果使用Get請(qǐng)求,直接使用對(duì)象接收,則可以使用@DateTimeFormat注解進(jìn)行格式化,如:
@DateTimeFormat(pattern = "yyyy-MM-dd") private Date startBuyDate;
如果使用Post請(qǐng)求,@RequestBody接收請(qǐng)求體參數(shù),默認(rèn)解析日期格式為yyyy-MM-dd HH:mm:ss , 如果需要接收其他格式的參數(shù),則可以使用@JsonFormat注解,如:
@JsonFormat(timezone="GMT+8",pattern="yyyy-MM-dd") private Date buyDate;
也可以使用java8新增的LocalDate自定義序列化,如:
@Configuration
@ConditionalOnClass(ObjectMapper.class)
@AutoConfigureBefore(JacksonAutoConfiguration.class)
public class JacksonConfig {
@Bean
public Jackson2ObjectMapperBuilderCustomizer customizer() {
return builder -> {
builder.locale(Locale.CHINA);
builder.timeZone(TimeZone.getTimeZone(ZoneId.systemDefault()));
builder.simpleDateFormat(DatePattern.NORM_DATETIME_PATTERN);
builder.modules(new TimeModule());
};
}
}public class TimeModule extends SimpleModule {
public TimeModule() {
super(PackageVersion.VERSION);
this.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN)));
this.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN)));
this.addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern(DatePattern.NORM_TIME_PATTERN)));
this.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN)));
this.addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN)));
this.addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern(DatePattern.NORM_TIME_PATTERN)));
}
}//yyyy-MM-dd HH:mm:ss private LocalDateTime buyDateTime; //yyyy-MM-dd private LocalDate buyDate; //HH:mm:ss private LocalTime buyTime;
擴(kuò)展:
springboot項(xiàng)目接收一個(gè)日期類(lèi)型參數(shù)
1. 在Controller的方法參數(shù)中使用@RequestParam注解接收日期參數(shù),可以通過(guò)指定日期格式實(shí)現(xiàn),例如:
@GetMapping("/api/date") public String getDate(@RequestParam("date") @DateTimeFormat(pattern = "yyyy-MM-dd") Date date) { // ... } 2.使用@PathVariable注解接收日期參數(shù),例如
@GetMapping("/api/date/{date}")
public String getDate(@PathVariable("date") @DateTimeFormat(pattern = "yyyy-MM-dd") Date date) {
// ...
} 3. 在請(qǐng)求體中發(fā)送JSON格式的數(shù)據(jù),并使用@RequestBody注解接收日期類(lèi)型的字段,例如:
@PostMapping("/api/date")
public String getDate(@RequestBody RequestBodyDto requestBodyDto) {
Date date = requestBodyDto.getDate();
// ...
} 其中,RequestBodyDto為請(qǐng)求體對(duì)應(yīng)的Java對(duì)象,可以使用@JsonFormat注解指定日期格式,例如:
public class RequestBodyDto {
@JsonFormat(pattern = "yyyy-MM-dd")
private Date date;
// getter/setter
}無(wú)論使用哪種方式接收日期參數(shù),都需要注意指定日期格式,以避免類(lèi)型轉(zhuǎn)換錯(cuò)誤和日期格式化異常。
到此這篇關(guān)于springboot接收日期類(lèi)型參數(shù)的文章就介紹到這了,更多相關(guān)springboot日期類(lèi)型參數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Json字符串轉(zhuǎn)Java對(duì)象和List代碼實(shí)例
這篇文章主要介紹了Json字符串轉(zhuǎn)Java對(duì)象和List代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06
關(guān)于@JsonProperty和@JSONField注解的區(qū)別及用法
這篇文章主要介紹了關(guān)于@JsonProperty和@JSONField注解的區(qū)別及用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08
解決IDEA報(bào)錯(cuò)war?exploded?is?not?valid問(wèn)題
在使用IntelliJ?IDEA時(shí)遇到'[projectname]warexploded'無(wú)效的問(wèn)題,可以通過(guò)清除項(xiàng)目列表、重新導(dǎo)入項(xiàng)目和配置新的Tomcat來(lái)解決,確保在Tomcat配置中,將ApplicationContext修改為僅包含一個(gè)'/',這一方法或許能幫助遇到相似問(wèn)題的開(kāi)發(fā)者2024-09-09
SpringBoot 回滾操作的幾種實(shí)現(xiàn)方式
回滾操作是一種常見(jiàn)的操作,用于撤銷(xiāo)之前執(zhí)行的操作,本文主要介紹了SpringBoot回滾操作的幾種實(shí)現(xiàn)方式,包含基于異常類(lèi)型的回滾、基于自定義邏輯的回滾和基于數(shù)據(jù)庫(kù)狀態(tài)的回滾,感興趣的可以了解一下2024-03-03
java版數(shù)獨(dú)游戲界面實(shí)現(xiàn)(二)
這篇文章主要為大家詳細(xì)介紹了java版數(shù)獨(dú)游戲界面實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12
Spring Boot項(xiàng)目添加外部Jar包以及配置多數(shù)據(jù)源的完整步驟
這篇文章主要給大家介紹了關(guān)于Spring Boot項(xiàng)目添加外部Jar包以及配置多數(shù)據(jù)源的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06
Java基礎(chǔ)知識(shí)精通循環(huán)結(jié)構(gòu)與break及continue
循環(huán)結(jié)構(gòu)是指在程序中需要反復(fù)執(zhí)行某個(gè)功能而設(shè)置的一種程序結(jié)構(gòu)。它由循環(huán)體中的條件,判斷繼續(xù)執(zhí)行某個(gè)功能還是退出循環(huán),選擇結(jié)構(gòu)用于判斷給定的條件,根據(jù)判斷的結(jié)果判斷某些條件,根據(jù)判斷的結(jié)果來(lái)控制程序的流程2022-04-04
Bean的管理與SpringBoot自動(dòng)裝配原理解讀
在SpringBoot項(xiàng)目中,啟動(dòng)時(shí)自動(dòng)創(chuàng)建IOC容器并初始化bean對(duì)象,支持通過(guò)依賴(lài)注入獲取,Bean可以通過(guò)name或類(lèi)型獲取,支持單例和非單例等多種作用域,對(duì)于第三方Bean,推薦在配置類(lèi)中用@Bean標(biāo)識(shí)方法進(jìn)行定義2024-11-11

