当前位置: 首页 > article >正文

springmvc--对日期类型如何处理

目录

一、Student类:

二、student.jsp(在webapp下)

三、StudentController类

四、启动tomcat

1.”/”形式

2.“-”形式

3.“\”形式

五、解决

1.第一种方式@DateTimeFormat注解

(1)在实体类的birthday上加@DateTimeFormat注解

(2)同时在spring-mvc.xml里配置spring开启注解mvc的支持

(3)重新启动tomcat

2.第二种方式:用自定义类型转换器

(1)先把Studeunt类birthday上的注解去掉

(2)建一个StringToDate类:

(3)spring-mvc.xml里配置日期类型转换器

(4)重新启动tomcat:

六、怎么让控制台输出的是自己输入的格式?

1.最简单的方式:在输出语句那用SimpleDateFormat对象

StudentController类里:

运行:

控制台:

2.实体类的日期上加两个注解(@DateTimeFormat和@JsonFormat)

(1)使用@JsonFormat注解先导入依赖

(2)实体类:

(3)spring-mvc.xml里配置spring开启注解mvc的支持


一、Student类:

import java.util.Date;


public class Student {

    private String stuName;

    private Integer age;

    private Date birthday;


    public Student() {

    }


    public Student(String stuName, Integer age, Date birthday) {

        this.stuName = stuName;

        this.age = age;

        this.birthday = birthday;

    }


    public String getStuName() {

        return stuName;

    }


    public void setStuName(String stuName) {

        this.stuName = stuName;

    }


    public Integer getAge() {

        return age;

    }


    public void setAge(Integer age) {

        this.age = age;

    }


    public Date getBirthday() {

        return birthday;

    }


    public void setBirthday(Date birthday) {

        this.birthday = birthday;

    }


    @Override

    public String toString() {

        return "Student{" +

                "stuName='" + stuName + '\'' +

                ", age=" + age +

                ", birthday=" + birthday +

                '}';

    }

}

二、student.jsp(在webapp下)

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<html>

<head>

    <title>Title</title>

</head>

<body>

<form action="stu/student.do" method="post">

    姓名:<input type="text" name="stuName" /><br/>

    年龄:<input type="text" name="age" /><br/>

    生日:<input type="text" name="birthday" /><br/>

    <input type="submit" value="提交" />

</form>

</body>

</html>

三、StudentController类

import com.qcby.pojo.Student;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;


@Controller

@RequestMapping("/stu")

public class StudentController {

    

    @RequestMapping("/student.do")

    public String studentSave(Student student){

        System.out.println(student);

        return "success";

    }

}

四、启动tomcat

1./形式

2.-形式

3.“\形式

说明它只支持/

五、解决

1.第一种方式@DateTimeFormat注解

(1)在实体类的birthday上加@DateTimeFormat注解

import org.springframework.format.annotation.DateTimeFormat;


import java.util.Date;


public class Student {

    private String stuName;

    private Integer age;


    //这是"-"形式的,想要别的形式就去改

    @DateTimeFormat(pattern = "yyyy-MM-dd") //这里还可以加上时分秒:yyyy-MM-dd HH:mm:ss

    private Date birthday;


    public Student() {

    }


    public Student(String stuName, Integer age, Date birthday) {

        this.stuName = stuName;

        this.age = age;

        this.birthday = birthday;

    }


    public String getStuName() {

        return stuName;

    }


    public void setStuName(String stuName) {

        this.stuName = stuName;

    }


    public Integer getAge() {

        return age;

    }


    public void setAge(Integer age) {

        this.age = age;

    }


    public Date getBirthday() {

        return birthday;

    }


    public void setBirthday(Date birthday) {

        this.birthday = birthday;

    }


    @Override

    public String toString() {

        return "Student{" +

                "stuName='" + stuName + '\'' +

                ", age=" + age +

                ", birthday=" + birthday +

                '}';

    }

}

(2)同时在spring-mvc.xml里配置spring开启注解mvc的支持

<!-- 配置spring开启注解mvc的支持-->

<mvc:annotation-driven></mvc:annotation-driven>

(3)重新启动tomcat

2.第二种方式:用自定义类型转换器

(1)先把Studeunt类birthday上的注解去掉

(2)建一个StringToDate类:

import org.springframework.core.convert.converter.Converter;


import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Date;


public class StringToDate implements Converter<String, Date> {


    @Override

    public Date convert(String s) {

        //判断

        if(s==null){

            throw new RuntimeException("请您输入日期");

        }

        //进行转换

        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");

        try {

            //进行转换

            return simpleDateFormat.parse(s);

        } catch (ParseException e) {

            throw new RuntimeException(e);

        }

    }

}

(3)spring-mvc.xml里配置日期类型转换器

但是这是自己写的,框架不认识,所以要在spring-mvc.xml里配置:

<!--配置日期类型转换器,类型转换器的组件,把日期类型转换注入到组件对象中-->

