springmvc的类型转换器converter
这个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的更多相关文章
- SpringMVC自定义类型转换器
SpringMVC 自定义类型转换器 我们在使用SpringMVC时,常常需要把表单中的参数映射到我们对象的属性中,我们可以在默认的spring-servlet.xml加上如下的配置即可做到普通数据 ...
- 《SpringMVC从入门到放肆》十二、SpringMVC自定义类型转换器
之前的教程,我们都已经学会了如何使用Spring MVC来进行开发,掌握了基本的开发方法,返回不同类型的结果也有了一定的了解,包括返回ModelAndView.返回List.Map等等,这里就包含了传 ...
- 14.SpringMVC核心技术-类型转换器
类型转换器 在前面的程序中,表单提交的无论是 int 还是 double 类型的请求参数,用于处理该请求 的处理器方法的形参, 均可直接接收到相应类型的相应数据,而非接收到 String 再手工转换. ...
- springmvc——自定义类型转换器
一.什么是springmvc类型转换器? 在我们的ssm框架中,前端传递过来的参数都是字符串,在controller层接收参数的时候springmvc能够帮我们将大部分字符串类型的参数自动转换为我们指 ...
- 自定义类型转换器converter
作用:目前将日期转换成string,将string转换成我想要的类型 0509课件里讲 一.数据类型转换在web应用程序中,数据存在两个方向上的转换:1.当提交表单时 表单数据以字符串的形式提交 ...
- SpringMVC 自定义类型转换器
先准备一个JavaBean(Employee) 一个Handler(SpringMVCTest) 一个converters(EmployeeConverter) 要实现的输入一个字符串转换成一个emp ...
- 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 ...
- SSM-SpringMVC-28:SpringMVC类型转换之自定义日期类型转换器
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 例子很简易,要明白的是思路,话不多说,开讲 上篇博客不是说springmvc默认的日期转换格式是yyyy/M ...
- springmvc:自定义类型转换器代码编写
字符串转换日期: 1.自定义一个类 /** * 字符串转换日期 */ public class StringToDateConverter implements Converter<String ...
随机推荐
- flex布局帮助你快速实现布局
flex布局可以帮我们快速布局一些区块,实现你想要的效果,不用再去float,position之类的.我们在布局网页的时候很多时候都是一些特殊布局,flex就能帮我快速去布局,不需要去定位. 任何一个 ...
- less自动编译 VScode 开发工具配置
1.首先在vscode商店下载EasyLess插件,安装 2.在VS Code项目中,有一个.vscode的文件夹,找里面的settings.json文件(或者在文件-首选项-设置-搜索setting ...
- ArcGIS软件操作——地图制图
ArcGIS软件操作系列二(地图制图) 2016年毕业,参加工作,除了平时出差,大部分时间都在使用ArcGIS处理数据.制图,在此,先将一些制图的小心得撰写出来,希望能与各位共同交流. 1 数据准备: ...
- 【PIC单片机】Pic单片机基础知识
本次学习采用PIC16F877A芯片及HJ-5G 开发板 一.IO口操作 1.1 设置I/O口方向:input or output TRISx 方向寄存器 (Transport and Receive ...
- 面试题之----一次完整的HTTP请求过程
当我们在浏览器的地址栏输入 www.linux178.com ,然后回车,回车这一瞬间到看到页面到底发生了什么呢? 以下过程仅是个人理解: 域名解析 --> 发起TCP的3次握手 --> ...
- Flask入门文件上传flask-uploads(八)
1 视图传递多个参数 (1) 普通传参 : 关键字参数传递 return render_template('模板名称.html',arg1=val1,arg2=val2...) (2) 字典传参 : ...
- webpack前言:前端模块系统的演进
前端开发和其他开发工作的主要区别,首先是前端是基于多语言.多层次的编码和组织工作,其次前端产品的交付是基于浏览器,这些资源是通过增量加载的方式运行到浏览器端,如何在开发环境组织好这些碎片化的代码和资源 ...
- libxml
/** * section: Tree * synopsis: Navigates a tree to print element names * purpose: Parse a file to a ...
- matlab各类数据l图像之间的转化
matlab各类数据图像之间的转化 rgb类型转化为二值的步骤例如以下: 1.採用命令im2double将rgb类型转化三维的double >> str='E:\programing\Ei ...
- MySQL:数据库入门篇4
1. 视图 创建视图 create view 视图名字 as 查询sql语句; drop view 视图名字; alter view 视图名字 as 查询sql语句; 2. 触发器 1. 插入事件触发 ...