首页IT科技数据格式化是指对数据进行什么上的修改(day09-1-数据格式化)

数据格式化是指对数据进行什么上的修改(day09-1-数据格式化)

时间2025-06-21 00:14:40分类IT科技浏览5034
导读:数据格式化 1.基本介绍...

数据格式化

1.基本介绍

说明:在我们提交数据(比如表单时)            ,SpringMVC 是怎样对提交的数据进行转换和处理的

基本数据类型可以和字符串之间自动进行转换                 ,比如:SpringMVC 上下文中内建了很多转换器     ,可以完成大多数 java 类型的转换工作            。[相互转换         ,这里只列出部分]

ConversionService converters = java.lang.Boolean-> java.lang.String:org.springframework.core.convert.support.ObjectToStringConverter@f874ca java.lang.Character -> java.lang.Number : CharacterToNumberFactory@f004c9 java.lang.Character -> java.lang.String : ObjectToStringConverter@68a961 java.lang.Enum -> java.lang.String : EnumToStringConverter@12f060a java.lang.Number -> java.lang.Character : NumberToCharacterConverter@1482ac5 java.lang.Number -> java.lang.Number : NumberToNumberConverterFactory@126c6f java.lang.Number -> java.lang.String : ObjectToStringConverter@14888e8 java.lang.String -> java.lang.Boolean : StringToBooleanConverter@1ca6626 java.lang.String -> java.lang.Character : StringToCharacterConverter@1143800 java.lang.String -> java.lang.Enum : StringToEnumConverterFactory@1bba86e java.lang.String -> java.lang.Number : StringToNumberConverterFactory@18d2c12 java.lang.String -> java.util.Locale : StringToLocaleConverter@3598e1 java.lang.String -> java.util.Properties : StringToPropertiesConverter@c90828 java.lang.String -> java.util.UUID : StringToUUIDConverter@a42f23 java.util.Locale -> java.lang.String : ObjectToStringConverter@c7e20a java.util.Properties -> java.lang.String : PropertiesToStringConverter@367a7f java.util.UUID -> java.lang.String : ObjectToStringConverter@112b07f ……

2.基本数据类型和字符串自动转换

应用实例:基本数据类型可以和字符串之间自动地完成转换

(1)Monster.java