<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">

    <property name="converters">

        <set>

            <bean class="com.qcby.controller.StringToDate"></bean>

        </set>

    </property>

</bean>

<!--让映射器、适配器和处理器生效(默认不配置也是可以的)-->

<mvc:annotation-driven conversion-service="conversionService"/><!--这个要开启-->

<!-- 配置spring开启注解mvc的支持-->

<!--<mvc:annotation-driven></mvc:annotation-driven>--><!--而且这个要关闭-->

(4)重新启动tomcat:

点提交:

控制台:

六、怎么让控制台输出的是自己输入的格式?

1.最简单的方式:在输出语句那用SimpleDateFormat对象

StudentController类里:

import com.qcby.pojo.Student;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;


import java.text.SimpleDateFormat;


@Controller

@RequestMapping("/stu")

public class StudentController {


    @RequestMapping("/student.do")

    public String studentSave(Student student){

        System.out.println(student);

        SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");

        String format = simpleDateFormat.format(student.getBirthday());

        System.out.println(format);

        return "success";

    }

}

运行:

控制台:

但这是手动的,每次都要重新编码,不好

2.实体类的日期上加两个注解(@DateTimeFormat和@JsonFormat)

这样就是接收的时候就以这种方式接收,显示的时候还以这种方式显示,就不用自定义类型转换器了

(1)使用@JsonFormat注解先导入依赖

<dependency>

    <groupId>com.fasterxml.jackson.core</groupId>

    <artifactId>jackson-databind</artifactId>

    <version>2.9.2</version>

</dependency>

(2)实体类:

import com.fasterxml.jackson.annotation.JsonFormat;

import org.springframework.format.annotation.DateTimeFormat;


import java.util.Date;


public class Student {

    private String stuName;

    private Integer age;


    @DateTimeFormat(pattern = "yyyy-MM-dd") //输入

    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")  //显示

    private Date birthday;


    public Student() {

    }


    public Student(String stuName, Integer age, Date birthday) {

        this.stuName = stuName;

        this.age = age;

        this.birthday = birthday;

    }


    public String getStuName() {

        return stuName;

    }


    public void setStuName(String stuName) {

        this.stuName = stuName;

    }


    public Integer getAge() {

        return age;

    }


    public void setAge(Integer age) {

        this.age = age;

    }


    public Date getBirthday() {

        return birthday;

    }


    public void setBirthday(Date birthday) {

        this.birthday = birthday;

    }


    @Override

    public String toString() {

        return "Student{" +

                "stuName='" + stuName + '\'' +

                ", age=" + age +

                ", birthday=" + birthday +

                '}';

    }

}

(3)spring-mvc.xml里配置spring开启注解mvc的支持

​<?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">


    <!-- 配置spring创建容器时要扫描的包 -->

    <context:component-scan base-package="com.qcby.controller"></context:component-scan>


    <!-- 配置视图解析器 -->

    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">

        <property name="prefix" value="/WEB-INF/pages/"></property>

        <property name="suffix" value=".jsp"></property>

    </bean>

    <!-- 配置spring开启注解mvc的支持-->

    <mvc:annotation-driven></mvc:annotation-driven>

</beans>

​

http://www.kler.cn/a/466929.html

相关文章:

  • Linux之信号量
  • Spring MVC实战指南:构建高效Web应用的架构与技巧(三)
  • Leetcode打卡:设计一个ATM机器
  • 深入理解 Java 接口的回调机制
  • JAVA:Spring Boot 集成 Quartz 实现分布式任务的技术指南
  • mmsegmentation中img_scale的作用
  • 三甲医院等级评审八维数据分析应用(二)--数据标准化体系篇
  • qt qss文件的使用
  • 数据挖掘——规则和最近邻分类器
  • 如何轻松关闭 iPhone 上的 HEIC [HEIC 图像技巧]
  • 嵌入式系统开发笔记112:通过有人云测试MQTT
  • 2023 年 3 月 GESP C++ 一级真题解析
  • springboot537农产品智慧物流系统(论文+源码)_kaic
  • Mysql 学习补充
  • Maven 详细配置:Maven 项目 POM 文件解读
  • Backend - C# 的日志 NLog日志
  • 机器学习经典算法——KNN算法
  • 记一个小程序的诞生与死亡
  • Rust 泛型、特征与生命周期详解
  • [CTF/网络安全] 攻防世界 supersqli 解题详析
  • 新手学习yolov8目标检测小记2--对比实验中经典模型库MMDetection使用方法(使用自己的数据集训练,并转换为yolo格式评价指标)
  • Linux部署web项目【保姆级别详解,Ubuntu,mysql8.0,tomcat9,jdk8 附有图文】
  • Next.js 多语言 (1) | 中间件(Middleware)的设置与应用
  • android 开发中的 SPI模式
  • Kotlin 协程与异步编程
  • 《前端web开发-CSS3基础-1》