使用场景

  • 当我的服务器端返回了一个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日的格式

XJWFiD.png

解决办法

  • 同样使用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显示效果:日期正常显示 年 – 月- 日的效果

XJfplj.png


版权声明:本文为qq_52061700原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_52061700/article/details/125086654