package com.li.web.datavalid.entity; /** * @author 李 * @version 1.0 */ public class Monster { private Integer id; private String email; private Integer age; private String name; public Monster() {} public Monster(Integer id, String email, Integer age, String name) { this.id = id; this.email = email; this.age = age; this.name = name; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Monster{" + "id=" + id + ", email=" + email + \ + ", age=" + age + ", name=" + name + \ + }; } }

(2)data_valid.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>SpringMVC[数据格式/验证等]</title> </head> <body> <h1>SpringMVC[数据格式/验证等]</h1> <hr/> <a href="https://www.cnblogs.com/liyuelian/archive/2023/02/14/<%=request.getContextPath()%>/addMonsterUI">添加妖怪</a> </body> </html>

(3)MonsterHandler.java

package com.li.web.datavalid; import com.li.web.datavalid.entity.Monster; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import java.util.Map; /** * @author 李 * @version 1.0 * MonsterHandler 处理器响应用户提交数据 * @Scope(value = "prototype")表示每次请求MonsterHandler都会生成一个新的对象 */ @Controller @Scope(value = "prototype") public class MonsterHandler { /** * 显示添加monster的页面 * 这里的 map                  ,当我们向 map添加数据时        ,会默认存放到 request域中 * @param map * @return */ @RequestMapping(value = "/addMonsterUI") public String addMonsterUI(Map<String, Object> map) { //如果你跳转的页面使用了SpringMVC标签      ,就需要准备一个对象放入到request域中                  , //该对象的属性名要对应SpringMVC的form标签的modelAttribute的属性名           ,否则报错 map.put("monster", new Monster()); return "datavalid/monster_addUI"; } /** * SpringMVC可以将提交的数据   ,按照参数名和形参对象的属性名匹配                  , * 然后直接封装到对象中[模型数据] * @param monster * @return */ @RequestMapping(value = "/save") public String save(Monster monster) { System.out.println("monster---" + monster); return "datavalid/success"; } }

(4)monster_addUI.jsp:

<%@taglib prefix="form" uri="http://www.springframework.org/tags/form" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>添加妖怪</title> </head> <body> <h3>添加妖怪</h3> <%-- 1. 这里的表单              ,我们使用SpringMVC的标签来完成,目的是方便提示信息的回显 2. SpringMVC表单标签在显示之前               ,必须在request域中有一个 bean(java对象)                 , 该 bean的属性名和表单标签的字段要对应! 3. request 域中的 key 为 form 标签的 modelAttribute的属性值   ,比如这里的 monsters 4.SpringMVC 的 form:form 标签的 action 属性值中的 / 不代表 WEB应用的根目录                 。 --%> <form:form action="save" method="post" modelAttribute="monster"> 妖怪id:<form:input path="id"/><br/><br/> 妖怪名字:<form:input path="name"/><br/><br/> 妖怪年龄:<form:input path="age"/><br/><br/> 电子邮件:<form:input path="email"/><br/><br/> <input type="submit" value="添加妖怪"/> </form:form> </body> </html>

(5)success.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>添加成功</title> </head> <body> <h1>恭喜你            ,添加成功</h1> </body> </html>

(6)测试

后台成功拿到了数据                 ,并将 String 类型的字符串转化为相应的数据类型     ,赋给 Monster 对象属性     。说明 SpringMVC 底层可以自动进行基本数据类型转换         。

3.特殊数据类型和字符串间的转换

特殊数据类型和字符串之间的转换可以使用注解来完成(比如日期         ,规定格式的小数比如货币形式) 对于日期和货币可以使用 @DataTimeFormat 和 @NumberFormat 注解                  。

应用实例

(1)修改Monster.java                  ,增加 birthday 和 salary 字段        。修改相应的构造器        ,getter 和 setter 等      。

(2)data_valid.jsp 不变

(3)MonsterHandler.java 不变

(4)修改 monster_addUI.jsp:

<%@taglib prefix="form" uri="http://www.springframework.org/tags/form" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>添加妖怪</title> </head> <body> <h3>添加妖怪</h3> <%-- 1. 这里的表单      ,我们使用SpringMVC的标签来完成                  ,目的是方便提示信息的回显 2. SpringMVC表单标签在显示之前           ,必须在request域中有一个 bean(java对象)   , 该 bean的属性名和表单标签的字段要对应! 3. request 域中的 key 为 form 标签的 modelAttribute的属性值                  ,比如这里的 monsters 4.SpringMVC 的 form:form 标签的 action 属性值中的 / 不代表 WEB应用的根目录                  。 --%> <form:form action="save" method="post" modelAttribute="monster"> 妖怪id:<form:input path="id"/><br/><br/> 妖怪名字:<form:input path="name"/><br/><br/> 妖怪年龄:<form:input path="age"/><br/><br/> 妖怪生日:<form:input path="birthday"/><br/><br/> 妖怪工资:<form:input path="salary"/><br/><br/> 电子邮件:<form:input path="email"/><br/><br/> <input type="submit" value="添加妖怪"/> </form:form> </body> </html>

(5)success.jsp 不变

(6)redeployTomcat              ,进行测试

提交的数据:

后台输出:

monster---Monster{id=22, email=king@sohu.com, age=99, name=king, birthday=Tue Jan 01 00:00:00 CST 1924, salary=124567.22}

如果转换失败,将会提示:

Field error in object monster on field birthday: rejected value [192401-01]; codes [typeMismatch.monster.birthday,typeMismatch.birthday,typeMismatch.java.util.Date,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [monster.birthday,birthday]; arguments []; default message [birthday]]; default message [Failed to convert property value of type java.lang.String to required type java.util.Date for property birthday; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [@org.springframework.format.annotation.DateTimeFormat java.util.Date] for value 192401-01; nested exception is java.lang.IllegalArgumentException: Parse attempt failed for value [192401-01]]]

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
苹果14日发布(苹果14发布会2022在几月详情)