spring配置Converter、Formatter日期转换器
最近有点恶补spring的嫌疑,然后学了一点知识点纪录在此。
往往在项目中我们会遇到前端页面输入一个日期类型的字符串传递到后端后我们需要去做转换。甚至在传递的过程中就会报错。
Spring有一个一劳永逸的办法,配置好按照自己的规则转换后就不需要再java后端继续转换了
需要spring的jar可以到spring官方网站去下载。
1.首先第一种 convertor转换器
package com.converter; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import org.springframework.core.convert.converter.Converter; public class StringDate implements Converter<String, Date>{ // 日期转换格式 private String pattern; // 构造函数 public StringDate(String pattern) { super(); this.pattern = pattern; } @Override public Date convert(String arg0) { // yyyy-MM-dd SimpleDateFormat sd = new SimpleDateFormat(pattern); try { return sd.parse(arg0); } catch (ParseException e) { //e.printStackTrace(); throw new IllegalAccessError("日期转换出错!!"); } } }
需要在springMVC-servlet.xml配置文件中配置一下内容 (springMVC-servlet文件具体的可以查看我的上一篇文章 springMVC+springJDBC+Mysql注解模式)
<!-- 日期转换工厂 --> <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean"> <property name="converters"> <list> <bean class="com.converter.StringDate"> <constructor-arg type="java.lang.String" value="yyyy-MM-dd"></constructor-arg> </bean> </list> </property> </bean>
2.第二种方式 Formatter转换器
package com.converter2; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; import org.springframework.core.convert.converter.Converter; import org.springframework.format.Formatter; /** * 日期类型转换器 * @author Administrator * */ public class StringDate2 implements Formatter<Date>{ // 日期转换格式 private String pattern; private SimpleDateFormat sd; // 构造函数 public StringDate2(String pattern) { super(); this.pattern = pattern; sd = new SimpleDateFormat(pattern); } @Override public String print(Date object, Locale locale) { //加上这句话 就需要按照日期规范去转 类似1999-15-15就会报错 sd.setLenient(false); return sd.format(object); } @Override public Date parse(String text, Locale locale) throws ParseException { sd.setLenient(false); return sd.parse(text); } }
需要在springMVC-servlet.xml配置文件中配置一下内容
<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"> <property name="formatters"> <list> <bean class="com.converter2.StringDate2"> <constructor-arg type="java.lang.String" value="yyyy-MM-dd"></constructor-arg> </bean> </list> </property> </bean>
以上方式只要在页面输入指定格式 value="yyyy-MM-dd" 的字符串然后发送请求并且将参数带到controller中spring就会自动转换为日期类型
不管在什么地方上班,请记住:
工作不养闲人,团队不养懒人。入一行先别惦记着赚钱,先学着让自己值钱。赚不到钱赚知识;赚不到知识赚经历;赚不到经历赚阅历;以上都赚到了就不可能赚不到钱。只有先改变自己的态度,才能改变人生的高度。
让一个人迷茫的原因只有一个,那就是本该拼搏的年纪,却想的太多,做的太少。