问题与需求:
功能需求分析:来自各个不同客户端的用户都可以给服务器留言,而且希望每一次留言都能够存储在服务器上
数据需求分析:留言信息包括姓名、标题、留言内容、留言时间等。
设计思路:也即是留言信息会有多个,即要保存多个留言对象,这多个留言对象可以通过一个ArrayList对
象保存。
每一次留言都可以设计为一个Message对象。通过ArrayList存储每一次留言的“对象”,并将这个ArrayList存储在application对象中。
只要Web服务器未关闭,整个应用程序执行期间,留言信息都是存在的。
实现:





程序结构如下:

1 . 每个留言信息均包括姓名、标题、留言内容、留言时间。可以设计一个类
“Message”。
package dao;
public class Message {
private String name;
private String msgtitle;
private String msg;
private String time;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMsgtitle() {
return msgtitle;
}
public void setMsgtitle(String msgtitle) {
this.msgtitle = msgtitle;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
}
2.提交留言时,留言信息应能保存在application服务器对象中。
留言信息会有多个,即要保存多个留言对象,这多个留言对象可以通过一个ArrayList对
象保存。这样application对象按键值对来保存时,类似于:
application.setAttribute("msg",list);
“msg”是键,此处的list是:ArrayList<Message>类型的引用变量。
msgBoard.jsp源码如下:
<form action="save.jsp" name="msgsubmit" method ="post">
<p>请输入姓名:<input type ="text" name ="name" >
<p>请输入标题:<input type ="text" name ="msgtitle" >
<p>请输入留言:<TextArea name ="msg" rows="10" cols=36></TextArea>
<p><input type = "submit" value ="提交留言" name ="submit">
</form>
<form action="show.jsp" name="show" method ="post">
<input type = "submit" value ="查看留言板" name ="submit">
</form>
save.jsp:
<%
request.setCharacterEncoding("UTF-8");
String name = request.getParameter("name");
String msgtitle = request.getParameter("msgtitle");
String msg = request.getParameter("msg");
Message m = new Message();
m.setMsg(msg);
m.setMsgtitle(msgtitle);m.setName(name);m.setTime(new Date().toString());
ArrayList<Message> list=null;
if ((application.getAttribute("msg")==null))
list = new ArrayList<Message>();
else
list= (ArrayList<Message>)(application.getAttribute("msg"));
list.add(m);
application.setAttribute("msg",list);
out.println("您的留言已经提交!");
%>
show.jsp源码:
①查看留言信息时,需要从application中获取ArrayList集合
②ArrayList<Message> list = (ArrayList<Message>)(application.getAttribute(“msg”));
完整show.jsp代码为:
<%
ArrayList<Message> list = (ArrayList<Message>)(application.getAttribute("msg"));
%>
<table >
<tr>
<th>序号</th>
<th>姓名</th>
<th>标题</th>
<th>留言内容</th>
<th>留言时间</th>
</tr>
<%
for( int i=0 ;i<list.size();i++) {
%>
<tr>
<td>第<%=i+1 %>个<br></td>
<td><%=((Message)(list.get(i))).getName()%></td><!-- 此处可优化,优化后list.get(i)不用执行4次-->
<td><%=((Message)(list.get(i))).getMsgtitle()%></td>
<td><%=((Message)(list.get(i))).getMsg()%></td>
<td><%=((Message)(list.get(i))).getTime()%></td>
</tr><%
}
%>
</table>
<a href="MsgBoard.jsp">继续留言 </a>
</body>

