博客
关于我
SpringMVC(7)——类型转换器Converter
阅读量:267 次
发布时间:2019-03-01

本文共 3506 字,大约阅读时间需要 11 分钟。

Spring MVC类型转换器详解

Spring MVC框架提供了强大的数据类型转换功能,开发者可以通过内置转换器或自定义转换器实现数据类型间的互相转换。本文将详细介绍Spring MVC类型转换器的使用方法。


1. Spring MVC类型转换器概述

Spring MVC框架提供了许多常用数据类型的转换器,这些转换器在视图与控制器之间传递数据时自动使用。默认情况下,Spring会自动检测并使用这些转换器。


2. 内置类型转换器

Spring MVC内置了许多常用类型转换器,以下是几种常见的转换器及其使用场景:

2.1 基本类型转换器

  • StringToBooleanConverter:将String类型转换为boolean类型。
  • ObjectToStringConverter:调用对象的toString方法,将其转换为String类型。
  • StringToNumberConverterFactory:将String转换为数字类型(如Integer、Long等)。
  • NumberToNumberConverterFactory:将数字子类型(如Integer、Long)转换为包装类型(如Number)。
  • StringToCharacterConverter:将String转换为Character类型,取字符串的第一个字符。
  • NumberToCharacterConverter:将数字子类型转换为Character类型。
  • CharacterToNumberFactory:将Character转换为数字子类型。
  • StringToEnumConverterFactory:将String转换为枚举类型,使用Enum.valueOf方法。
  • EnumToStringConverter:将枚举类型转换为String,返回枚举对象的name值。
  • StringToLocaleConverter:将String转换为java.util.Locale类型。
  • PropertiesToStringConverter:将java.util.Properties转换为String,使用ISO-8859-1编码。
  • StringToPropertiesConverter:将String转换为java.util.Properties,使用ISO-8859-1编码。

2.2 集合、数组相关转换器

  • ArrayToCollectionConverter:将任意数组转换为集合(List、Set)。
  • CollectionToArrayConverter:将集合转换为数组。
  • ArrayToArrayConverter:将任意数组转换为任意数组。
  • CollectionToCollectionConverter:实现集合之间的类型转换。
  • MapToMapConverter:实现Map之间的类型转换。
  • ArrayToStringConverter:将任意数组转换为String。
  • StringToArrayConverter:将String转换为数组,默认使用逗号分隔并去除空格。
  • ArrayToObjectConverter:将数组转换为Object,若目标类型与源类型兼容则直接返回源对象。
  • ObjectToArrayConverter:将Object转换为单元素数组。
  • CollectionToStringConverter:将集合转换为String,默认使用逗号分隔并去除空格。
  • StringToCollectionConverter:将String转换为集合,默认使用逗号分隔并去除空格。
  • CollectionToObjectConverter:将集合转换为Object,若目标类型与源类型兼容则直接返回源对象。
  • ObjectToCollectionConverter:将Object转换为单元素集合。

3. 自定义类型转换器

在某些场景下,内置转换器可能无法满足需求,此时可以编写自定义类型转换器。自定义转换器需要实现Converter<S,T>接口,并覆盖convert(S)方法。

3.1 自定义转换器的实现

以Student类为例,创建一个自定义类型转换器StudentConverter,实现Converter<String, Student>接口:

package springmvcdemo.converter;import org.springframework.core.convert.converter.Converter;import springmvcdemo.pojo.Student;public class StudentConverter implements Converter
{ @Override public Student convert(String s) { Student student = new Student(); String[] stringValues = s.split(","); if (stringValues != null && stringValues.length == 5) { student.setId(Integer.parseInt(stringValues[0])); student.setName(stringValues[1]); student.setPassword(stringValues[2]); student.setSex(stringValues[3]); student.setAge(Integer.parseInt(stringValues[4])); return student; } else { throw new IllegalArgumentException(String.format("类型转换失败,格式应为'1,张三,abc,男,18',但实际格式是[%s]", s)); } }}

4. 注册类型转换器

在Spring配置文件中注册自定义类型转换器:


5. 创建JSP视图文件

创建showStudent.jsp文件,用于显示转换后的Student对象:

<%@ page import="springmvcdemo.pojo.Student" %><%@ page contentType="text/html;charset=UTF-8" language="java" %>显示学生信息<%Student student = (Student)request.getAttribute("student");%>学生ID:<%= student.getId() %>
学生姓名:<%= student.getName() %>
学生密码:<%= student.getPassword() %>
学生性别:<%= student.getSex() %>
学生年龄:<%= student.getAge() %>

创建input.jsp文件,用于用户输入数据:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>输入
请输入学生信息(格式为:1,张三,abc,男,19):

6. 运行效果

访问应用程序的输入页面,输入符合格式的数据并提交,系统会将输入的字符串转换为Student对象并显示在页面上。如输入格式不正确,系统会抛出错误提示。


以上内容完整涵盖了Spring MVC类型转换器的使用方法,包括内置转换器的使用、自定义转换器的编写以及在Spring配置文件中的注册。通过以上步骤,您可以轻松实现数据类型间的转换,提升应用程序的灵活性和可扩展性。

转载地址:http://vlzx.baihongyu.com/

你可能感兴趣的文章
php查最大值,在PHP数组中查找最大值
查看>>
php标签筛选,关于PHP CodeIgniter框架中通过<a>标签和url做多条件分类筛选
查看>>
php根据年月日计算年龄
查看>>
RabbitMQ - 单机部署(超详细)
查看>>
php检查注册,PHP检查注册的电子邮件地址是一个’school.edu’地址
查看>>
php模拟发送GET和POST请求
查看>>
php模板引擎smarty
查看>>
php正则表达式的特殊字符含义
查看>>
PHP水仙花问题解法之一
查看>>
php没有解析是怎么回事,linux下php文件没有被剖析怎么办?_后端开发
查看>>
php注册页面实现注册后跳转页面
查看>>
PHP消息队列的实现方式与详解,值得一看
查看>>
PHP混合Go协程并发
查看>>
php源码中如何添加滚动公告,给WordPress网站添加滚动公告的方法
查看>>
php漏洞tips
查看>>
php版Zencoding之 phpstorm
查看>>
PHP版本升级5.4手记
查看>>
php版本微信公众号开发
查看>>
php生成二维码到图片上
查看>>
php生成二维码并下载图片(适应于框架)
查看>>