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

你可能感兴趣的文章
NYOJ 1066 CO-PRIME(数论)
查看>>
NYOJ 737:石子合并(一)(区间dp)
查看>>
nyoj 91 阶乘之和(贪心)
查看>>
nyoj------203三国志
查看>>
NYOJ-525 一道水题
查看>>
nyoj58 最少步数
查看>>
N皇后问题
查看>>
OAuth 2.0 MAC Tokens
查看>>
OAuth 及 移动端鉴权调研
查看>>
OAuth2 + Gateway统一认证一步步实现(公司项目能直接使用),密码模式&授权码模式
查看>>
OAuth2 Provider 项目常见问题解决方案
查看>>
OAuth2 vs JWT,到底怎么选?
查看>>
Vue.js 学习总结(14)—— Vue3 为什么推荐使用 ref 而不是 reactive
查看>>
oauth2-shiro 添加 redis 实现版本
查看>>
OAuth2.0_JWT令牌-生成令牌和校验令牌_Spring Security OAuth2.0认证授权---springcloud工作笔记148
查看>>
OAuth2.0_JWT令牌介绍_Spring Security OAuth2.0认证授权---springcloud工作笔记147
查看>>
OAuth2.0_介绍_Spring Security OAuth2.0认证授权---springcloud工作笔记137
查看>>
OAuth2.0_完善环境配置_把资源微服务客户端信息_授权码存入到数据库_Spring Security OAuth2.0认证授权---springcloud工作笔记149
查看>>
OAuth2.0_授权服务配置_Spring Security OAuth2.0认证授权---springcloud工作笔记140
查看>>
OAuth2.0_授权服务配置_三项内容_Spring Security OAuth2.0认证授权---springcloud工作笔记141
查看>>