




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SpringMVC数据类型转换2015技术成就梦想
老师助理潭州学院课程大纲SpringMVC如何实现数据类型转换数据类型转换架构Spring内建的数据类型转换器自定义数据类型转换器配置自定义的数据类型转换器如何实现数据类型转换如何实现数据类型转换1、类型转换:首先表单数据(全部是字符串)通过WebDataBinder进行绑定到命令对象,内部通过ConverterSPI实现;
2、数据验证:使用JSR-303验证框架进行验证;
3、格式化显示:在表单页面可以通过如下方式展示通过内部通过ConverterSPI格式化的数据和错误信息;
数据类型转换架构SpringMVC数据转换包括两部分一、类型转换器:提供类型转换的实现支持;二、类型转换器注册器、类型转换服务:提供类型转换器注册支持,运行时类型转换API支持。
数据类型转换架构一、类型转换器:提供类型转换的实现支持;
数据类型转换架构1、Converter:类型转换器,用于转换S类型到T类型,此接口的实现必须是线程安全的且可以被共享。
packageorg.springframework.core.convert.converter;
publicinterfaceConverter<S,T>{//S是源类型T是目标类型
Tconvert(Ssource);//转换S类型的source到T目标类型的转换方法
}
数据类型转换架构2、GenericConverter和ConditionalGenericConverter:GenericConverter接口实现能在多种类型之间进行转换,
ConditionalGenericConverter是有条件的在多种类型之间进行转换。
GenericConverter:packageorg.springframework.core.convert.converter;
publicinterfaceGenericConverter{
Set<ConvertiblePair>getConvertibleTypes();
Objectconvert(Objectsource,TypeDescriptorsourceType,TypeDescriptortargetType);
}数据类型转换架构getConvertibleTypes:指定了可以转换的目标类型对;
convert:在sourceType和targetType类型之间进行转换。ConditionalGenericConverter:packageorg.springframework.core.convert.converter;
publicinterfaceConditionalGenericConverterextendsGenericConverter{
booleanmatches(TypeDescriptorsourceType,TypeDescriptortargetType);
}
matches:用于判断sourceType和targetType类型之间能否进行类型转换。数据类型转换架构3、ConverterFactory:工厂模式的实现,用于选择将一种S源类型转换为R类型的子类型T的转换器的工厂接口。packageorg.springframework.core.convert.converter;
publicinterfaceConverterFactory<S,R>{
<TextendsR>Converter<S,T>getConverter(Class<T>targetType);//S:源类型;R目标类型的父类型;T:目标类型,且是R类型的子类型;
}数据类型转换架构二、类型转换器注册器、类型转换服务:提供类型转换器注册支持,运行时类型转换API支持。1、ConverterRegistry:类型转换器注册支持,可以注册/删除相应的类型转换器。
可以注册:Converter实现,GenericConverter实现,ConverterFactory实现。数据类型转换架构2、ConversionService:运行时类型转换服务接口,提供运行期类型转换的支持。
Spring提供了两个默认实现(其都实现了ConverterRegistry、ConversionService接口):
DefaultConversionService:默认的类型转换服务实现;
DefaultFormattingConversionService:带数据格式化支持的类型转换服务实现,一般使用该服务实现即可。内建的类型转换器一、标量转换器类名说明StringToBooleanConverterString----->Booleantrue:true/on/yes/1;false:false/off/no/0ObjectToStringConverterObject----->String
调用toString方法转换StringToNumberConverterFactoryString----->Number(如Integer、Long等)NumberToNumberConverterFactoryNumber子类型(Integer、Long、Double等)<——>Number子类型(Integer、Long、Double等)StringToCharacterConverterString----->java.lang.Character
取字符串第一个字符内建的类型转换器类名说明NumberToCharacterConverterjava.lang.Character——>Number子类型(Integer、Long、Double等)StringToEnumConverterFactoryString----->enum类型
通过Enum.valueOf将字符串转换为需要的enum类型EnumToStringConverterenum类型----->String
返回enum对象的name()StringToLocaleConverterString----->java.util.LocalPropertiesToStringConverterjava.util.Properties----->String
默认通过ISO-8859-1解码内建的类型转换器类名说明StringToPropertiesConverterString----->java.util.Properties
默认使用ISO-8859-1编码内建的类型转换器二、集合、数组相关转换器
类名说明ArrayToCollectionConverter任意S数组---->任意T集合(List、Set)CollectionToArrayConverter任意T集合(List、Set)---->任意S数组ArrayToArrayConverter任意S数组<---->任意T数组CollectionToCollectionConverter任意T集合(List、Set)<---->任意T集合(List、Set)
即集合之间的类型转换MapToMapConverterMap<---->Map之间的转换内建的类型转换器类名说明ArrayToStringConverter任意S数组---->String类型StringToArrayConverterString----->数组
默认通过“,”分割,且去除字符串的两边空格(trim)ArrayToObjectConverter任意S数组---->任意Object的转换
(如果目标类型和源类型兼容,直接返回源对象;否则返回S数组的第一个元素并进行类型转换)ObjectToArrayConverterObject----->单元素数组CollectionToStringConverter任意T集合(List、Set)---->String类型内建的类型转换器类名说明StringToCollectionConverterString----->集合(List、Set)
默认通过“,”分割,且去除字符串的两边空格(trim)CollectionToObjectConverter任意T集合---->任意Object的转换
(如果目标类型和源类型兼容,直接返回源对象;否则返回S数组的第一个元素并进行类型转换)ObjectToCollectionConverterObject----->单元素集合自定义数据转换器一、StringToDateConverter:自定义String类型转Date类型的转换类;二、StringToPhoneNumberConverter:自定义String类型转PhoneNumberModel类型的转换类
自定义数据转换器自定义数据转换器配置自定义转换器1、注册ConversionService实现和自定义的类型转换器
配置自定义转换器2、通过ConfigurableWebBindingInitializer注册ConversionService
配置自定义转换器3、注册ConfigurableWebBindingInitializer到
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《故障诊断的革新进步》课件
- 《小学家校合作》课件
- 《电路图元件绘制》课件
- 2025标准合同范本下载「合同版」
- 一年级下册美术教学设计-动物的花衣裳-岭南版
- 2025年三亚c1货运从业资格证考试内容
- 2025版加盟代理合同书
- 2025年襄阳货运资格证考试题答案
- 一年级上册科学教学设计-13《常见材料》冀教版
- 2025年百色货运从业资格证考试题及答案
- GB/T 3091-2025低压流体输送用焊接钢管
- 猪场买卖合同协议
- 【9语一模】2025年安徽合肥市第四十五中学九年级中考一模语文试卷(含答案)
- 啤酒分销合同协议
- SL631水利水电工程单元工程施工质量验收标准第2部分:混凝土工程
- 直销队管理制度
- 股份代持协议合同6篇
- 2024-2025学年苏教版七年级生物下册知识点复习提纲
- DB32-T 5082-2025 建筑工程消防施工质量验收标准
- 贵州贵州路桥集团有限公司招聘考试真题2024
- NB-T 47013.1-2015 承压设备无损检测 第1部分-通用要求
评论
0/150
提交评论