用 jstl 取 Date(java.util.Date) 的年的值 和月的值

本文介绍如何使用JSTL库中的标签来提取Java Date对象的年、月、日等部分。具体步骤包括:首先利用<fmt:formatDate>格式化日期,接着通过<c:set>将日期转换为字符串,最后使用<c:forTokens>来分离出特定的部分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

jstl取Date 中的单个 年,月,日值的方法

1.前提

webproject 有下面的包(package.png)

jsp页面有相应的tag(tag.png)

在对应的requestScope 中有日期类型对象

2.取值代码如下

 today(pattern="yyyy/MM/dd HH:mm:ss"):<fmt:formatDate value="${today }" pattern="yyyy,MM,dd" var="d"/><br>
     ${d }<br>
     <c:set var="temp" value="${d }"/>
     temp:${temp }<br>
     <c:forTokens items="${temp }" delims="," var="v1" begin="1" end="1" ><%--jstl取月份的方法,先用<c:set>将date类型转换成String类型,然后用<c:forTokens>将对象特定位置的值取出来  --%>
     v1:${v1 }<br>
     </c:forTokens>


HTTP状态 500 - 内部服务器错误 类型 异常报告 消息 class java.util.Date cannot be cast to class java.sql.Timestamp (java.util.Date is in module java.base of loader 'bootstrap'; java.sql.Timestamp is in module java.sql of loader 'platform') 描述 服务器遇到一个意外的情况,阻止它完成请求。 例外情况 java.lang.ClassCastException: class java.util.Date cannot be cast to class java.sql.Timestamp (java.util.Date is in module java.base of loader 'bootstrap'; java.sql.Timestamp is in module java.sql of loader 'platform') com.myblog.servlet.CommentServlet.doPost(CommentServlet.java:37) javax.servlet.http.HttpServlet.service(HttpServlet.java:555) javax.servlet.http.HttpServlet.service(HttpServlet.java:623) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) ):注意 主要问题的全部 stack 信息可以在 server logs 里查看 Apache Tomcat/9.0.98 CommentDAO.java package com.myblog.dao; import com.myblog.model.Comment; import com.myblog.util.DBUtil; import java.sql.*; import java.util.ArrayList; import java.util.List; public class CommentDAO { public boolean addComment(Comment comment) { String sql = "INSERT INTO comments (article_id, user_id, content) VALUES (?, ?, ?)"; try (Connection conn = DBUtil.getConnection(); PreparedStatement stmt = conn.prepareStatement(sql)) { stmt.setInt(1, comment.getArticleId()); stmt.setInt(2, comment.getUserId()); stmt.setString(3, comment.getContent()); int rows = stmt.executeUpdate(); return rows > 0; } catch (SQLException e) { e.printStackTrace(); return false; } } public List<Comment> getCommentsByArticle(int articleId) { List<Comment> comments = new ArrayList<>(); String sql = "SELECT * FROM comments WHERE article_id = ? ORDER BY created_at DESC"; try (Connection conn = DBUtil.getConnection(); PreparedStatement stmt = conn.prepareStatement(sql)) { stmt.setInt(1, articleId); try (ResultSet rs = stmt.executeQuery()) { while (rs.next()) { Comment comment = new Comment(); comment.setCid(rs.getInt("cid")); comment.setArticleId(rs.getInt("article_id")); comment.setUserId(rs.getInt("user_id")); comment.setContent(rs.getString("content")); comment.setCreatedAt(rs.getTimestamp("created_at")); comments.add(comment); } } } catch (SQLException e) { e.printStackTrace(); } return comments; } } Comment.java package com.myblog.model; import java.sql.Timestamp; public class Comment { private int cid; private int articleId; private int userId; private String content; private Timestamp createdAt; // 无参构造器 public Comment() {} // 全参构造器 public Comment(int cid, int articleId, int userId, String content, Timestamp createdAt) { this.cid = cid; this.articleId = articleId; this.userId = userId; this.content = content; this.createdAt = createdAt; } // 用于创建评论的构造器 public Comment(int articleId, int userId, String content) { this.articleId = articleId; this.userId = userId; this.content = content; } // GetterSetter方法 public int getCid() { return cid; } public void setCid(int cid) { this.cid = cid; } public int getArticleId() { return articleId; } public void setArticleId(int articleId) { this.articleId = articleId; } public int getUserId() { return userId; } public void setUserId(int userId) { this.userId = userId; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } public Timestamp getCreatedAt() { return createdAt; } public void setCreatedAt(Timestamp createdAt) { this.createdAt = createdAt; } }
最新发布
06-12
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值