使用场景
-
当我的服务器端返回了一个List集合,该List集合中都是实体类,且每一个实体类中都有一个日期类型的属性时,我想将List集合中的实体类数据一 一展示出来的时候,若不对日期类型的数据进行处理,则显示效果很难看。
//需要显示的实体类 public class Student{ private String studentName; private Date birthday; //省略set,get,toString方法 }
//服务器端,将List集合返回给date.jsp进行展示
@RequestMapping("/listDate.action")
public String date2(HttpServletRequest request) throws ParseException {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
Student s1 = new Student("张三",simpleDateFormat.parse("2022-3-4"));
Student s2 = new Student("李四",simpleDateFormat.parse("2022-4-4"));
Student s3 = new Student("王五",simpleDateFormat.parse("2022-5-4"));
List<Student> list = new ArrayList<>();
list.add(s1);
list.add(s2);
list.add(s3);
//将list放到request作用域中
request.setAttribute("mylist",list);
return "forward:/date.jsp";
}
-
补充:页面如何显示一个集合中的数据,即如何遍历?
- 使用jstl进行循环输出更为简洁
步骤:
1. 导入jstl的依赖,注意,若有servlet的依赖,需要将servlet依赖加上privided,否则可能报500 错
<!--jstl依赖-->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
2. 在jsp页面顶部导入jstl核心标签库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
3. 使用标签< c:forEach items=“待循环的集合” var=“集合中每一个元素”> 循环内容 < /c:foreach >
<c:forEach items="${mylist}" var="student">
<p>姓名:${student.studentName},生日:${student.studentName}</p>
</c:forEach>
- 若不进行处理的话:直接循环输出的话
//date.jsp页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<html>
<head>
<title>日期显示</title>
</head>
<body>
<%--通过el表达式来获取request作用域中的数据,可以通过属性名直接拿到--%>
<c:forEach items="${mylist}" var="student">
<p>姓名:${student.studentName},生日: ${student.birthday} </p>
</c:forEach>
</body>
</html>
页面显示效果:日期显示并不好看,不是xxxx年-xx月-xx日的格式
解决办法
- 同样使用jstl中的格式化标签库进行处理
步骤:
1)导入jstl依赖
2) 在目标jsp页面顶部导入jstl格式化标签库
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
3)使用< fmt: formatDate value=“需要被格式化的日期” pattern=“指定需要格式化的默认” ></ fmt: formatDate >
-
修改完善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>日期显示</title> </head> <body> <%--使用forEach进行遍历集合,对集合中的date类型数据进行格式化处理之后再显示--%> <c:forEach items="${mylist}" var="student"> <p>姓名:${student.studentName},生日: <fmt:formatDate value="${student.birthday}" pattern="yyyy-MM-dd"/> </p> </c:forEach> </body> </html>
-
date.jsp显示效果:日期正常显示 年 – 月- 日的效果
版权声明:本文为qq_52061700原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。