SpringMVC项目如何全局格式化日期格式

在SpringMVC项目中,为了简化前后端日期处理,可以通过配置RequestMappingHandlerAdapter的messageConverters实现全局日期格式化。具体步骤包括导入所需jar包,配置spring-servlet.xml,设置日期转换模板。这样,所有@RestController和@ResponseBody返回的Date类型都将自动按指定格式转换。但需要注意,该方法不支持转化Null对象,避免空对象参与转化,否则会导致错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SpringMVC项目如何全局格式日期格式

在我们平时的开发工作中,经常会遇到各种格式的日期类型,为了后端开发方便性,日期类型我们一般不做处理,都保持原有Date类型不变。但是保持了后端方便的同时,却对前端的日期处理产生了一定的难度,因为日期格式不一样,呈现到前端的数据形式也会不一样,而且互联网项目的页面展示窗口比较多,如果分别在单独的页面来重复进行日期格式的格式化,那么无疑是对工作效率的一种浪费。因此我们需要一种将前后端完全隔离,统一格式化后台的Date类型的数据并展现在前端的需要,那么spring的RequestMappingHandlerAdapter中的messageConverters就能够完全满足我们的需求。我们怎么做呢?

具体做法如下:

  • -第一步 导入 所需要的jar包,gradle资源如下所列,maven用户自己转一下就行。
		compile 'org.codehaus.jackson:jackson-core-asl:1.9.13'
		compile 'org.codehaus.jackson:jackson-mapper-asl:1.9.13'
		compile 'com.fasterxml.jackson.core:jackson-core:2.4.2'
		compile 'com.fasterxml.jackson.core:jackson-databind:2.4.2'
  • 第二步 接着 配置spring-servlet

      - 引入请求映射器
     		org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter
      - 加入消息转化器
     		 messageConverters
      - 引入Json转化器
     		 org.springframework.http.converter.json.MappingJackson2HttpMessageConverter 
      - 实现对象转化器
     		 objectMapper
      - 日期转换格式定义
     		 dateFormat
    

    配置代码如下:

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
		 <property name="webBindingInitializer">
			<bean class="com.wlgdo.common.web.WebBindingInitializer">
				<property name="conversionService">
					<bean class="org.springframework.format.support.FormattingConversionServiceFactoryBean"></bean>
				</property>
			</bean>
		</property>
		<property name="messageConverters">
			<list>
				<bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter" />
				<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
					<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" />
								</bean>
							</property>
							<property name="serializationInclusion">
								<!-- 注入枚举类型 -->
								<value type="com.fasterxml.jackson.annotation.JsonInclude.Include">NON_NULL</value>
							</property>
						</bean>
					</property>
					<property name="supportedMediaTypes">
						<list>
							<value>text/html;charset=UTF-8</value>
							<value>text/plain;charset=UTF-8</value>
							<value>text/json;charset=UTF-8</value>
							<value>application/json;charset=UTF-8</value>
						</list>
					</property>
				</bean>

			</list>
		</property>
	</bean>

至此,各项准备工作就完成了。
启动你的项目,所有的@RestController和@ResponseBody响应资源都会自动将Java对象里面的Date类型转化为你constructor-arg的参数定义的模板形式。

如下图结果:
这是配置的模板:yyyy-MM-dd HH:mm:ss
这是代码运行的结果

最后强调一点,使用 MappingJackson2HttpMessageConverter转化对象不能转化Null对象,所以在处理的时候要特别注意以下,避免空对象参与转化。否则会报错,如果后续有改进的方法,我会添加到这里。

分享,记录。温故知新,点滴珍贵。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值