使用session和application对象写有留言版功能jsp页面 留言版具体功能: 1.多个留言者可以在页面右下方留言提交后,会在页面中间显示留言者,问题,答案,多个留言依次向下排列,均在页面中间显示 2.其他人在页面上可以查看全部留言也可以回答留言者的留言,答案也要在页面上进行显示 3.页面效果要简洁,美观,布局合理
时间: 2024-03-01 15:51:53 浏览: 27
好的,这是一个比较复杂的功能,需要使用到JSP、Servlet、JavaBean、HTML、CSS等技术。下面是一种实现方式:
1. 首先创建一个Message的JavaBean,用来封装留言者、问题和答案等信息。
```java
public class Message {
private String name; // 留言者姓名
private String question; // 问题
private String answer; // 回答
// 构造方法和get/set方法省略
}
```
2. 在JSP页面上添加表单,让用户可以输入留言信息。
```html
<form action="addMessage" method="post">
<input type="text" name="name" placeholder="姓名" required>
<br>
<textarea name="question" rows="3" placeholder="问题" required></textarea>
<br>
<input type="submit" value="提交">
</form>
```
3. 在Servlet中处理表单提交,将留言信息保存到一个List<Message>中,并将该List对象存储到ServletContext中。
```java
public class MessageServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取留言信息
String name = request.getParameter("name");
String question = request.getParameter("question");
// 封装留言信息
Message message = new Message(name, question, null);
// 从ServletContext中获取留言列表
ServletContext application = request.getServletContext();
List<Message> messageList = (List<Message>) application.getAttribute("messageList");
// 添加留言到列表中
messageList.add(message);
// 更新ServletContext中的留言列表
application.setAttribute("messageList", messageList);
// 重定向到留言板页面
response.sendRedirect("message.jsp");
}
}
```
4. 在JSP页面中展示留言板,从ServletContext中获取留言列表,遍历列表输出每个留言的信息。
```html
<div class="message-board">
<h2>留言板</h2>
<hr>
<div class="messages">
<c:forEach items="${applicationScope.messageList}" var="message">
<div class="message">
<p class="name">${message.name}</p>
<p class="question">${message.question}</p>
<c:if test="${not empty message.answer}">
<p class="answer">${message.answer}</p>
</c:if>
</div>
</c:forEach>
</div>
</div>
```
5. 在JSP页面中添加回复表单,让用户可以回答其他留言。
```html
<c:forEach items="${applicationScope.messageList}" var="message">
<div class="message">
<p class="name">${message.name}</p>
<p class="question">${message.question}</p>
<c:if test="${not empty message.answer}">
<p class="answer">${message.answer}</p>
</c:if>
<div class="reply">
<form action="addAnswer" method="post">
<input type="hidden" name="index" value="${loop.index - 1}">
<input type="text" name="answer" placeholder="回答" required>
<input type="submit" value="回答">
</form>
</div>
</div>
</c:forEach>
```
6. 在Servlet中处理回答表单提交,将回答信息保存到对应留言的Message对象中,并更新ServletContext中的留言列表。
```java
public class AnswerServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取回答信息和留言在列表中的索引
String answer = request.getParameter("answer");
int index = Integer.parseInt(request.getParameter("index"));
// 从ServletContext中获取留言列表
ServletContext application = request.getServletContext();
List<Message> messageList = (List<Message>) application.getAttribute("messageList");
// 更新留言的回答信息
Message message = messageList.get(index);
message.setAnswer(answer);
// 更新ServletContext中的留言列表
application.setAttribute("messageList", messageList);
// 重定向到留言板页面
response.sendRedirect("message.jsp");
}
}
```
7. 最后,在CSS文件中添加样式,美化页面的布局和外观。
这样,就完成了一个简单的留言板功能。当用户提交留言或回答表单时,Servlet会更新ServletContext中的留言列表,JSP页面会重新从ServletContext中获取留言列表并展示留言信息。