Spring MVC默认数据类型转换器:

ConversionService converters =java.lang.Boolean -> java.lang.String : org.springframework.core.convert.support.ObjectToStringConverter@1b27f3djava.lang.Character -> java.lang.Number : org.springframework.core.convert.support.CharacterToNumberFactory@1d20ea2java.lang.Character -> java.lang.String : org.springframework.core.convert.support.ObjectToStringConverter@65e5d2java.lang.Enum -> java.lang.Integer : org.springframework.core.convert.support.EnumToIntegerConverter@1ff743ejava.lang.Enum -> java.lang.String : org.springframework.core.convert.support.EnumToStringConverter@1483d7djava.lang.Integer -> java.lang.Enum : org.springframework.core.convert.support.IntegerToEnumConverterFactory@176a4bajava.lang.Number -> java.lang.Character : org.springframework.core.convert.support.NumberToCharacterConverter@bb698ejava.lang.Number -> java.lang.Number : org.springframework.core.convert.support.NumberToNumberConverterFactory@49de05java.lang.Number -> java.lang.String : org.springframework.core.convert.support.ObjectToStringConverter@631dajava.lang.String -> java.lang.Boolean : org.springframework.core.convert.support.StringToBooleanConverter@b0428cjava.lang.String -> java.lang.Character : org.springframework.core.convert.support.StringToCharacterConverter@6bda1java.lang.String -> java.lang.Enum : org.springframework.core.convert.support.StringToEnumConverterFactory@ee9b9cjava.lang.String -> java.lang.Number : org.springframework.core.convert.support.StringToNumberConverterFactory@8e88d8java.lang.String -> java.nio.charset.Charset : org.springframework.core.convert.support.StringToCharsetConverter@1dd6f83java.lang.String -> java.util.Currency : org.springframework.core.convert.support.StringToCurrencyConverter@1e1a986java.lang.String -> java.util.Date : com.jd.converter.DateConverter@68a23ejava.lang.String -> java.util.Locale : org.springframework.core.convert.support.StringToLocaleConverter@14329a6java.lang.String -> java.util.Properties : org.springframework.core.convert.support.StringToPropertiesConverter@229207java.lang.String -> java.util.TimeZone : org.springframework.core.convert.support.StringToTimeZoneConverter@70e46bjava.lang.String -> java.util.UUID : org.springframework.core.convert.support.StringToUUIDConverter@5a2229java.nio.charset.Charset -> java.lang.String : org.springframework.core.convert.support.ObjectToStringConverter@1dbbd42java.time.ZoneId -> java.util.TimeZone : org.springframework.core.convert.support.ZoneIdToTimeZoneConverter@a7bb7fjava.time.ZonedDateTime -> java.util.Calendar : org.springframework.core.convert.support.ZonedDateTimeToCalendarConverter@b185c8java.util.Currency -> java.lang.String : org.springframework.core.convert.support.ObjectToStringConverter@2b49b6java.util.Locale -> java.lang.String : org.springframework.core.convert.support.ObjectToStringConverter@15a5aa6java.util.Properties -> java.lang.String : org.springframework.core.convert.support.PropertiesToStringConverter@d516acjava.util.UUID -> java.lang.String : org.springframework.core.convert.support.ObjectToStringConverter@cb9ad

这里有三种转换方法:
a、Converter<S,T>:将 S 类型对象转为 T 类型对象;

b、ConverterFactory:将相同系列多个 “同质” Converter 封装在一起。如果希望将一种类型的对象转换为另一种类型及其子类的对象(例如将 String 转换为 Number 及 Number 子类(Integer、Long、Double 等)对象)可使用该转换器工厂类;

c、GenericConverter:会根据源类对象及目标类对象所在的宿主类中的上下文信息进行类型转换;

这里举一个例子:讲日期字符串转换为Date类型:

文件结构:

web.xml配置:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"><display-name>dubhe2025</display-name><welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file><welcome-file>default.html</welcome-file><welcome-file>default.htm</welcome-file><welcome-file>default.jsp</welcome-file></welcome-file-list><servlet><servlet-name>DispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:application.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>DispatcherServlet</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping> </web-app>

application.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring"xmlns:p="http://www.springframework.org/schema/p"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring-1.2.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsdhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd"><!-- 给类创建对象并存储到IOC容器中  @controller @service--><context:component-scan base-package="com.jd"></context:component-scan><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/view/" p:suffix=".jsp"></bean><!-- 配置转换器 -->
<bean id="conversionServiceFactoryBean" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"><property name="converters"><set><ref bean="dateConverter"/></set></property>
</bean>
<mvc:annotation-driven conversion-service="conversionServiceFactoryBean"></mvc:annotation-driven>
</beans>

注意:

这个是配置转换器:(通过ConversionServiceFactoryBean的converters属性注册自定义的类型转换器)

<bean id="conversionServiceFactoryBean" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"><property name="converters"><set><ref bean="dateConverter"/></set></property>
</bean>
<mvc:annotation-driven conversion-service="conversionServiceFactoryBean"></mvc:annotation-driven>

将自定义的 ConversionService 注册到Spring MVC 的上下文中

<mvc:annotation-driven conversion-service="conversionServiceFactoryBean"></mvc:annotation-driven>

userinfo.java

package com.jd.vo;import java.util.Date;import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.format.annotation.NumberFormat;public class UserInfo {public Date getBirth() {return birth;}public void setBirth(Date birth) {this.birth = birth;}private Date birth;}

