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就会自动转换为日期类型
spring配置Converter、Formatter日期转换器的更多相关文章
- springboot上传文件 & 不配置虚拟路径访问服务器图片 & springboot配置日期的格式化方式 & Springboot配置日期转换器
1. Springboot上传文件 springboot的文件上传不用配置拦截器,其上传方法与SpringMVC一样 @RequestMapping("/uploadPicture&q ...
- SpringMVC配置全局日期转换器,处理日期转换异常
Spring 3.1.1使用Mvc配置全局日期转换器,处理日期转换异常链接地址: https://www.2cto.com/kf/201308/236837.html spring3.0配置日期转换可 ...
- springmvc 日期转换器
package com.xxx.common.controller.converter; import org.joda.time.DateTime; import org.joda.time.for ...
- SpringMVC 自定义全局日期转换器
第一步: 编写自定义转换器的类 /* * 自定义日期转换器 */ public class CustomDateConverter implements Converter<String, Da ...
- spring的2种类型转换器
spring有2种类型转换器,一种是propertyEditor,一种是Converter.虽然都是类型转换,但是还是有细微差别. 所以这里以一个例子的形式来分析一下这2种类型转换的使用场景和差别. ...
- spring配置详解
1.前言 公司老项目的后台,均是基于spring框架搭建,其中还用到了log4j.jar等开源架包.在新项目中,则是spring和hibernate框架均有使用,利用了hibernate框架,来实现持 ...
- 【Java Web开发学习】Spring配置数据源
Spring配置数据源 转载:https://www.cnblogs.com/yangchongxing/p/10027495.html =============================== ...
- SpringMVC自定义日期转换器
一.创建自定义日期转换器类 1 public class StringToDateConverter implements Converter<String,Date> { 2 @Over ...
- Spring配置c3p0数据源时出错报:java.lang.NoClassDefFoundError: com/mchange/v2/ser/Indirector
今天在使用Spring配置c3p0数据源时,使用的数据库是mysql,服务器是tomcat,运行时报了一个 java.lang.NoClassDefFoundError: com/mchange/v2 ...
随机推荐
- Head First 设计模式 —— 单例模式(Singleton)
单例模式简要定义:单例模式确保一个类只有一个实例,并提供一个全局访问点. 1. 如何保证一个类只有一个实例,且这个实例易于被访问? lazy evaluation:在用到的时候才创建对象. 全局变量: ...
- ural 1009. K-based Numbers(简单dp)
http://acm.timus.ru/problem.aspx?space=1&num=1009 题意:将一个n位数转化为合法的K进制数,有多少种情况.合法的K进制数即不含前导0,且任意两个 ...
- [Swift通天遁地]四、网络和线程-(13)创建一个Socket客户端
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- redis取经之路
redis基本数据结构 Redis使用的是自己构建的简单动态字符串(SDS)[simple dynamic string,SDS]的抽象类型,并将SDS用做Rdis的默认字符串表示 redis> ...
- Akka源码分析-Remote-收发消息UL图
- Akka源码分析-ActorSystem
由于本人对Akka比较感兴趣,也用Akka开发了一些系统,但对Akka的源码还没有具体分析过,希望研究源码的同时写一点博客跟大家分享.有不当之处还请指正.我准备采取Debug的方式来研究Akka的运行 ...
- 使用Quartz2.2.3做持久化,启动程序后,控制台报错问题
该错误是由mysql-connector-java.jar版本太低导致. MLog clients using log4j logging. Initializing c3p0-0.9.1.1 [bu ...
- Python 如何在csv中定位非数字和字母的符号
在数据清洗过程中,有时不仅希望去掉脏数据,更希望定位脏数据的位置,例如从csv里面定位非数字和字母单元格的位置,在使用isdigit().isalpha().isalnum()时无法判断浮点数,会将浮 ...
- overflow:解决 div的高度塌陷问题
高度塌陷是如何引起的? 解析: 当一个 div中所有的子 div都进行了浮动后,那么会出现该问题,那么解决方就是在父 div中 设置其 overflow:hidden;即可解决高度塌陷问题. 方式 ...
- 如何扒取一个网站的HTML和CSS源码
一个好的前端开发,当看到一个很炫的页面的时候会本着学习的心态,想知道网站的源码.以下内容只是为了大家更好的学习,拒绝抄袭,支持正版. 1 首先我们要有一个chrome浏览器 2 在本地创建相关文件夹 ...