1、简介
-
数据转换器作用:对象转换对象
请求数据------》数据转换器------》对象
-
其实数据格式化就是数据转换器的一种
- 数据格式化特点:
- 输入字符串数据类型-------》数据格式化------》对象
- 对象------》数据格式化----------》字符串
- 数据格式化特点:
2、用法
-
只要继承Formatter接口,即可实现数据格式化处理
-
注意:Formatter则只能进行String与任意Object对象的转换,它提供 解析 与 格式化 两种功能
-
应用场景
-
如何实现
-
定义javabean
package com.cn.home.domain; import java.io.Serializable; import java.util.Date; /** * @Author Lin_Home * @Date 2020/10/29 9:29 * @Version 1.0 */ public class User implements Serializable { private String username; private Integer age; private Date birth; public User() { } public User(String username, Integer age, Date birth) { this.username = username; this.age = age; this.birth = birth; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public Date getBirth() { return birth; } public void setBirth(Date birth) { this.birth = birth; } @Override public String toString() { return "User{" + "username='" + username + '\'' + ", age=" + age + ", birth=" + birth + '}'; } }
-
实现handler
package com.cn.home.controller; import com.cn.home.domain.User; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; /** * @Author Lin_Home * @Date 2020/10/29 9:32 * @Version 1.0 */ @Controller public class UserController { @RequestMapping("/toForm") public String toFrom(Model model) { User user = new User(); user.setUsername("张三"); user.setAge(30); //它会在表单的输入框打印:xxxx-xx-xx user.setBirth(new java.util.Date()); model.addAttribute("command", user); return "form"; } @RequestMapping("/save") public String save(User user) { System.out.println(user); return "success"; } }
-
编写jsp的标签form
<%-- Created by IntelliJ IDEA. User: cheng Date: 2020/10/21 Time: 10:23 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@taglib uri="http://www.springframework.org/tags/form" prefix="form" %> <html> <head> <title>Title</title> </head> <body> <form:form action="${pageContext.servletContext.contextPath}/save"> 用户名:<form:input path="username" /><br/> 年龄:<form:input path="age" /><br/> 出生年月:<form:input path="birth" /><br/> <input type="submit" value="保存"/> </form:form> </body> </html>
-
自定义formater的类
package com.cn.home.utils; import org.springframework.format.Formatter; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; /** * @Author Lin_Home * @Date 2020/10/29 9:38 * @Version 1.0 */ /*Converter可以将一种类型转换成另一种类型,是任意Object之间的类型转换。 Formatter则只能进行String与任意Object对象的转换,它提供 解析 与 格式化 两种功能。*/ public class DateFormatter implements Formatter<Date> { //将字符串----------》解释--------》Date对象 @Override public Date parse(String s, Locale locale) throws ParseException { SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd"); return sf.parse(s); } //将Date对象--------->解释-------->打印输出 @Override public String print(Date date, Locale locale) { SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd"); return sf.format(date); } }
-
配置spring-config.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:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd"> <context:component-scan base-package="com.cn.home"/> <!-- 1、注解映射器及适配器的实现 2、消息转换器的配置实现(默认jackjson) 3、数据转换 4、数据格式化处理 --> <mvc:annotation-driven /> <!--允许直接访问静态资源(js/html/img/css)--> <mvc:default-servlet-handler /> <!-- 格式化 --> <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"> <property name="formatters"> <list> <bean class="com.cn.home.utils.DateFormatter" /> </list> </property> </bean> <!-- 视图解析器 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- 前缀 --> <property name="prefix"> <value>/WEB-INF/jsp/</value> </property> <!-- 后缀 --> <property name="suffix"> <value>.jsp</value> </property> </bean> </beans>
-