日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SpringMVC框架 |自定义类型转换器与日期格式化

發(fā)布時(shí)間:2024/3/7 javascript 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringMVC框架 |自定义类型转换器与日期格式化 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 一、Spring支持的轉(zhuǎn)換器
  • 二、自定義轉(zhuǎn)換器的步驟
    • 第一步:實(shí)現(xiàn)Converter接口
    • 第二步:將Converter配置到ConverterService組件中
    • 第三步:將組件聲明在annotation-driven標(biāo)簽中
  • 三、關(guān)于annotation-driven標(biāo)簽
  • 四、日期格式化


一、Spring支持的轉(zhuǎn)換器

Spring定義了3種類型的轉(zhuǎn)換器接口,實(shí)現(xiàn)任意一個(gè)轉(zhuǎn)換器接口都可以作為自定義轉(zhuǎn)換器注冊到ConversionServiceFactroyBean中:

  • Converter<S,T>:將S類型對象轉(zhuǎn)為T類型對象。
  • ConverterFactory:將相同系列多個(gè)同質(zhì)Converter封裝在一起。如果希望將一種類型的對象轉(zhuǎn)換為另一種類型及其子類的對象(例如將String轉(zhuǎn)換為Number及Number子類(Integer、Long、Double等)對象)可使用該轉(zhuǎn)換器工廠類。
  • GenericConverter:會(huì)根據(jù)源類對象及目標(biāo)類對象所在的宿主類中的上下文信息進(jìn)行類型轉(zhuǎn)換.

由于后兩種形式并不常用,本文僅介紹第一種,實(shí)現(xiàn)Converter<S,T>接口的方法。

二、自定義轉(zhuǎn)換器的步驟

ConverterService是一個(gè)接口,它有一個(gè)實(shí)現(xiàn)類Converter(轉(zhuǎn)換器)進(jìn)行工作。自定義轉(zhuǎn)換器,步驟如下

  • ①先實(shí)現(xiàn)Converter接口,寫一個(gè)自定義的類型轉(zhuǎn)換器。
  • ②將Converter配置在ConverterService組件中。
  • ③將組件聲明在annotation-driven標(biāo)簽中。

在頁面添加一個(gè)快速添加的按鈕

list.jsp

<form action="${ctp }/quickadd"><input name="empinfo" value="empAdmin-admin@qq.com-1-101"/><input type="submit" value="快速添加" /></form>

點(diǎn)擊發(fā)送/quickadd請求到handler處理器。

@RequestMapping("/quickadd")public String quickAdd(@RequestParam("empinfo") Employee employee) {System.out.println("封裝:" + employee);employDao.save(employee);return "redirect:/emps";}

handler處理器中調(diào)用保存方法后發(fā)送/emps請求,進(jìn)而返回list.jsp頁面。

第一步:實(shí)現(xiàn)Converter接口

頁面提交的將要轉(zhuǎn)換的字符串為:empAdmin-admin@qq.com-1-101

  • 自定的轉(zhuǎn)換器實(shí)現(xiàn)的功能:將String類型轉(zhuǎn)換為Employee對象。
/*** S:Source * T:Target * 將String轉(zhuǎn)換為Employee對象* @guoqianliang*/ public class MyStringToEmployeeConverter implements Converter<String, Employee> {@AutowiredDepartmentDao dpartmentDao;@Overridepublic Employee convert(String source) {System.out.println("頁面提交的將要轉(zhuǎn)換的字符串:" + source);Employee employee = new Employee();if (source.contains("-")) {String[] split = source.split("-");employee.setLastName(split[0]);employee.setEmail(split[1]);employee.setGender(Integer.parseInt(split[2]));employee.setDepartment(dpartmentDao.getDepartment(Integer.parseInt(split[3])));}return employee;} }

第二步:將Converter配置到ConverterService組件中

  • 將自定義的Converter實(shí)現(xiàn)類配置到ConverterService組件中。
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean"><!-- 添加自定義的類型轉(zhuǎn)換器 --><property name="converters"><set><bean class="com.gql.component.MyStringToEmployeeConverter"></bean></set></property></bean>

后續(xù)為了與日期格式化兼容,通常使用下面的寫法:

<bean id="conversionService"class="org.springframework.format.support.FormattingConversionServiceFactoryBean"><!-- 添加自定義的類型轉(zhuǎn)換器 --><property name="converters"><set><bean class="com.gql.component.MyStringToEmployeeConverter"></bean></set></property></bean>

第三步:將組件聲明在annotation-driven標(biāo)簽中

<mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>

自定義轉(zhuǎn)換器設(shè)置完成,控制臺(tái)輸出:

頁面提交的將要轉(zhuǎn)換的字符串:empAdmin-admin@qq.com-1-101 封裝:Employee [id=null, lastName=empAdmin, email=admin@qq.com, gender=1, department=Department [id=101, departmentName=D-AA]]

