SpringMVC 06: 日期类型的变量的注入和显示
日期处理和日期显示
日期处理
- 此时SpringMVC的项目配置和SpringMVC博客集中(指SpringMVC 02)配置相同
- 日期处理分为单个日期处理和类中全局日期处理
- 单个日期处理:
- 使用@DateTimeFormat注解 + < mvc:annotation-driven />注解驱动
- webapp/index.jsp:网站的首页,用来选定时间并提交给服务器
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>index.jsp</title>
</head>
<body>
<h2>单个日期处理</h2>
<form action="${pageContext.request.contextPath}/date.action">
日期:<input type="date" name="date">
<input type="submit" value="提交">
</form>
</body>
</html>
- webapp/admin/date.jsp:请求的响应页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>date.jsp</title>
</head>
<body>
<h2>date......page......</h2>
</body>
</html>
- 在springmvc.xml配置文件中新增注解驱动:解析用来进行日期注入的注解
<!-- 添加注解驱动-->
<mvn:annotation-driven/>
- 新增SpringMVC控制器:DateAction,其中action方法的Date类型参数用@DateTimeFormat(pattern = "yyyy-MM-dd")标识
- 注解后面的pattern参数指定了前端传来的日期(实际上以字符串的形式传递到后端),以什么样的格式注入到date参数中
- 但是在输出date变量时如果要更加直观的显示日期格式,必须另外再用SimpleDateFormat修改日期格式
- 所以"yyyy-MM-dd"会出现两次
package com.example.controller;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import java.text.SimpleDateFormat;
import java.util.Date;
@Controller
public class DateAction {
@RequestMapping("/date")
public String data(
@DateTimeFormat(pattern = "yyyy-MM-dd")
Date date){
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(sf.format(date));
return "date";
}
}
- 部署并启动tomcat测试
- 网站首页(left),响应页面(mild),控制台输出(right)见下:可见通过注解和注册注解驱动可以实现日期类型变量的注入
- 关于单个日期类型注入处理的补充:如果要注入的单个变量不是简单的Date类型,而是含有Date类型属性的对象
- 需要在该对象的Date类型的属性上或者在该属性的setter方法上使用@DateTimeFormat(pattern = "yyyy-MM-dd")
- 更特殊的,如果是json类型的数据对象,需要在该属性的getter方法上添加@DateTimeFormat(pattern = "yyyy-MM-dd")
- 类中全局日期处理:
- 如果一个action方法有多个日期类型的变量要注入值,或者多个类中有多个action方法需要注入日期类型的变量,挨个使用@DateTimeFormat注解的方式无疑显得非常繁琐
- 可以通过在类中声明自定义注解的方式,来帮助解析本类中的所有日期类型,完成类中全局日期处理,简化日期类型转换和注入操作
- 删除springmvc中的注解驱动:< mvc:annotation-driven />
- 修改DateAction控制器如下:注册全局日期处理注解
package com.example.controller;
import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.RequestMapping;
import java.text.SimpleDateFormat;
import java.util.Date;
@Controller
public class DateAction {
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
//注册全局日期处理注解
@InitBinder
public void initBinder(WebDataBinder webDataBinder){
//注册自定义的编辑器,对日期类型进行自定义配置,指定日期注入时的格式,并允许日期为空
webDataBinder.registerCustomEditor(Date.class, new CustomDateEditor(sf, true));
}
//每个方法上不用添加日期注入的注解,只要在类中注册全局日期处理注解即可
@RequestMapping("/date")
public String data(Date date){
System.out.println(sf.format(date));
return "date";
}
}
- 部署并启动tomcat测试
- 网站首页(left),响应页面(mild),控制台输出(right)见下:可见通过注册全局日期处理注解,也可以完成日期类型变量的注入,并简化挨个添加单个注解的繁琐操作
日期显示
- 将后端传来的含有日期类型属性的用户信息列表展示在响应页面中
- 需要使用jstl标签库,在pom.xml中新增jstl依赖
<!-- 引入jstl标签库-->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
- webapp/index.jsp:网站的首页,并用于发送请求,从后端请求用户信息
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>index.jsp</title>
</head>
<body>
<a href="${pageContext.request.contextPath}/date.action">显示用户信息列表,包含日期类型的属性</a>
</body>
</html>
- webapp/admin/date.jsp:请求的响应页面,并将请求来的用户信息列表展示在该页面上
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%-- 导入jstl核心标签库--%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%-- 导入jstl格式化标签库--%>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<html>
<head>
<title>date.jsp</title>
</head>
<body>
<h2>显示用户信息列表,包含日期类型的属性</h2>
<table width="800px" border="1">
<tr>
<th>用户名</th>
<th>生日</th>
</tr>
<c:forEach items="${list}" var="user">
<tr>
<td>${user.name}</td>
<!--
不使用jstl格式化标签库来进行日期格式化处理
<td>${user.birthday}</td>
-->
<!-- 使用jstl格式化标签库来进行日期格式化处理 -->
<td> <fmt:formatDate value="${user.birthday}" pattern="yyyy-MM-dd"/></td>
</tr>
</c:forEach>
</table>
</body>
</html>
- DateAction控制器
package com.example.controller;
import com.example.pojo.User;
import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletRequest;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Controller
public class DateAction {
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
//注册全局日期处理注解
@InitBinder
public void initBinder(WebDataBinder webDataBinder){
//注册自定义的编辑器,对日期进行自定义配置,指定日期注入时格式,允许日期为空
webDataBinder.registerCustomEditor(Date.class, new CustomDateEditor(sf, true));
}
//User实体类含有属性:name(String),birthday(Date)。无参构造方法。全参的有参构造方法,getter,setter,toString方法
@RequestMapping("/date")
public String data(HttpServletRequest request) throws ParseException {
User u1 = new User("荷包蛋", sf.parse("2002-08-23"));
User u2 = new User("饺子", sf.parse("2001-08-28"));
User u3 = new User("橘子", sf.parse("2001-03-14"));
List<User> list = new ArrayList<>();
list.add(u1);
list.add(u2);
list.add(u3);
request.setAttribute("list", list);
return "date";
}
}
- 部署并启动tomcat测试
- 不用jstl格式化标签库处理时:网站首页(left),响应页面(right)
- 使用jstl格式化标签库处理时:网站首页(left),响应页面(right)
SpringMVC 06: 日期类型的变量的注入和显示的更多相关文章
- SpringMVC对日期类型的转换
在做web开发的时候,页面传入的都是String类型,SpringMVC可以对一些基本的类型进行转换,但是对于日期类的转换可能就需要我们配置. 1.如果查询类使我们自己写,那么在属性前面加上@Date ...
- SpringMVC对日期类型的转换@ResponseBody返回的DateTime是long类型
目前,多数web开发这都在使用Spring的框架.但是这个框架有个 @ResponseBody 注解返回json时,日期格式默认显示为时间戳. 而我们页面展示的时候一般都是以下格式: yyyy-MM- ...
- springmvc处理日期格式
解决http400错误 通常有两个来源: 1 页面的下拉列表中传入了字符串,而服务器需要的是Integer类型的,所以服务器拒绝. 2, 浏览器传给服务器端的日期格式字符串,服务器端理解不了,所以需要 ...
- SpringMVC由浅入深day01_12.4 pojo绑定_12.5自定义参数绑定实现日期类型绑定_12.6集合类
12.4 pojo绑定 页面中input的name和controller的pojo形参中的属性名称一致,将页面中数据绑定到pojo. 页面定义: controller的pojo形参的定义: 打断点测试 ...
- springMvc把client传过来一个String类型,转换为日期类型为例
springMvc--接受日期类型参数处理 目录 步骤 2.自定义类型转换规则 3.注册自定义的类型转换类 4.地址栏访问 这个问题,也即是springMvc如何进行参数类型的转换 , 以把cli ...
- springMVC注解@initbinder日期类型的属性自动转换
在实际操作中经常会碰到表单中的日期 字符串和Javabean中的日期类型的属性自动转换, 而springMVC默认不支持这个格式的转换,所以必须要手动配置, 自定义数据类型的绑定才能实现这个功能. 一 ...
- SpringMVC提交数据遭遇基础类型和日期类型报400错误解决方法
使用SpringMVC开发的时候,页面如果有日期格式的数据,后台接受也是java.util.Date,则报告400错误 .下面是解决方案的演示示例: 这个是实体类,里面createDate就是java ...
- SSM-SpringMVC-28:SpringMVC类型转换之自定义日期类型转换器
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 例子很简易,要明白的是思路,话不多说,开讲 上篇博客不是说springmvc默认的日期转换格式是yyyy/M ...
- SSM-SpringMVC-27:SpringMVC类型转换之日期类型初步
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 本案例是上面的异常和日期类型转换结合的一个小小的Demo 案例开始 1.自定义处理器和处理方法: packag ...
随机推荐
- SAP FPM 相关包 APB_FPM_CORE
related interface: APB_FPM_COREAPB_FPM_CORE_4_EXT_SCAPB_FPM_CORE_INTERNALAPB_FPM_CORE_RESTRICTED
- RPA应用场景-定点取数
场景概述定点取数 所涉系统名称业务系统,Excel 人工操作(时间/次) 8 小时 所涉人工数量 2 操作频率实时 场景流程 1.从业务系统中拉取指定字段值的数据填入Excel: 2.将Excel每隔 ...
- MOEAD实现、基于分解的多目标进化、 切比雪夫方法-(python完整代码)
确定某点附近的点 答:每个解对应的是一组权重,即子问题,红点附近的四个点,也就是它的邻居怎么确定呢?由权重来确定,算法初始化阶段就确定了每个权重对应的邻居,也就是每个子问题的邻居子问题.权重的邻居通过 ...
- (数据库提权——Redis)Redis未授权访问漏洞总结
一.介绍 1.Redis数据库 Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key- ...
- MarkDown语法——更好地写博客
MarkDown语法--更好地写博客 我们在学习过程中要尽量养成编写博客的 好习惯:一方面方便自己在学习之后进行一次汇总,其次自己书写的文章可以在以后的时间里反复查看以便于巩固,在找工作时博客也是被招 ...
- java-数据输入,分支结构
数据输入 1.Scanner使用的基本步骤" 导包:import java.util.Scanner;(导包的动作必须出现在类定义的上边) 创建对象:Scanner sc = new Sca ...
- DNS 系列(三):如何免受 DNS 欺骗的侵害
互联网上每一台设备都会有一个 IP 地址,我们在访问网站或发送信息时,其实都是通过 IP 地址达成准确请求的.但是这个 IP 地址由很长一串数字组成,记忆起来相当困难,所以我们创造了更实用的域名来代替 ...
- APISpace 成语大全API接口 免费好用
成语有一个很大一部分是从古代相承沿用下来的,在用词方面往往不同于现代汉语,它代表一个故事或者典故.成语又是一种现成的话,跟习用语.谚语相近,但是也略有区别.成语是中华文化中的一颗璀璨的明珠. 成语 ...
- 5-2 SpringCloud | 微服务
服务器端项目演进 服务器初期状态 最早的服务器就是安装部署了一些静态页面 功能非常单一,只能做信息的呈现和输出 服务器动态页面 后来因为业务和技术的发展,页面连接了数据库,页面中大部分数据来自于数据库 ...
- 解决Windows10、Windows11文件名无法大写的问题
问题描述: 同一目录下的不同文件有些可以用大写字母做文件名,有些输入大写字母完成后自动变成小写. 甚至同一文件的文件名中的相同字母也会有这种情况,例如:文件名为"bu人BU"的文件 ...