亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Spring?MVC實(shí)現(xiàn)GET請(qǐng)求接收Date類型參數(shù)

 更新時(shí)間:2022年07月05日 08:39:35   作者:行云之流水  
這篇文章主要介紹了Spring?MVC實(shí)現(xiàn)GET請(qǐng)求接收Date類型參數(shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

SpringMVC GET請(qǐng)求接收Date類型參數(shù)

Controller方法定義

@GetMapping('/list-by-date')
ResponseBean listByUserIdAndDateRange(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date fromDate)?
? ? System.out.println(fromDate)
}

請(qǐng)求

curl -X GET http://localhost/list-by-date?fromDate=2019-02-27 00:01:00

SpringMVC接收哪些類型參數(shù)參數(shù)

支持的數(shù)據(jù)類型

基本類型參數(shù):

包括基本類型和 String 類型

POJO 類型參數(shù):

包括實(shí)體類,以及關(guān)聯(lián)的實(shí)體類

數(shù)組和集合類型參數(shù):

包括 List 結(jié)構(gòu)和 Map 結(jié)構(gòu)的集合(包括數(shù)組)

SpringMVC 綁定請(qǐng)求參數(shù)是自動(dòng)實(shí)現(xiàn)的,但是要想使用,必須遵循使用要求。

使用要求

如果是基本類型或者 String 類型:

要求我們的參數(shù)名稱必須和控制器中方法的形參名稱保持一致。(嚴(yán)格區(qū)分大小寫)

如果是 POJO 類型,或者它的關(guān)聯(lián)對(duì)象:

要求表單中參數(shù)名稱和 POJO 類的屬性名稱保持一致。并且控制器方法的參數(shù)類型是 POJO 類型。

如果是集合類型,有兩種方式:

  • 第一種:

要求集合類型的請(qǐng)求參數(shù)必須在 POJO 中。在表單中請(qǐng)求參數(shù)名稱要和 POJO 中集合屬性名稱相同。

給 List 集合中的元素賦值,使用下標(biāo)。

給 Map 集合中的元素賦值,使用鍵值對(duì)。

  • 第二種:

接收的請(qǐng)求參數(shù)是 json 格式數(shù)據(jù)。需要借助一個(gè)注解實(shí)現(xiàn)。

注意:

它還可以實(shí)現(xiàn)一些數(shù)據(jù)類型自動(dòng)轉(zhuǎn)換。內(nèi)置轉(zhuǎn)換器全都在:

org.springframework.core.convert.support 包下。有:
java.lang.Boolean -> java.lang.String : ObjectToStringConverter
java.lang.Character -> java.lang.Number : CharacterToNumberFactory
java.lang.Character -> java.lang.String : ObjectToStringConverter
java.lang.Enum -> java.lang.String : EnumToStringConverter
java.lang.Number -> java.lang.Character : NumberToCharacterConverter
java.lang.Number -> java.lang.Number : NumberToNumberConverterFactory
java.lang.Number -> java.lang.String : ObjectToStringConverter
java.lang.String -> java.lang.Boolean : StringToBooleanConverter
java.lang.String -> java.lang.Character : StringToCharacterConverter
java.lang.String -> java.lang.Enum : StringToEnumConverterFactory
java.lang.String -> java.lang.Number : StringToNumberConverterFactory
java.lang.String -> java.util.Locale : StringToLocaleConverter
java.lang.String -> java.util.Properties : StringToPropertiesConverter
java.lang.String -> java.util.UUID : StringToUUIDConverter
java.util.Locale -> java.lang.String : ObjectToStringConverter
java.util.Properties -> java.lang.String : PropertiesToStringConverter
java.util.UUID -> java.lang.String : ObjectToStringConverter
......
如遇特殊類型轉(zhuǎn)換要求,需要我們自己編寫自定義類型轉(zhuǎn)換器。

自定義類型轉(zhuǎn)換器

  • 第一步:定義一個(gè)類,實(shí)現(xiàn) Converter 接口,該接口有兩個(gè)泛型。
public interface Converter<S, T> {//S:表示接受的類型,T:表示目標(biāo)類型
? ? /**
? ? ?* 實(shí)現(xiàn)類型轉(zhuǎn)換的方法
? ? ?*/
? ? @Nullable
? ? T convert(S source);
}
/**
?* 自定義類型轉(zhuǎn)換器
?*/
public class StringToDateConverter implements Converter<String, Date> {
? ? /**
? ? ?* 用于把 String 類型轉(zhuǎn)成日期類型
? ? ?*/
? ? @Override
? ? public Date convert(String source) {
? ? ? ? DateFormat format = null;
? ? ? ? try {
? ? ? ? ? ? if(StringUtils.isEmpty(source)) {
? ? ? ? ? ? ? ? throw new NullPointerException("請(qǐng)輸入要轉(zhuǎn)換的日期");
? ? ? ? ? ? }
? ? ? ? ? ? format = new SimpleDateFormat("yyyy-MM-dd");
? ? ? ? ? ? Date date = format.parse(source);
? ? ? ? ? ? return date;
? ? ? ? } catch (Exception e) {
? ? ? ? ? ? throw new RuntimeException("輸入日期有誤");
? ? ? ? }
? ? }
}
  • 第二步:在 spring 配置文件中配置類型轉(zhuǎn)換器。