三、關(guān)于annotation-driven標(biāo)簽

  • <mvc:annotation-driven /"> 標(biāo)簽會(huì)自動(dòng)注冊RequestMappingHandlerMapping、RequestMappingHandlerAdapter與ExceptionHandlerExceptionResolver三個(gè)bean。

  • 支持使用ConverterService實(shí)例對表單參數(shù)進(jìn)行類型轉(zhuǎn)換。

  • 支持使用@NumberFormat annotation、@DateTimeFormart注解完成數(shù)據(jù)類型的格式化。

  • 支持使用@Valid注解對JavaBean實(shí)例進(jìn)行JSR303校驗(yàn)。

  • 支持使用@RequestBody和@ResponseBody注解。

四、日期格式化

對屬性對象的輸入和輸出進(jìn)行格式化,本質(zhì)上還是類型轉(zhuǎn)換的范疇。

Spring在格式化模塊中定義了一個(gè)實(shí)現(xiàn)ConverterService接口的FormattingConversionService實(shí)現(xiàn)類,該實(shí)現(xiàn)類擴(kuò)展了GenericConversionService,因此它即具有類型轉(zhuǎn)換的功能,又具有格式化的功能。

  • FormattingConversionService擁有一個(gè)工廠類FormattingConversionServiceFactoryBean,后者用于在Spring上下文中構(gòu)造前者。
  • FormattingConversionServiceFactoryBean內(nèi)部已經(jīng)注冊了
    ①NumberFormatAnnotationFormatterFactory:支持對數(shù)字類型的屬性使用@NumberFormat注解。
    如:@NumberFormat(pattern="#,###,###")
    ②JodaDateTimeFormatAnnotationFormatterFactory:支持對日期類型的屬性使用@DateTimeFormat注解。
    如:@DateTimeFormat(pattern = “yyyy-MM-dd”)

另外,需要注意的是ConversionServiceFactoryBean所創(chuàng)建的ConversionService組件沒有格式化器,使用時(shí)需要在SpringMVC配置中將其替換為FormattingConversionServiceFactoryBean組件。

總結(jié)

以上是生活随笔為你收集整理的SpringMVC框架 |自定义类型转换器与日期格式化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美一级爆毛片 | 91网在线看 | 色婷婷在线播放 | 999热精品视频 | 大色av | 色婷婷香蕉在线一区二区 | 亚洲一区在线免费 | 日韩区欧美区 | 很污的网站 | 人人干人人模 | 合欢视频污 | 黑人干亚洲女 | 亚洲一卡二卡 | 丰满人妻一区二区三区无码av | 在线免费观看欧美大片 | 欧美高潮视频 | 永久视频在线观看 | 毛片综合 | 熟妇高潮一区二区高潮 | 韩国成人理伦片免费播放 | 国产在线视频网 | 波多野结衣中文字幕一区 | 99插插插| 开心六月婷婷 | 韩国伦理中文字幕 | 欧洲亚洲成人 | 中文字幕人妻一区二 | 国产高潮网站 | 丝袜脚交免费网站xx | 一区二区伊人 | www.天天色| 亚洲αv| 国产中文字幕一区二区 | 中文有码在线 | 亚洲成人av一区二区三区 | 亚洲精品久久夜色撩人男男小说 | 催眠调教艳妇成肉便小说 | 麻豆av影视 | 久草视频免费看 | 狠狠躁夜夜躁av无码中文幕 | 久久久久国产一区二区 | 销魂奶水汁系列小说 | 色网址在线观看 | 中文字幕一区二区三区精彩视频 | 中文字幕乱码一区二区 | 欧美国产一二三区 | 亚洲青春草 | 奇米影视久久 | 有码av在线 | 99伊人网 | 国产精品国产三级国产Av车上的 | 欧美性猛交xxxx乱大交蜜桃 | 精品人妻人人做人人爽夜夜爽 | 日韩一区二区中文字幕 | 日韩av网站在线 | 色婷婷av一区二区三区麻豆综合 | 素人一区 | 日本高清网色 | 欧美嫩草 | 91天堂素人 | 亚洲日本国产 | 久久艹av| 精品人人妻人人澡人人爽牛牛 | 男生女生搞鸡视频 | 波多野结衣一区二区三区 | 天堂欧美 | 国产在线视视频有精品 | 青青青免费在线 | 国产精品国产一区二区三区四区 | 国产高清一区二区三区四区 | 欧美人禽杂交狂配 | 视频一区中文字幕 | 精品人妻一区二区三区三区四区 | 国产乱妇无码大片在线观看 | 国产性xxx | 丰满人妻一区二区三区四区 | 毛片毛片毛片毛片毛片毛片 | 免费的av网址 | 青青草在线播放 | 巨胸喷奶水www久久久免费动漫 | 国产精品国产三级国产传播 | 国产精品影片 | 国产在线一区二区三区 | 久久精品视频一区二区三区 | 日本人jizz| 性猛交xxxx乱大交孕妇印度 | 爽爽免费视频 | 天天干夜操 | 丁香花电影在线观看免费高清 | 136福利视频导航 | 久久免费的精品国产v∧ | 在线观看国产视频 | 免费性片| 在线观看中文字幕一区二区 | 香蕉视频久久久 | 黄色a一级片 | 一级二级三级视频 | 亚洲永久免费视频 | 午夜久久久久久久 |