这个convter类型转换是器做什么用的?

他是做类型转换的,或者数据格式化处理。可以把数据在送到controller之前做处理。变成你想要的格式或者类型。方便我们更好的使用。

比如说你从前台传过来一个日期,它的格式不是你想要的,这时你就可以自定义一个controller转换器,帮你做日期格式化这件事。就像我们以前,

写的工具类一样,只不过,springmvc给我们提供了这种功能,在更方便我们使用。在需要时自动帮我们做这件事了。接下来看看它是怎样实现的?


这里演示把一个string字符串转换成一个对象。格式话就更简单了。根据你的想象大胆的设计它,帮你更好的完成工作。


首先我们来定义目标类,目标类就是要转换成该类型的对象。

定义一个bean,MyPhone,他有俩属性areaCode(区号),phoneNum(电话号码),给他们getter和setter方法。ok,这个bean定义好了。


接下来定义一个中转模型,这个模型就是做数据类型转换或者是数据格式化的中转。定义一个modelBean,UserModel,把目标类的对象MyPhone给他,给他getter

和setter方法,ok,这个bean定义好了。


下面是核心,自定义,转换器。要完成这样一个操作我们要使用springmvc给我们提供的一个接口,Converter,我们要实现这个接口并且给他一个泛型,

Converter<被转换类型,转换成的类型>,然后按你的构思实现他的方法convert,去让他帮你完成你想要干的事。

/**
* @目标类型作为模型类的属性,我们前面定义好了。
* @这里将完成把String型数据转为目标类型的操作
* @转换器关键代码 实现String转MyPhone @如010-234234324 转为MyPhone
*/
public class MyConverter implements Converter<String, MyPhone> {
@Override
public MyPhone convert(String source) {
System.out.println("转换了没?");
MyPhone phone = new MyPhone();
//将字符串按照某种规则拆分成字符串数组
String[] strArr = source.split("-");
String areaCode = strArr[0];
String phoneNum = strArr[1];
phone.setAreaCode(areaCode);
phone.setPhoneNum(phoneNum);
return phone;
}
// 参数是源类型(要转换的字符串),返回的是目标类型
}


这是controller的写法,这里说一下中转模型吧,它的属性名是触发类型转换的关键。你想要转换就拿这个模型作为controller的入参就OK了。

@Controller
@RequestMapping("/xx")
public class Example4Controller {
@RequestMapping("/example")
public String toSuccessPage(UserModel user, Model model) {
System.out.println("阿呆的挂念");
model.addAttribute("user", user);
return "example4";
}
}


最后一步,在spirngmvc.xml中注册转换器。springmvc的ConversionServiceFactoryBean类会帮我们把转换器,在HandlerMapping组件将url分配给controller之前执行转换器。

<!-- springmvc注解驱动标签,引入转换器 -->
<mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>
<!--  注册转换器,并注入自定义的转换器 -->
<bean id="conversionService"
class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<list>
<bean class="com.xxx.util.MyConverter" />
</list>
</property>
</bean>


ok这样一个流程写完你可以用了。

