一、需求说明
web开发时,当jsp页面中含有日期组件或是日期格式的字符串要将其传入springmvc的controller层,并持久化到数据库。而数据库中为date类型。此时就需要用SimpleDateFormat.parse()方法进行转换,但每次需要转换时都要写该方法,使得代码重复率高。
二、解决办法
-
(1)原理:springmvc的controller层由前端控制器,处理映射器,处理适配器,视图解析器构成,在初始化时我们利用注解驱动的方法配置最新版的处理器映射器和处理器适配器。只需自定义一个转换类,并将其配置到xml文件中,再将其加入到注解驱动中,则不用每次都手动书写转换方法。
(2)步骤:
-
①新建转化类:
新建converter包,在converter包中新建类(类名随意)如下图所示 -
②转化类
转换类代码如下所示
public class CustomGlobalStrToDateConverter implements Converter<String, Date> {
@Override
public Date convert(String source) {
try {
Date date = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").parse(source);
return date;
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
}
③springmvc.xml中配置上述的类
<!-- 配置自定义转换器
注意: 一定要将自定义的转换器配置到注解驱动上
-->
<bean id="conversionService"
class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="converters">
<set>
<!-- 指定自定义转换器的全路径名称 -->
<bean class="cn.itheima.controller.converter.CustomGlobalStrToDateConverter"/>
</set>
</property>
</bean>
④将自定义的转换器配置到注解驱动上
<mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>
总结
通过上述配置,即可完成string类型和date类型的自动转换