Spring MVC中日期格式轉(zhuǎn)換的兩種實(shí)用方法
引言
在開發(fā)基于 Spring MVC 的 Web 應(yīng)用時(shí),日期格式的轉(zhuǎn)換是一個(gè)常見的需求。用戶在表單中輸入的日期通常是字符串類型,而在 Java 代碼中我們往往需要將其轉(zhuǎn)換為 Date
類型進(jìn)行處理。本文將詳細(xì)介紹 Spring MVC 中兩種日期格式轉(zhuǎn)換的方法,包括創(chuàng)建過程和最終的運(yùn)行結(jié)果。
方法一:使用 @DateTimeFormat 注解
1. 原理
@DateTimeFormat
注解是 Spring 框架提供的一個(gè)便捷注解,用于將字符串類型的日期轉(zhuǎn)換為 Date
類型。它可以直接應(yīng)用在實(shí)體類的日期屬性上,Spring MVC 在接收到請(qǐng)求參數(shù)時(shí)會(huì)自動(dòng)根據(jù)注解中指定的格式進(jìn)行轉(zhuǎn)換。
2. 創(chuàng)建過程
2.1 實(shí)體類添加注解
在 User
類的 birthday
屬性上添加 @DateTimeFormat
注解,指定日期格式。示例代碼如下:
package cn.tx.demo2; import org.springframework.format.annotation.DateTimeFormat; import java.io.Serializable; import java.util.Date; import java.util.List; import java.util.Map; public class User implements Serializable { // ... 其他屬性 ... @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date birthday; // ... 其他方法 ... }
2.2 控制器接收參數(shù)
在控制器中,當(dāng)接收到包含日期參數(shù)的請(qǐng)求時(shí),Spring MVC 會(huì)自動(dòng)將字符串日期轉(zhuǎn)換為 Date
類型。示例代碼如下:
package cn.tx.demo2; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Controller @RequestMapping("/user") public class UserController { @RequestMapping("/save2.do") public String save2(User user) { System.out.println("USER:" + user); return "suc"; } }
3.運(yùn)行結(jié)果:
使用原來(lái)日期格式:
報(bào)錯(cuò):因?yàn)槿掌诟袷礁牧?nbsp;
改成現(xiàn)在的格式:
成功:
方法二:自定義轉(zhuǎn)換器 StringToDate
1. 原理
自定義轉(zhuǎn)換器可以實(shí)現(xiàn)更復(fù)雜的日期格式轉(zhuǎn)換邏輯。通過實(shí)現(xiàn) org.springframework.core.convert.converter.Converter
接口,我們可以自定義字符串到 Date
類型的轉(zhuǎn)換規(guī)則。
2. 創(chuàng)建過程
2.1 創(chuàng)建自定義轉(zhuǎn)換器類
創(chuàng)建一個(gè)實(shí)現(xiàn) Converter<String, Date>
接口的類,實(shí)現(xiàn) convert
方法,用于將字符串類型的日期轉(zhuǎn)換為 Date
類型。示例代碼如下:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 啟用注解驅(qū)動(dòng) --> <mvc:annotation-driven/> <!-- 配置組件掃描 --> <context:component-scan base-package="cn.tx.demo1"/> <context:component-scan base-package="cn.tx.demo2"/> <!-- 配置視圖解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/pages/"/> <property name="suffix" value=".jsp"/> </bean> <!--配置日期類型轉(zhuǎn)換器,類型轉(zhuǎn)換器的組件,把日期類型轉(zhuǎn)換注入到組件對(duì)象中--> <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean"> <property name="converters"> <set> <bean class="cn.tx.demo2.StringToDate" /> </set> </property> </bean> <!--讓映射器、適配器和處理器生效(默認(rèn)不配置也是可以的)--> <mvc:annotation-driven conversion-service="conversionService"/> </beans>
2.3 控制器接收參數(shù)
在控制器中,同樣可以正常接收包含日期參數(shù)的請(qǐng)求,Spring MVC 會(huì)使用自定義的轉(zhuǎn)換器進(jìn)行日期轉(zhuǎn)換。示例代碼如下:
package cn.tx.demo2; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Controller @RequestMapping("/user") public class UserController { @RequestMapping("/save3.do") public String save3(User user) { System.out.println("user:" + user); return "suc"; } }
3. 運(yùn)行結(jié)果
當(dāng)用戶提交包含日期參數(shù)的表單時(shí),Spring MVC 會(huì)使用自定義的轉(zhuǎn)換器將字符串日期按照指定的格式轉(zhuǎn)換為 Date
類型,并賦值給 User
對(duì)象的 birthday
屬性。在控制器中可以直接使用該 Date
對(duì)象進(jìn)行后續(xù)處理。
總結(jié)
@DateTimeFormat
注解適用于簡(jiǎn)單的日期格式轉(zhuǎn)換,使用方便,只需要在實(shí)體類屬性上添加注解即可。- 自定義轉(zhuǎn)換器適用于需要更復(fù)雜轉(zhuǎn)換邏輯的場(chǎng)景,可以根據(jù)實(shí)際需求自定義轉(zhuǎn)換規(guī)則。
通過以上兩種方法,我們可以在 Spring MVC 中輕松實(shí)現(xiàn)日期格式的轉(zhuǎn)換,提高開發(fā)效率。希望本文對(duì)你有所幫助!
以上就是Spring MVC中日期格式轉(zhuǎn)換的兩種實(shí)用方法的詳細(xì)內(nèi)容,更多關(guān)于Spring MVC日期格式轉(zhuǎn)換的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
java實(shí)現(xiàn)后臺(tái)返回base64圖形編碼
這篇文章主要介紹了java實(shí)現(xiàn)后臺(tái)返回base64圖形編碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06Springboot整合xxljob,自定義添加、修改、刪除、停止、啟動(dòng)任務(wù)方式
這篇文章主要介紹了Springboot整合xxljob,自定義添加、修改、刪除、停止、啟動(dòng)任務(wù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-04-04關(guān)于Spring中@Transactional事務(wù)回滾的注意事項(xiàng)
這篇文章主要介紹了關(guān)于Spring中@Transactional事務(wù)回滾的注意事項(xiàng),回滾(Rollback)指的是程序或數(shù)據(jù)處理錯(cuò)誤,將程序或數(shù)據(jù)恢復(fù)到上一次正確狀態(tài)的行為。回滾包括程序回滾和數(shù)據(jù)回滾等類型,需要的朋友可以參考下2023-05-05java解析dbf之通過javadbf包生成和讀取dbf文件
這篇文章主要介紹了java通過javadbf讀取和生成DBF文件的方法,大家參考使用吧2014-01-01實(shí)例解析Java的Jackson庫(kù)中的數(shù)據(jù)綁定
這篇文章主要介紹了Java的Jackson庫(kù)中的數(shù)據(jù)綁定,這里分為通常的簡(jiǎn)單數(shù)據(jù)綁定與全數(shù)據(jù)綁定兩種情況來(lái)講,需要的朋友可以參考下2016-01-01Java使用EasyExcel實(shí)現(xiàn)高效的Excel讀寫操作
在日常開發(fā)中,Excel 文件的讀寫操作是一個(gè)常見的需求,EasyExcel 是阿里巴巴開源的一個(gè)高性能、易用的 Excel 讀寫庫(kù),可以大幅提高處理 Excel 文件的效率,本篇博客將從 EasyExcel 的基本概念、優(yōu)勢(shì)、安裝、讀寫操作以及高級(jí)用法展開,需要的朋友可以參考下2024-12-12