Spring MVC开发技术指南第4章 类型转换和格式化PPT课件内容

上传人:b****i 文档编号:5527258 上传时间:2023-11-21 格式:PPT 页数:21 大小:397KB
返回 下载 相关 举报
Spring MVC开发技术指南第4章 类型转换和格式化PPT课件内容_第1页
第1页 / 共21页
Spring MVC开发技术指南第4章 类型转换和格式化PPT课件内容_第2页
第2页 / 共21页
Spring MVC开发技术指南第4章 类型转换和格式化PPT课件内容_第3页
第3页 / 共21页
Spring MVC开发技术指南第4章 类型转换和格式化PPT课件内容_第4页
第4页 / 共21页
Spring MVC开发技术指南第4章 类型转换和格式化PPT课件内容_第5页
第5页 / 共21页
点击查看更多>>
文档描述
第第4 4章章 类型转换和格式化类型转换和格式化主要内容主要内容类型转换的意义类型转换的意义ConverterConverterFormatterFormatter4.1 4.1 类型转换的意义类型转换的意义 对于对于Spring MVCSpring MVC框架而言,它必须将请求参数转换成值对框架而言,它必须将请求参数转换成值对象类里各属性对应的数据类型象类里各属性对应的数据类型这就是类型转换的意义。这就是类型转换的意义。主要内容主要内容 类型转换的意义类型转换的意义 ConverterConverter FormatterFormatter4.2 Converter4.2 Converter Spring MVC Spring MVC框架的框架的ConverterConverter是一个可以将一种数据是一个可以将一种数据类型转换成另一种数据类型的接口,这里类型转换成另一种数据类型的接口,这里S S表示源类型表示源类型,T T表示目表示目标类型标类型。4.2.1 4.2.1 内置的类型转换器内置的类型转换器 Spring MVC Spring MVC框架提供的内置类型转换器,包括如下几框架提供的内置类型转换器,包括如下几种类型。种类型。标量转换器标量转换器 集合、数组相关转换器集合、数组相关转换器 注意:内置类型转换器使用时,请求参数输入值与接收注意:内置类型转换器使用时,请求参数输入值与接收参数类型要兼容,否则报参数类型要兼容,否则报400400错误。错误。4.2.2 4.2.2 自定义类型转换器自定义类型转换器 当当Spring MVCSpring MVC框架内置的类型转换器不能满足需求时,框架内置的类型转换器不能满足需求时,开发者可以开发自己的类型转换器。开发者可以开发自己的类型转换器。例如有个应用例如有个应用ch4_1ch4_1希望希望用户在页面表单中输入信息来创建商品信息。当输入用户在页面表单中输入信息来创建商品信息。当输入“apple,10.58,200apple,10.58,200”时,表示在程序中自动创建一个时,表示在程序中自动创建一个new new GoodsGoods,并将,并将“appleapple”值自动赋值给值自动赋值给goodsnamegoodsname属性,将属性,将“10.5810.58”值自动赋值给值自动赋值给goodspricegoodsprice属性,将属性,将“200200”值自动值自动赋值给赋值给goodsnumbergoodsnumber属性。属性。1 1创建创建MavenMaven项目并添加依赖的项目并添加依赖的JARJAR包包 ch4_1 ch4_1添加的依赖有添加的依赖有spring-webmvcspring-webmvc。pom.xmlpom.xml文件内容与【文件内容与【例例3-13-1】的相同,不再赘述。】的相同,不再赘述。2 2创建相关视图创建相关视图请输入商品信息(格式为:apple,10.58,200):您创建的商品信息如下:商品名为:$goods.goodsname,商品价格为:$goods.goodsprice,商品数量为:$goods.goodsnumber。3 3创建实体类创建实体类public class GoodsModel private String goodsname;private double goodsprice;private int goodsnumber;/省略setter和getter方法4 4创建控制器类创建控制器类ControllerRequestMapping(/my)public class ConverterController RequestMapping(/converter)/*使用RequestParam(goods)接收请求参数,然后调用自定义类型转换器GoodsConverter将字符串值转换为GoodsModel的对象gm*/public String myConverter(RequestParam(goods)GoodsModel gm,Model model)model.addAttribute(goods,gm);return showGoods;5 5创建自定义类型转换器创建自定义类型转换器Componentpublic class GoodsConverter implements Converter Overridepublic GoodsModel convert(String source)/创建一个Goods实例GoodsModel goods=new GoodsModel();/以“,”分隔的String stringValues=source.split(,);if(stringValues!=null&stringValues.length=3)/为为Goods实例赋值实例赋值goods.setGoodsname(stringValues0);goods.setGoodsprice(Double.parseDouble(stringValues1);goods.setGoodsnumber(Integer.parseInt(stringValues2);return goods;else throw new IllegalArgumentException(String.format(类型转换失败,需要格式apple,10.58,200,但格式是%s,source);6 6创建配置类,并注册类型转换器创建配置类,并注册类型转换器 创建创建Spring MVCSpring MVC的的JavaJava配置类配置类SpringMVCConfigSpringMVCConfig。在该配置。在该配置类中使用类中使用ConfigurationConfiguration注解声明该类为注解声明该类为JavaJava配置类;使用配置类;使用EnableWebMvcEnableWebMvc注解开启默认配置,如注解开启默认配置,如ViewResolverViewResolver;使用;使用ComponentScanComponentScan注解扫描注解的类;使用注解扫描注解的类;使用BeanBean注解配置视图解注解配置视图解析器;该类需要实现析器;该类需要实现WebMvcConfigurerWebMvcConfigurer接口来配置接口来配置Spring MVCSpring MVC;使用;使用ConfigurableConversionServiceConfigurableConversionService接口注册类型转换器。接口注册类型转换器。PostConstructpublic void initEditableAvlidation()if(conversionService!=null)conversionService.addConverter(goodsConverter);/这里可以注册多个类型转换器创建创建WebWeb配置类配置类 创建创建WebWeb的的JavaJava类类WebConfigWebConfig。该类需要实现。该类需要实现WebApplicationInitializerWebApplicationInitializer接口替代接口替代web.xmlweb.xml文件的配置。实现文件的配置。实现该接口将会自动启动该接口将会自动启动ServletServlet容器。在容器。在WebConfigWebConfig类中需要使用类中需要使用AnnotationConfigWebApplicationContextAnnotationConfigWebApplicationContext注册注册Spring MVCSpring MVC的的JavaJava配置类配置类SpringMVCConfigSpringMVCConfig,并和当前,并和当前ServletContextServletContext关联。关联。然后,在该类中需要注册然后,在该类中需要注册Spring MVCSpring MVC的的DispatcherServletDispatcherServlet。最。最后,在该类中使用后,在该类中使用javax.servlet.FilterRegistration.Dynamicjavax.servlet.FilterRegistration.Dynamic注册字符编码过滤器,防止中文乱码。注册字符编码过滤器,防止中文乱码。7 7发布并测试应用发布并测试应用 选中选中input.jspinput.jsp文件名单击右键,选择文件名单击右键,选择Run As/Run on Run As/Run on ServerServer发布并测试应用。发布并测试应用。主要内容主要内容 类型转换的意义类型转换的意义 ConverteConverter r FormatterFormatter4.3 Formatter4.3 Formatter Spring MVC Spring MVC框架的框架的FormatterFormatter与与ConverterConverter一样一样,也是一个可以将一种数据类型转换成另一种数据类型的接口,也是一个可以将一种数据类型转换成另一种数据类型的接口。但不同的是,。但不同的是,FormatterFormatter的源数据类型必须是的源数据类型必须是StringString类型类型,而,而ConverterConverter的源数据类型是的源数据类型是任意数据类型任意数据类型。4.3.1 4.3.1 内置的格式化转换器内置的格式化转换器Spring MVCSpring MVC提供几个提供几个内置的格式化转换器内置的格式化转换器,具体如下:,具体如下:NumberFormatterNumberFormatter:实现:实现NumberNumber与与StringString之间的解析与格式化。之间的解析与格式化。CurrencyFormatterCurrencyFormatter:实现:实现NumberNumber与与StringString之间的解析与格式化之间的解析与格式化(带货币符号)。(带货币符号)。PercentFormatterPercentFormatter:实现:实现NumberNumber与与StringString之间的解析与格式化(之间的解析与格式化(带百分数符号)。带百分数符号)。DateFormatterDateFormatter:实现:实现DateDate与与StringString之间的解析与格式化。之间的解析与格式化。4.3.2 4.3.2 自定义格式化转换器自定义格式化转换器 自定义格式化转换器,就是编写一个实现自定义格式化转换器,就是编写一个实现org.springframework.format.org.springframework.format.FormatterFormatter接口的接口的JavaJava类。该类。该接口声明如下:接口声明如下:public interface Formatterpublic interface Formatter这里的这里的T T表示由字符串转换的目标数据类型。该接口有表示由字符串转换的目标数据类型。该接口有parseparse和和printprint两个接口方法,自定义格式化转换器类必须重两个接口方法,自定义格式化转换器类必须重写它们。写它们。【例【例4-24-2】按照上述步骤采用自定义格式化转】按照上述步骤采用自定义格式化转换器完成应用换器完成应用ch4_2ch4_2的需求。的需求。GoodsModel GoodsModel实体类接收请求参数时,商品名称、价格和实体类接收请求参数时,商品名称、价格和数量使用内置的类型转换器完成转换;商品日期需要自定义数量使用内置的类型转换器完成转换;商品日期需要自定义的的格式化转换器格式化转换器完成。完成。创建格式化转换器类创建格式化转换器类Componentpublic class MyFormatter implements FormatterSimpleDateFormat dateFormat=new SimpleDateFormat(yyyy-MM-dd);Overridepublic String print(Date object,Locale arg1)return dateFormat.format(object);Overridepublic Date parse(String source,Locale arg1)throws ParseException return dateFormat.parse(source);/Formatter只能对字符串转换注册格式化转换器注册格式化转换器/*注册格式化转换器*/PostConstruct/*被PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器调用一次,类似于Servlet的inti()方法。*被PostConstruct修饰的方法会在构造函数之后,init()方法之前运行。*/public void initEditableAvlidation()if(formatConversionService!=null)formatConversionService.addFormatter(myFormatter);/可以添加多个格式化转换器
展开阅读全文
相关文档
相关搜索

最近上传DOC

最近上传PPT

最近上传RAR


当前位置:首页 > IT大数据 > 计算机


黔ICP备20002965号-1  在线客服QQ:365045600

Copyright © 2020-2023 www.xinwenku.com All rights reserved 新文库网 版权所有