需求
前端传递一个时间过来,后台需要接收并转换为时间格式进行存储
传统的servlet中我们是怎么解决的?
我们接受到的是一个时间格式的字符串,然后使用simpledataformat类就可以解析,
在springmvc中呢?
解决方法一:
仍然使用该法方法,springmvc默认提供了request参数,我们可以把springmvc中的controller当成servlet使用
这样可以解决该问题,但是违背了我们使用框架的初衷
解决方法二:
自定义参数绑定,也就是说我们先对接受到的数据进行处理,然年在进行数据绑定
实现:
一般使用mvc:annotation-driven注解驱动加载处理器适配器,可以在这个标签上进行配置
- 首先自定义数据转换器(字符串转时间)
@Component
public class DateConverter implements Converter<String, Date> {
@Override
public Date convert(String s) {
Date date=null;
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");//转换成简单日期格式
try {
date=dateFormat.parse(s);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
}
- 配置转换器(在springmvc的配置xml中)
<!--注解绑定-->
<mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>
<!--配置Converter转换器,转换工程(日期、去除两端空格等)-->
<bean class="org.springframework.format.support.FormattingConversionServiceFactoryBean" name="conversionService">
<property name="converters">
<list>
<bean class="com.sunwenxu.converter.DateConverter"></bean> //上面自己编辑的转换类的路径
</list>
</property>
</bean>
如果使用了@RequestBody注解用于读取HTTP请求的内容(JSON字符串)#不常见#
需要这样配置xml
<!--注解驱动-->
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>application/json;charset=utf-8</value>
<value>test/json;charset=utf-8</value>
</list>
</property>
<property name="objectMapper">
<bean class="com.fasterxml.jackson.databind.ObjectMapper">
<property name="dateFormat">
<bean class="java.text.SimpleDateFormat">
<constructor-arg type="java.lang.String" value="yyyy-MM-dd HH:mm:ss"></constructor-arg>
</bean>
</property>
</bean>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>