博客
关于我
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/

你可能感兴趣的文章
Oracle——08PL/SQL简介,基本程序结构和语句
查看>>
Oracle——distinct的用法
查看>>
Oracle、MySQL、SQL Server架构大对比
查看>>
oracle下的OVER(PARTITION BY)函数介绍
查看>>
Oracle中DATE数据相减问题
查看>>
Oracle中merge into的使用
查看>>
oracle中sql查询上月、本月、上周、本周、昨天、今天的数据!
查看>>
oracle中sql的case语句运用--根据不同条件去排序!
查看>>
Oracle中Transate函数的使用
查看>>
oracle中关于日期问题的汇总!
查看>>
Oracle中常用的语句
查看>>
Oracle中序列的操作以及使用前对序列的初始化
查看>>
oracle中新建用户和赋予权限
查看>>
Oracle中的NVL,NVL2,NULLIF以及COALESCE函数使用
查看>>
Oracle中的rownum 和rowid的用法和区别
查看>>
oracle中的大小写、字符、dual、数字、处理、日期、函数、显/隐式、时间、条件表达式case、decode、to_date、to_char、sysdate
查看>>
Oracle修改字段类型
查看>>
oracle典型安装失败,安装oracle 10失败
查看>>
Oracle分析函数之LEAD和LAG
查看>>
Oracle和SQL server的数据类型比较
查看>>