版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 绿化养护方案(投标方案)
- 财务审计投标方案技术方案(技术方案)
- 2024年重庆市消防设施操作员《中级技能-维保方向》科目真题冲刺卷上半年B卷
- 2020年部编版小学语文六年级下册教案(全册)
- “八一建军节”庆祝活动主持词开场白和结束语范文
- 中药乌梢蛇课件
- 经皮肾镜碎石取石术的手术配合及细节护理
- 记账实操-塑胶水管店的账务处理分录
- 《中秋食月饼》幼儿园小学少儿美术教育绘画课件创意教程教案
- 2024年口服美容行业市场前景及投资研究报告
- 微测网在线考试题库
- 肺结节诊治中国专家共识(2024年版)解读
- 1.5.1 第1课时 有理数的乘法 课件 2024-2025-沪科版(2024)数学七年级上册
- 2021-2022学年江苏省南通市高一上学期期末考试英语试题
- 2024宪法知识竞赛题库及答案(多选题58个)
- 2024风电场在役叶片维修全过程质量控制技术要求
- 2024年陕西省省属事业单位招聘工作人员(第二批)(高频重点提升专题训练)共500题附带答案详解
- 2024融资性贸易合同
- 数字化转型时代的竞争动态
- 智慧管网大数据云平台整体解决方案
- 2024年保密教育线上培训考试题目及完整答案
评论
0/150
提交评论