SpringMVC学习之自定义类型转换器

本文探讨了在SpringMVC中自定义类型转换器的必要性,因为默认的转换器无法处理所有类型的转换,如日期。详细介绍了自定义转换器的开发流程,包括实现Converter接口,配置转换器并在spring-mvc.xml中引用它。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.问什么需要自定义类型转换器

通过JavaWeb的学习,我们知道从客户端发送的请求中参数都是以字符串的形式提交的
但有时我们需要的参数类型不是字符串,而是整数之类
字符串转整数的转换器不用我们自己来实现,SpringMVC已经帮我们继承好了
例如需要一个int类型的age参数,即使我们传入了18这个字符串,他会自动转换成int
但是还有一些类型,比如日期,SpringMVC是没有为我们提供类型转化器的,所以需要自定义类型转换器:

2.自定义类型转换器的开发流程

(一)定义转换类实现Converter接口

// 把String转成Date的类型转换器
public class DateConverter implements Converter<String, Date> {
    @Override
    // 在这个方法中要把字符串转换成真正的Date并返回
    public Date convert(String dateStr) {
        Date date = null;
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        try {
            date = format.parse(dateStr);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }
}

(二)在spring-mvc.xml中配置转换器

<!--声明自定义的类型转换器-->
    <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
        <property name="converters">
            <list>
                <bean class="com.lxl.converter.DateConverter"/>
            </list>
        </property>
    </bean>

(三)在<annotation-dirven>中引用转换器

<!--配置MVC的注解驱动-->
<mvc:annotation-driven conversion-service="conversionService"/>
Spring MVC中,您可以使用自定义类型转换器来处理特定型之间的转换。要设置自定义类型转换器,您需要执行以下步骤: 1. 创建一个实现了 `Converter<S, T>` 接口自定义类型转换器。其中,S 是源型,T 是目标型。该接口要求实现 `convert()` 方法,用于执行实际的型转换逻辑。 ```java public class CustomConverter implements Converter<String, Date> { @Override public Date convert(String source) { // 实现定义型转换逻辑 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); try { return dateFormat.parse(source); } catch (ParseException e) { throw new IllegalArgumentException("Invalid date format"); } } } ``` 2. 在Spring MVC配置中注册自定义类型转换器。可以通过编程方式或者使用XML配置进行注册。 a. 编程方式: ```java @Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addFormatters(FormatterRegistry registry) { registry.addConverter(new CustomConverter()); } } ``` b. XML配置方式: ```xml <mvc:annotation-driven conversion-service="conversionService" /> <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"> <property name="converters"> <set> <bean class="com.example.CustomConverter" /> </set> </property> </bean> ``` 3. 在您的控制器方法中使用目标型作为参数。Spring MVC会自动调用适当的转换器将请求参数转换为目标型。 ```java @Controller public class MyController { @RequestMapping("/example") public String handleRequest(@RequestParam("date") Date date) { // 处理转换后的日期对象 return "example"; } } ``` 通过以上步骤,您就可以设置自定义转换器来处理Spring MVC中的型转换。希望对您有所帮助!如果还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值