spring 配置類型轉(zhuǎn)換器的機(jī)制是,將自定義的轉(zhuǎn)換器注冊(cè)到類型轉(zhuǎn)換服務(wù)中去。

<!-- 配置類型轉(zhuǎn)換器工廠 -->
<bean id="converterService" ?class="org.springframework.context.support.ConversionServiceFactoryBean">
<!-- 給工廠注入一個(gè)新的類型轉(zhuǎn)換器 -->
?? ?<property name="converters">
?? ? <array>
?? ? <!-- 配置自定義類型轉(zhuǎn)換器 -->
?? ??? ? <bean class="com.itheima.web.converter.StringToDateConverter"></bean>
?? ? </array>
?? ? </property>
</bean>
  • 第三步:在 annotation-driven 標(biāo)簽中引用配置的類型轉(zhuǎn)換服務(wù)
<!-- 引用自定義類型轉(zhuǎn)換器 -->
<mvc:annotation-driven ?conversion-service="converterService"></mvc:annotation-driven>

使用 ServletAPI 對(duì)象作為方法參數(shù)

?? ?@RequestMapping("/testServletAPI")
? ? public String testServletAPI(HttpServletRequest request,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?HttpServletResponse response,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?HttpSession session) {
? ? ? ? System.out.println(request);
? ? ? ? System.out.println(response);
? ? ? ? System.out.println(session);
? ? ? ? return "success";
? ? }

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。 

相關(guān)文章

  • 一文講通Java為什么不支持多繼承原理

    一文講通Java為什么不支持多繼承原理

    這篇文章主要為大家介紹了java為什么不支持多繼承原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • Java基礎(chǔ)之?dāng)?shù)組模擬循環(huán)隊(duì)列

    Java基礎(chǔ)之?dāng)?shù)組模擬循環(huán)隊(duì)列

    這篇文章主要介紹了Java基礎(chǔ)之?dāng)?shù)組模擬循環(huán)隊(duì)列,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java基礎(chǔ)的小伙伴們也有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • 詳解Java并發(fā)包中線程池ThreadPoolExecutor

    詳解Java并發(fā)包中線程池ThreadPoolExecutor

    ThreadPoolExecutor是Java語(yǔ)言對(duì)于線程池的實(shí)現(xiàn)。線程池技術(shù)使線程在使用完畢后不回收而是重復(fù)利用。如果線程能夠復(fù)用,那么我們就可以使用固定數(shù)量的線程來(lái)解決并發(fā)問題,這樣一來(lái)不僅節(jié)約了系統(tǒng)資源,而且也會(huì)減少線程上下文切換的開銷
    2021-06-06
  • Java超詳細(xì)講解三大特性之一的多態(tài)

    Java超詳細(xì)講解三大特性之一的多態(tài)

    多態(tài)就是指程序中定義的引用變量所指向的具體類型和通過該引用變量發(fā)出的方法調(diào)用在編程時(shí)并不確定,而是在程序運(yùn)行期間才確定,即一個(gè)引用變量到底會(huì)指向哪個(gè)類的實(shí)例對(duì)象,該引用變量發(fā)出的方法調(diào)用到底是哪個(gè)類中實(shí)現(xiàn)的方法,必須在由程序運(yùn)行期間才能決定
    2022-05-05
  • Springboot關(guān)于自定義stater的yml無(wú)法提示問題解決方案

    Springboot關(guān)于自定義stater的yml無(wú)法提示問題解決方案

    這篇文章主要介紹了Springboot關(guān)于自定義stater的yml無(wú)法提示問題及解決方案,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-06-06
  • springboot整合logback打印日志,分文件

    springboot整合logback打印日志,分文件

    本文主要介紹了springboot整合logback打印日志,分文件,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-11-11
  • SpringMVC文件上傳 多文件上傳實(shí)例

    SpringMVC文件上傳 多文件上傳實(shí)例

    這篇文章主要介紹了SpringMVC文件上傳 多文件上傳實(shí)例,有需要的朋友可以參考一下
    2014-01-01
  • Java同步容器和并發(fā)容器詳解

    Java同步容器和并發(fā)容器詳解

    這篇文章主要介紹了Java同步容器和并發(fā)容器詳解,容器是Java基礎(chǔ)類庫(kù)中使用頻率最高的一部分,Java集合包中提供了大量的容器類來(lái)幫組我們簡(jiǎn)化開發(fā),下面小編和大家來(lái)一起學(xué)習(xí)下吧
    2019-06-06
  • Java通過工廠、Map容器創(chuàng)建對(duì)象的方法

    Java通過工廠、Map容器創(chuàng)建對(duì)象的方法

    這篇文章主要介紹了Java通過工廠、Map容器創(chuàng)建對(duì)象的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • 手把手教你從零設(shè)計(jì)一個(gè)java日志框架

    手把手教你從零設(shè)計(jì)一個(gè)java日志框架

    Java里的各種日志框架,相信大家都不陌生。Log4j/Log4j2/Logback/jboss logging等等,其實(shí)這些日志框架核心結(jié)構(gòu)沒什么區(qū)別,只是細(xì)節(jié)實(shí)現(xiàn)上和其性能上有所不同。本文帶你從零開始,一步一步的設(shè)計(jì)一個(gè)日志框架
    2021-02-02

最新評(píng)論