Spring MVC中日期格式转换的两种实用方法

 更新时间:2025年08月06日 09:16:41   作者:小白的代码日记  
在开发基于 Spring MVC 的 Web 应用时,日期格式的转换是一个常见的需求,本文将详细介绍 Spring MVC 中两种日期格式转换的方法,包括创建过程和最终的运行结果,需要的朋友可以参考下

引言

在开发基于 Spring MVC 的 Web 应用时,日期格式的转换是一个常见的需求。用户在表单中输入的日期通常是字符串类型,而在 Java 代码中我们往往需要将其转换为 Date 类型进行处理。本文将详细介绍 Spring MVC 中两种日期格式转换的方法,包括创建过程和最终的运行结果。

方法一:使用 @DateTimeFormat 注解

1. 原理

@DateTimeFormat 注解是 Spring 框架提供的一个便捷注解,用于将字符串类型的日期转换为 Date 类型。它可以直接应用在实体类的日期属性上,Spring MVC 在接收到请求参数时会自动根据注解中指定的格式进行转换。

2. 创建过程

2.1 实体类添加注解

在 User 类的 birthday 属性上添加 @DateTimeFormat 注解,指定日期格式。示例代码如下:

package cn.tx.demo2;
 
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import java.util.Map;
 
public class User implements Serializable {
    // ... 其他属性 ...
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date birthday;
    // ... 其他方法 ...
}

2.2 控制器接收参数

在控制器中,当接收到包含日期参数的请求时,Spring MVC 会自动将字符串日期转换为 Date 类型。示例代码如下:

package cn.tx.demo2;
 
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
 
@Controller
@RequestMapping("/user")
public class UserController {
    @RequestMapping("/save2.do")
    public String save2(User user) {
        System.out.println("USER:" + user);
        return "suc";
    }
}

 3.运行结果:

使用原来日期格式:

报错:因为日期格式改了 

改成现在的格式:

成功:

方法二:自定义转换器 StringToDate

1. 原理

自定义转换器可以实现更复杂的日期格式转换逻辑。通过实现 org.springframework.core.convert.converter.Converter 接口,我们可以自定义字符串到 Date 类型的转换规则。

2. 创建过程

2.1 创建自定义转换器类

创建一个实现 Converter<String, Date> 接口的类,实现 convert 方法,用于将字符串类型的日期转换为 Date 类型。示例代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">
 
    <!-- 启用注解驱动 -->
    <mvc:annotation-driven/>
 
    <!-- 配置组件扫描 -->
    <context:component-scan base-package="cn.tx.demo1"/>
    <context:component-scan base-package="cn.tx.demo2"/>
 
    <!-- 配置视图解析器 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/pages/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
 
    <!--配置日期类型转换器,类型转换器的组件,把日期类型转换注入到组件对象中-->
    <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
        <property name="converters">
            <set>
                <bean class="cn.tx.demo2.StringToDate" />
            </set>
        </property>
    </bean>
 
    <!--让映射器、适配器和处理器生效(默认不配置也是可以的)-->
    <mvc:annotation-driven conversion-service="conversionService"/>
</beans>

2.3 控制器接收参数

在控制器中,同样可以正常接收包含日期参数的请求,Spring MVC 会使用自定义的转换器进行日期转换。示例代码如下:

package cn.tx.demo2;
 
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
 
@Controller
@RequestMapping("/user")
public class UserController {
    @RequestMapping("/save3.do")
    public String save3(User user) {
        System.out.println("user:" + user);
        return "suc";
    }
}

  3. 运行结果

当用户提交包含日期参数的表单时,Spring MVC 会使用自定义的转换器将字符串日期按照指定的格式转换为 Date 类型,并赋值给 User 对象的 birthday 属性。在控制器中可以直接使用该 Date 对象进行后续处理。

总结

  • @DateTimeFormat 注解适用于简单的日期格式转换,使用方便,只需要在实体类属性上添加注解即可。
  • 自定义转换器适用于需要更复杂转换逻辑的场景,可以根据实际需求自定义转换规则。

通过以上两种方法,我们可以在 Spring MVC 中轻松实现日期格式的转换,提高开发效率。希望本文对你有所帮助!

以上就是Spring MVC中日期格式转换的两种实用方法的详细内容,更多关于Spring MVC日期格式转换的资料请关注脚本之家其它相关文章!

相关文章

  • javaWeb实现学生信息管理系统

    javaWeb实现学生信息管理系统

    这篇文章主要为大家详细介绍了javaWeb实现学生信息管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • 线上Java OOM问题定位与解决方案超详细解析

    线上Java OOM问题定位与解决方案超详细解析

    OOM是JVM抛出的错误,表示内存分配失败,这篇文章主要介绍了线上Java OOM问题定位与解决方案的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-09-09
  • 基于Maven的pom.xml文件详解

    基于Maven的pom.xml文件详解

    下面小编就为大家带来一篇基于Maven的pom.xml文件详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • JDK 1.8 安装配置教程(win7 64bit )

    JDK 1.8 安装配置教程(win7 64bit )

    这篇文章主要为大家详细介绍了win7 64bit下JDK 1.8 安装配置教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • 解决idea npm:无法将“npm”项识别为cmdlet、函数、脚本文件或可运行程序的名称问题

    解决idea npm:无法将“npm”项识别为cmdlet、函数、脚本文件或可运行程序的名称问题

    在IDEA中运行npm命令时出现无法识别的错误,通常是由于npm环境变量配置不正确引起,解决方法包括以管理员身份运行IDEA,确认node和npm是否正确安装及配置环境变量,需要在系统环境变量中添加node.js的安装路径,并设置npm的全局模块和缓存路径
    2024-10-10
  • Java数据结构之List的使用总结

    Java数据结构之List的使用总结

    List是Java中比较常用的集合类,指一系列存储数据的接口和类,可以解决复杂的数据存储问题,本文就来拿实际案例总结介绍一下List的使用方法,感兴趣的朋友快来看看吧
    2021-11-11
  • 浅谈Java后台对JSON格式的处理操作

    浅谈Java后台对JSON格式的处理操作

    下面小编就为大家带来一篇浅谈Java后台对JSON格式的处理操作。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • 全面了解java中的异常处理

    全面了解java中的异常处理

    java中的异常处理是java语言中的一大重要特性,它分离了接收和处理错误代码。这篇文章非常详细的讲解了java中的这一特性,感兴趣的小伙伴一起来学习学习吧
    2021-08-08
  • 详解如何保护SpringBoot配置文件中的敏感信息

    详解如何保护SpringBoot配置文件中的敏感信息

    使用过SpringBoot配置文件的朋友都知道,资源文件中的内容通常情况下是明文显示,安全性就比较低一些,所以为了提高安全性,就需要对配置文件中的敏感信息进行保护,下面就为大家介绍一下实现方法吧
    2023-07-07
  • Eclipse安装Aptana插件(注意对应版本问题)

    Eclipse安装Aptana插件(注意对应版本问题)

    这篇文章主要为大家详细介绍了Eclipse安装Aptana插件的相关资料,特别注意对应版本问题,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02

最新评论