userinforcontroller.java

package com.jd.userinfo;import java.util.Map;import javax.servlet.http.HttpServletRequest;import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;import com.jd.vo.UserInfo;@Controller
public class UserInfoController {@RequestMapping("/userinfo/add.do")public String toView(UserInfo userInfo,Map<String,Object> map) {map.put("userInfo", userInfo);System.out.println(userInfo.getBirth());return "ok";}
}

最重要的一个:类型转换DateConverter.java

package com.jd.converter;import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;@Component  //添加到Spring IoC容器中
public class DateConverter implements Converter<String, Date> {public Date convert(String source) {if(source!=null && !"".equals(source)) {try {SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");return dateFormat.parse(source);} catch (Exception e) {e.printStackTrace();}}return null;}
}

运行结果:

Spring MVC 数据类型转换器相关推荐

  1. java spring mvc中类转换器

    相关文章: AOP的相关的文章介绍: javaweb中Aop(jdk动态代理)https://blog.csdn.net/weixin_43319279/article/details/1031250 ...

  2. 【Java学习路线之JavaWeb】Spring MVC框架入门教程

    文章目录 读者 阅读条件 MVC设计模式简介 JSP+JavaBean Servlet+JSP+JavaBean MVC优缺点 优点 缺点 Spring MVC是什么 Spring MVC优点 第一个 ...

  3. 基于佟刚老师视频教程的Spring MVC数据类型转换学习总结

    基于Spring MVC数据类型转换的学习笔记总结 问题 页面中数据格式为字符串格式,后台pojo中对应的类型可能为另外一种对象. 如: 在前台页面输入一个固定格式的时间字符串,在后台接收为一个jav ...

  4. Spring MVC Converter(类型转换器)详解

    Spring MVC 框架的 Converter<S,T> 是一个可以将一种数据类型转换成另一种数据类型的接口,这里 S 表示源类型,T 表示目标类型.开发者在实际应用中使用框架内置的类型 ...

  5. 基于Springboot外卖系统08:员工账号状态管理功能+对象转换器+扩展Spring mvc的消息转换器

    1. 员工账号状态管理 1.1 需求分析 在员工管理列表页面,可以对某个员工账号进行启用或者禁用操作.账号禁用的员工不能登录系统,启用后的员工可以正常登录.如果某个员工账号状态为正常,则按钮显示为 & ...

  6. Spring MVC自定义类型转换器Converter、参数解析器HandlerMethodArgumentResolver

    文章目录 一.前言 二.类型转换器Converter 1.自定义类型转换器 三.参数解析器 1.自定义分页参数解析器 2.自定义注解参数解析器 一.前言 Spring MVC源码分析相关文章已出: S ...

  7. Spring MVC:HTTP消息转换器

    了解有关Spring MVC和HTTP消息转换器的更多信息. 通常,你需要为用户提供相同的数据,但是以不同的形式(例如JSON,PDF,XLS等)为用户提供.如果你的应用程序是基于Spring Fra ...

  8. Spring MVC 4快速入门Maven原型得到了改进–更多Java 8功能

    对于所有有兴趣在没有Spring Boot的情况下快速引导Spring 4应用程序的开发人员,请检查刚刚更新的我的Spring MVC 4 Quickstart Maven原型. 原型已经将Java ...

  9. java 方式配置ssm,关于SSM以及Spring boot中对于Spring MVC配置的问题

    SSM中 Spring MVC配置 传统的web.xml配置 web.xml contextConfigLocation classpath*:applicationContext.xml org.s ...

最新文章

  1. (转)Fur Shader
  2. python爬虫代码实例-Python爬虫之urllib示例
  3. 数据中心机房谐波治理
  4. Web文件的ContentType类型大全
  5. Spring MVC学习总结(6)——一些Spring MVC的使用技巧
  6. java对比swith和if的不同,浅谈选择结构if语句和switch语句的区别
  7. Gensim进阶教程
  8. Java反射----理解反射的源头Class类
  9. 《Mini-Me: An Adaptive Avatar for Mixed Reality Remote Collaboration》论文笔记
  10. 开源公告|微信云端深度学习推理框架WeChat TFCC开源啦!
  11. htmlcss笔记(更新版)
  12. LeetCode久不久来一题系列之Add Two Numbers
  13. 什么软件可以支持视频转换成文字?
  14. 使用Java模拟登录
  15. Painter X Liquid Ink(液体墨水)画笔
  16. SWD脱机下载器的简易实现(一)
  17. 多页面实现-个人中心
  18. lr0文法分析表示例_LR0分析表
  19. 关于Opencv 分水岭算法种子点(注水口)的选取问题
  20. 测试基础知识DAY02

热门文章

  1. Excel如何利用时间差操作,求得员工的工龄
  2. html中鼠标移动在标签上出现小手形状
  3. 众人皆阳我独阴,分享与小阳人共同生活一周体验!
  4. Xposed获取微信好友列表(通讯录),看看这是你要的详细吗
  5. 两轮电动车被小米、哈啰们盯上了
  6. 仿淘宝商品详情页[带有视频和图片的轮播功能]
  7. 英伟达发布527.37显卡驱动,支持《极品飞车:不羁》《漫威暗夜之子》
  8. Windows显卡切换
  9. 云原生时代的 Java 虚拟机
  10. 谷歌AI聊天机器人Bard答错问题,股价大跌7.4%;淘宝屏蔽ChatGPT;孟晚舟4月将首次当值华为轮值董事长丨每日大事件...