springboot接收日期類型參數(shù)的操作方法
嘮嗑部分
在做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ù)通常使用?進行傳遞,多個參數(shù)使用&分割,如:http://127.0.0.1:8888/date/receiveParamOfQuery?bothDate=2023-05-22
3、請求體參數(shù)
請求體參數(shù)也是我們常用的json傳參
那么為什么要回顧傳參方式呢,難道說傳參方式不同,接收日期參數(shù)的方式也不一樣嗎?是的沒錯
下面步入正文。
springboot接收日期類型參數(shù)
如果使用Get請求,直接使用對象接收,則可以使用@DateTimeFormat注解進行格式化,如:
@DateTimeFormat(pattern = "yyyy-MM-dd") private Date startBuyDate;
如果使用Post請求,@RequestBody接收請求體參數(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;
擴展:
springboot項目接收一個日期類型參數(shù)
1. 在Controller的方法參數(shù)中使用@RequestParam
注解接收日期參數(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. 在請求體中發(fā)送JSON格式的數(shù)據(jù),并使用@RequestBody
注解接收日期類型的字段,例如:
@PostMapping("/api/date") public String getDate(@RequestBody RequestBodyDto requestBodyDto) { Date date = requestBodyDto.getDate(); // ... }
其中,RequestBodyDto
為請求體對應(yīng)的Java對象,可以使用@JsonFormat
注解指定日期格式,例如:
public class RequestBodyDto { @JsonFormat(pattern = "yyyy-MM-dd") private Date date; // getter/setter }
無論使用哪種方式接收日期參數(shù),都需要注意指定日期格式,以避免類型轉(zhuǎn)換錯誤和日期格式化異常。
到此這篇關(guān)于springboot接收日期類型參數(shù)的文章就介紹到這了,更多相關(guān)springboot日期類型參數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mybatis?collection和association的區(qū)別解析
這篇文章主要介紹了mybatis?collection解析以及和association的區(qū)別,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-07-07使用IntelliJ IDEA調(diào)式Stream流的方法步驟
本文主要介紹了使用IntelliJ IDEA調(diào)式Stream流的方法步驟,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-05-05解決swaggerUI頁面沒有顯示Controller方法的坑
這篇文章主要介紹了解決swaggerUI頁面沒有顯示Controller方法的坑,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06