基本数据类型,特殊数据类型-和字符串自动转换

简介: 基本数据类型,特殊数据类型-和字符串自动转换

😀前言

基本数据类型,特殊数据类型-和字符串自动转换

🧑个人简介:大家好,我是尘觉,希望我的文章可以帮助到大家,您的满意是我的动力😉😉


基本数据类型,特殊数据类型-和字符串自动转换

基本介绍

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

基本数据类型可以和字符串之间自动完成转换,

比如:Spring MVC 上下文中内建了很多转换器,可完成大多数 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
  • …….

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

代码实例 -页面演示方式

需求->基本数据类型可以和字符串之间自动完成转换

创建Monster 类

public class Monster {
    private Integer id;
    private String email;
    private Integer age;
    private String name;
    public Monster(Integer id, String email, Integer age, String name,) {
        this.id = id;
        this.email = email;
        this.age = age;
        this.name = name;
    }
    public Monster() {
    }
    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 + '\'' +
                '}';
    }
}

创建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="<%=request.getContextPath()%>/addMonsterUI">添加妖怪</a>
</body>
</body>
</html>

创建MonsterHandler类

    @RequestMapping(value = "/addMonsterUI")
    public String addMonsterUI(Map<String, Object> map) {
        map.put("monster", new Monster());
        return "datavalid/monster_addUI";
    }

创建monster_addUI.jsp

<html>
<head>
    <title>添加妖怪</title>
</head>
<body>
<h3>添加妖怪</h3>
<form:form action="save" method="post" modelAttribute="monster">
    妖怪名字: <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>

解读:

1. 这里的表单,我们使用springMVC的标签来完成

2. SpringMVC 表单标签在显示之前必须在 request 中有一个 bean,

该 bean 的属性和表单标签的字段要对应!

request 中的 key 为: form 标签的 modelAttrite 属性值, 比如这里的monster

3. SpringMVC 的 form:form 标签的 action 属性值中的 / 不代表 WEB 应用的根目录.        

4.

       这里需要给request增加一个 monster,因为jsp 页面 的modelAttribute="monster"需要这时是springMVC的内部的检测机制  即使是一个空的也需要,否则报错.

说明

       如果你跳转的页面使用springmvc标签就需要准备一个对象,放入request域中,这个对象的属性名 monster, 对应springmvc表单标签的 modelAttribute="monster"

阶段测试一下

 

继续完成功能

创建success.jsp

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

修改 MonsterHandler.java , 增加处理添加请求

编写方法,处理添加妖怪

1. springmvc可以将提交的数据,按照参数名和对象的属性名匹配

2. 直接封装到对象中->前面讲解模型数据时,讲过String => Integer

    @RequestMapping(value = "/save")
    public String save(Monster monster) {
        System.out.println("----monster---" + monster);
        return "datavalid/success";
    }

测试

浏览器: http://localhost:8080/springmvc/data_valid.jsp

1) 如果age 输入的是 数字,则通过, 说明SpringMVC可以将提交的字符串 数字,比如"28",转成 Integer/int

2) 如果不是数字,则给出 400 的页面

3) 如何给出对应的提示,我们后面马上讲解

-Postman 完成

1) 如果age 输入的是 数字,则通过, 说明SpringMVC可以将提交的字符串 数字,比如"28", 转成 Integer/int

2) 如果不是数字,则给出 400 的页面 与上面测试一模一样

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

应用实例 -页面演示方式

1. 特殊数据类型和字符串之间的转换使用注解(比如日期,规定格式的小数比如货币形式

等)

2. 对于日期和货币可以使用 @DateTimeFormat 和 @NumberFormat 注解. 把这两个注

解标记在字段上即可

修改 Monster.java , 增加 birthday 和 salary 字段

public class Monster {
    private Integer id;
    private String email;
    private Integer age;
    private String name;
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date birthday;
    @NumberFormat(pattern = "###,###.##")
    private Float salary;
    public Monster(Integer id, String email, Integer age, String name, Date birthday, Float salary) {
        this.id = id;
        this.email = email;
        this.age = age;
        this.name = name;
        this.birthday = birthday;
        this.salary = salary;
    }
    public Date getBirthday() {
        return birthday;
    }
    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }
    public Float getSalary() {
        return salary;
    }
    public void setSalary(Float salary) {
        this.salary = salary;
    }
    public Monster() {
    }
    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 + '\'' +
                ", birthday=" + birthday +
                ", salary=" + salary +
                '}';
    }
}

修改 monster_addUI, 增加 birthday 和salary字段

妖怪年龄~: <form:input path="age"/> <br><br>
妖怪生日: <form:input path="birthday"/> 要求以"9999-11-11"的形式<br><br>
妖怪工资: <form:input path="salary"/> 要求以"123,890.12"的形式<br><br>

测试

1) 如果 birthday 和 salary 是按照指定格式输入,则通过, 说明 SpringMVC 可以按注解指定

格式转换

2) 如果没有按照注解指定格式,则给出 400 的页面

3) 如何给出对应的提示,我们后面马上讲解

😄总结

参数名和对象的属性名匹配

SpringMVC 的 form:form 标签的 action 属性值中的 / 不代表 WEB 应用的根目录.

       这里需要给request增加一个 monster,因为jsp 页面 的modelAttribute="monster"需要这时是springMVC的内部的检测机制  即使是一个空的也需要,否则报错.

SpringMVC 表单标签在显示之前必须在 request 中有一个 bean,

该 bean 的属性和表单标签的字段要对应!

request 中的 key 为: form 标签的 modelAttrite 属性值, 比如这里的monster


文章到这里就结束了,如果有什么疑问的地方请指出,诸佬们一起来评论区一起讨论😁

希望能和诸佬们一起努力,今后我们一起观看感谢您的阅读🍻

如果帮助到您不妨3连支持一下,创造不易您们的支持是我的动力🤞


目录
相关文章
|
22天前
复杂数据类型如何转变为字符串
复杂数据类型如何转变为字符串
15 2
|
22天前
|
存储 Java C语言
【Java探索之旅】数据类型与变量 浮点型,字符型,布尔型,字符串型
【Java探索之旅】数据类型与变量 浮点型,字符型,布尔型,字符串型
22 0
|
22天前
复杂的数据类型如何转成字符串!
复杂的数据类型如何转成字符串!
|
6月前
|
存储 Go
Go 语言的基础数据类型:整数类型、浮点数类型、布尔类型、字符串类型等
Go 语言的基础数据类型:整数类型、浮点数类型、布尔类型、字符串类型等
44 0
Go 语言的基础数据类型:整数类型、浮点数类型、布尔类型、字符串类型等
|
10月前
|
存储 Python
什么是数据类型,都有什么,如何转换
什么是数据类型,都有什么,如何转换
114 0
|
12月前
|
存储 编译器 程序员
认识C++字符串复合类型
认识C++字符串复合类型
数据类型-转换-隐式转换和显式转换
数据类型-转换-隐式转换和显式转换
3、类型转换(强制转换、自动转换、与或非)
3、类型转换(强制转换、自动转换、与或非)
105 0
3、类型转换(强制转换、自动转换、与或非)
|
Java Scala vr&ar
值类型的自动转换|学习笔记
快速学习值类型的自动转换。
70 0
值类型的自动转换|学习笔记

热门文章

最新文章