这个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. Strom入门

    Worker.Executor.Task详解: Storm在集群上运行一个Topology时,主要通过以下3个实体来完成Topology的执行工作:1. Worker Process(工作进程)——S ...

  2. k-近邻算法(kNN)

    1.算法工作原理 存在一个训练样本集,我们知道样本集中的每一个数据与所属分类的对应关系,输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应特征进行比较,然后算法提取样本集中特征最相似的数据( ...

  3. gamemakerstudio:room_speed和image_speed

    room_speed是游戏步数,每秒多少步(步事件)image_speed是动画帧率room_speed变则整个游戏变慢image_speed变只是该object动画变慢 除了游戏全局加速减速,一般不 ...

  4. C#实现Stream与byte[]之间的转换实例教程

    一.二进制转换成图片 MemoryStream ms = new MemoryStream(bytes); ms.Position = ; Image img = Image.FromStream(m ...

  5. pl/sql中的一种链接数据库方式

    今天看开发人员如此连接数据库:

  6. ANT 的Table表格样式修改方法

    注:(大家在给页面添加参数或者方法的时候,记得写上注释,方便别人查看) 1.表格行选中样式添加:(可以去beijing,精子库质控统计查看例子) (咱们以前页面上的表格都是在hover时显示选中效果, ...

  7. 如何将BSP应用配置成Fiori Launchpad上的一个tile

    当我们通过WebIDE或者Eclipse的插件Team Provider把一个本地开发好的UI5应用部署到了ABAP Netweaver服务器上之后,我们可以将该UI5应用配置成Fiori launc ...

  8. POJ 2771 Guardian of Decency 【最大独立集】

    传送门:http://poj.org/problem?id=2771 Guardian of Decency Time Limit: 3000MS   Memory Limit: 65536K Tot ...

  9. 【luogu P3398 仓鼠找sugar】 题解

    题目链接:https://www.luogu.org/problemnew/show/P3398 辣鸡树剖1300ms 倍增大法吼啊 #include <cstdio> #include ...

  10. Trident中 FixedBatchSpout分析

    FixedBatchSpout 继承自 IBatchSpout IBatchSpout 方法 public interface IBatchSpout extends Serializable { v ...