最近有点恶补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就会自动转换为日期类型

spring配置Converter、Formatter日期转换器的更多相关文章

  1. springboot上传文件 & 不配置虚拟路径访问服务器图片 & springboot配置日期的格式化方式 & Springboot配置日期转换器

    1.    Springboot上传文件 springboot的文件上传不用配置拦截器,其上传方法与SpringMVC一样 @RequestMapping("/uploadPicture&q ...

  2. SpringMVC配置全局日期转换器,处理日期转换异常

    Spring 3.1.1使用Mvc配置全局日期转换器,处理日期转换异常链接地址: https://www.2cto.com/kf/201308/236837.html spring3.0配置日期转换可 ...

  3. springmvc 日期转换器

    package com.xxx.common.controller.converter; import org.joda.time.DateTime; import org.joda.time.for ...

  4. SpringMVC 自定义全局日期转换器

    第一步: 编写自定义转换器的类 /* * 自定义日期转换器 */ public class CustomDateConverter implements Converter<String, Da ...

  5. spring的2种类型转换器

    spring有2种类型转换器,一种是propertyEditor,一种是Converter.虽然都是类型转换,但是还是有细微差别. 所以这里以一个例子的形式来分析一下这2种类型转换的使用场景和差别. ...

  6. spring配置详解

    1.前言 公司老项目的后台,均是基于spring框架搭建,其中还用到了log4j.jar等开源架包.在新项目中,则是spring和hibernate框架均有使用,利用了hibernate框架,来实现持 ...

  7. 【Java Web开发学习】Spring配置数据源

    Spring配置数据源 转载:https://www.cnblogs.com/yangchongxing/p/10027495.html =============================== ...

  8. SpringMVC自定义日期转换器

    一.创建自定义日期转换器类 1 public class StringToDateConverter implements Converter<String,Date> { 2 @Over ...

  9. Spring配置c3p0数据源时出错报:java.lang.NoClassDefFoundError: com/mchange/v2/ser/Indirector

    今天在使用Spring配置c3p0数据源时,使用的数据库是mysql,服务器是tomcat,运行时报了一个 java.lang.NoClassDefFoundError: com/mchange/v2 ...

随机推荐

  1. Ubuntu环境下安装nodejs和npm

    1.安装python-software-properties sudo apt-get install python-software-properties 2.添加ppa curl -sL http ...

  2. Django-CKeditor使用笔记

    1. 安装django-ckeditor $ pip install django-ckeditor 2. 在setting中,添加ckeditor , ckeditor_uploader 到INST ...

  3. distpicker三级联动,动态改变省市信息

    一.引入3个js文件 <script type="text/javascript" src="js/distpicker.data.js">< ...

  4. ckeditor 工具栏的配置

    config.toolbar =    [       ['Undo','Redo'],            ['Font','FontSize'],            ['Bold','Ita ...

  5. 尝试安卓与js交互

    1.android中利用webview调用网页上的js代码. Android 中可以通过webview来实现和js的交互,在程序中调用js代码,只需要将webview控件的支持js的属性设置为true ...

  6. OFDM同步算法之Park算法

    park算法代码 训练序列结构 T=[\(C\) \(D\) \(C^{*}\) \(D^{*}\)],其中C表示由长度为N/4的复伪随机序列PN,ifft变换得到的符号序列 \(C(n) = D(N ...

  7. bootstrap 字体颜色 对齐方式

    一:字体代码:作用--颜色 1..text-muted:提示--浅灰色 2..text-primary:主要--蓝色 3..text-success:成功--浅绿色 4..text-info:     ...

  8. Android java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@412d7230

    近期遇到了如标题这种错误,再次记录解决方法.本文參考帖子: http://bbs.csdn.net/topics/390196217 出现此bug的原因是在内存回收上.里面用Bitamp的代码为: t ...

  9. html base 又一重大发现

    base 一个曾经不记得的标签,虽然接触Javaweb这么久了,但是还有很多基础性的东西都被我忽略掉了,还有很多基础但实用的技巧应该没有被我发现,虽然不使用这些技巧对功能实现没有多大影响.但是,发现这 ...

  10. Discuz! X3.1云平台QQ互联的Unknown column 'conuintoken' in 'field list' 解决办法

    http://www.discuz.net/thread-3482497-1-1.html 由于程序安装默认数据表的结构和QQ互联数据表结构不同,安装Discuz! X3.1和升级Discuz! X3 ...