小编日期处理和日期显示日期处理此时SpringMVC的项目配置和SpringMVC博客集中(指SpringMVC 02)配置相同日期处理分为单个日期处理和类中全局日期处理单个日期处理:利用@DateTimeFormat表明 + < mvc:annotation-driven />表明驱动webapp/index.jsp:网站的首页,用来选定时间并提交给做事器

<%@ page contentType=&#34;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;@Controllerpublic 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;@Controllerpublic 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;@Controllerpublic 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)

jsp日期型变量SpringMVC 06 日期类型的变量的注入和显示 Docker

利用jstl格式化标签库处理时:网站首页(left),相应页面(right)