留言板回复功能是指用户可以在留言板上对其他用户的留言进行回复的功能。在JSP(JavaServer Pages)中实现这一功能,通常涉及以下几个关键概念:
假设我们有一个简单的数据库表messages,包含以下字段:
id (主键)parent_id (父留言ID,如果是顶级留言则为0)content (留言内容)user_id (用户ID)create_time (创建时间)创建一个messageBoard.jsp页面,用于显示留言和回复。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>留言板</title>
</head>
<body>
<h1>留言板</h1>
<form action="submitReply" method="post">
<input type="hidden" name="parentId" value="0">
内容: <textarea name="content"></textarea><br>
<input type="submit" value="提交">
</form>
<ul>
<%-- 这里通过JSTL或EL表达式循环显示留言和回复 --%>
</ul>
</body>
</html>创建一个SubmitReplyServlet来处理表单提交。
@WebServlet("/submitReply")
public class SubmitReplyServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String parentId = request.getParameter("parentId");
String content = request.getParameter("content");
// 保存到数据库
Message message = new Message();
message.setParentId(Integer.parseInt(parentId));
message.setContent(content);
message.setUserId(1); // 假设当前用户ID为1
message.setCreateTime(new Date());
MessageDAO.save(message);
response.sendRedirect("messageBoard.jsp");
}
}创建一个MessageDAO类来处理数据库操作。
public class MessageDAO {
public static void save(Message message) {
// 使用JDBC或其他ORM框架保存消息到数据库
}
public static List<Message> getAllMessages() {
// 从数据库获取所有消息
return new ArrayList<>();
}
}在messageBoard.jsp中使用JSTL或EL表达式循环显示留言和回复。
<ul>
<c:forEach items="${messages}" var="message">
<li>
${message.content}
<c:if test="${message.parentId != 0}">
<ul>
<c:forEach items="${messages}" var="reply">
<c:if test="${reply.parentId == message.id}">
<li>${reply.content}</li>
</c:if>
</c:forEach>
</ul>
</c:if>
</li>
</c:forEach>
</ul>问题1:回复显示不正确
parent_id正确匹配父留言的id。问题2:表单提交后页面刷新
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("form").submit(function(event){
event.preventDefault();
var formData = $(this).serialize();
$.ajax({
url: "submitReply",
type: "POST",
data: formData,
success: function(response){
// 更新页面内容
}
});
});
});
</script>通过以上步骤和示例代码,可以实现一个基本的留言板回复功能。根据具体需求,还可以进一步优化和扩展。