springmvc的类型转换器converter的更多相关文章

  1. SpringMVC自定义类型转换器

    SpringMVC 自定义类型转换器  我们在使用SpringMVC时,常常需要把表单中的参数映射到我们对象的属性中,我们可以在默认的spring-servlet.xml加上如下的配置即可做到普通数据 ...

  2. 《SpringMVC从入门到放肆》十二、SpringMVC自定义类型转换器

    之前的教程,我们都已经学会了如何使用Spring MVC来进行开发,掌握了基本的开发方法,返回不同类型的结果也有了一定的了解,包括返回ModelAndView.返回List.Map等等,这里就包含了传 ...

  3. 14.SpringMVC核心技术-类型转换器

    类型转换器 在前面的程序中,表单提交的无论是 int 还是 double 类型的请求参数,用于处理该请求 的处理器方法的形参, 均可直接接收到相应类型的相应数据,而非接收到 String 再手工转换. ...

  4. springmvc——自定义类型转换器

    一.什么是springmvc类型转换器? 在我们的ssm框架中,前端传递过来的参数都是字符串,在controller层接收参数的时候springmvc能够帮我们将大部分字符串类型的参数自动转换为我们指 ...

  5. 自定义类型转换器converter

    作用:目前将日期转换成string,将string转换成我想要的类型   0509课件里讲 一.数据类型转换在web应用程序中,数据存在两个方向上的转换:1.当提交表单时  表单数据以字符串的形式提交 ...

  6. SpringMVC 自定义类型转换器

    先准备一个JavaBean(Employee) 一个Handler(SpringMVCTest) 一个converters(EmployeeConverter) 要实现的输入一个字符串转换成一个emp ...

  7. JavaPersistenceWithHibernate第二版笔记-第五章-Mapping value types-006类型转换器( @Converter(autoApply = true) 、type="converter:qualified.ConverterName" )

    一.结构 二.代码 1. package org.jpwh.model.advanced; import java.io.Serializable; import java.math.BigDecim ...

  8. SSM-SpringMVC-28:SpringMVC类型转换之自定义日期类型转换器

     ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 例子很简易,要明白的是思路,话不多说,开讲 上篇博客不是说springmvc默认的日期转换格式是yyyy/M ...

  9. springmvc:自定义类型转换器代码编写

    字符串转换日期: 1.自定义一个类 /** * 字符串转换日期 */ public class StringToDateConverter implements Converter<String ...

随机推荐

  1. 转载《学习HTML5 canvas遇到的问题》

    学习HTML5 canvas遇到的问题 1. 非零环绕原则(nonzZero rule) 非零环绕原则是canvas在进行填充的时候是否要进行填充的判断依据. 在判断填充的区域拉一条线出来,拉到图形的 ...

  2. [转]chrome developer tool 调试技巧

    这篇文章是根据目前 chrome 稳定版(19.0.1084.52 m)写的, 因为 google 也在不断完善chrome developer tool, 所以 chrome 版本不同可能稍有差别. ...

  3. 002Angular2工程目录解构

    |--my-app 工程名 |--e2e 端到端测试 |--node_modules package.json列出的第三方模块放在此处 |--src |--app |--app.component.c ...

  4. 使用HTML5 canvas做地图(2)瓦片以及如何计算的

    上一篇也说到瓦片,我们为什么使用瓦片?这一篇主要是关于如何拼接地图? 下面的一张图,可以一眼明了,地图是如何切割以及拼接的. 瓦片信息 瓦片信息包括切图原点,瓦片大小,格式,分辨率以及分辨率级别等. ...

  5. 安装Android Studio的问题

    大陆墙内安装最新Android Studio多出了很多问题,不使用VPN的话,注意以下问题: 1 一直停留在fetching Android sdk compoment information界面 A ...

  6. Windows8中如何打包和安装一个本地的Metro类型应用(转)

    Windows8中如何打包和安装一个本地的Metro类型应用 (转自:http://software.intel.com/zh-cn/blogs/2012/05/09/windows8metro) 微 ...

  7. java面试题之----转发(forward)和重定向(redirect)的区别

    阅读目录 一:间接请求转发(Redirect) 二:直接请求转发(Forward) 用户向服务器发送了一次HTTP请求,该请求可能会经过多个信息资源处理以后才返回给用户,各个信息资源使用请求转发机制相 ...

  8. 一、选择与安装——Linux学习笔记

    A)为什么要用Linux做服务器? 网络理由: 1.linux本身是网络操作系统,支持所有TCP/IP协议,网络功能是内核中六大模块之一 2.linux和unix兼容,unix是早期的服务器霸主,现在 ...

  9. HCNA调整RIP的运行版本

    1.拓扑图 2.实验配置 R1配置RIPv1 md5加密认证 Please press enter to start cmd line! ############################### ...

  10. 初次接触《C++程序设计原理与实践》一书

    前两天读书日,买了些书回来看.__Bjarne Stroustrup__的<C++程序设计原理与实践>便是其中一本.其实也没看完,只看了第0章-致读者,大师不愧是大师,只看了一章就让心生共 ...