【SSM - SpringMVC篇】06 - 日期格式转换,后台Date转json,前台json转Date

1. SpringMVC字符串向日期Date格式转换

  springMVC默认不支持页面上的日期字符串(类似2020-10-14和2020/10/14之类的)到后台的Date的转换。

1.1 通过注解@DateTimeFormat()实现日期格式转换。【 *** 推荐使用】

  注解日期类型转换器(在需要进行日期格式转换的Date属性上添加注解):@DateTimeFormat("需要转换的格式")

 出生日期<input type="date" name="birthday"/><br/>
public User{
    
    
private int id;
  private String username;
  private double password;
  //注解将yyyy-MM-dd的形式转换为Date数据,具体什么格式要看传入参数格式,就是发送请求,查看请求参数的表单数据,看birthday数据的格式
  @DateTimeFormat(pattern = "yyyy-MM-dd")
  private Date birthday;
}

查看请求头,发现传入的日期格式为
yyyy-MM-dd格式,具体是怎么样的看请求信息就行。在这里插入图片描述



1.2 编写自定义转换器实现Converter,通过重写方法进行类型转换。

1.2.1 编写自定义转换器实现Converter接口
import org.springframework.core.convert.converter.Converter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

 /*自定义类型参数转换器: 将字符串日期格式转成Date类型的数据.
      Converter<S,T>  S: 代表的是源,将要转换的数据类型  T:目标类型,将会转成什么数据类型
 */
 //日期格式转换器
public class DateFormatConverter implements Converter<String,Date>{
    
    
  //转换方法
  //String source 将会传递过来的日期的字符串
  public Date convert(String source) {
    
    
   //参数填写为你想要转换的数据格式
​    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");try {
    
    
​      Date date = sdf.parse(source);return date;} catch (ParseException e) {
    
    
​      e.printStackTrace();}return null;
  }
1.2.2 springmvc.xml中配置转换工厂,将转换器设置到converters集合中
<bean id="formattingConversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"><property name="converters"><set><bean id="dateFormatConverter" class="com.itheima.converter.DateTimeFormatConverter"></bean></set></property>
  </bean>
1.2.3 将转换工厂对象挂载到处理器适配器上(springmvc.xml)
		<!-- 这个service的值要和你创建的转换器的bean的id一致 -->
		<mvc:annotation-driven conversion-service="formattingConversionService"/>


2. SpringMVC日期格式化标签,date向指定格式转换(在jsp中使用)

2.1 需要jstl依赖

		<dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>

2.2 在jsp页面导入标签

<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>

2.3 调用日期格式化标签fmt标签(是导入你设置的前缀)

<fmt:formatDate value="${User.birthday}" pattern="yyyy-MM-dd-"/>
这样你传入后端的日期数据格式就是yyyy-MM-dd格式了

2.4 后台就在日期上加@DateTimeFormat(pattern = "yyyy-MM-dd")注解就行

//这个pattern需要和你传入的数据格式一致
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date birthDay;

猜你喜欢

转载自blog.csdn.net/qq_40542534/article/details/109053413
今日推荐