基于JSP的留言板課程設(shè)計_第1頁
基于JSP的留言板課程設(shè)計_第2頁
基于JSP的留言板課程設(shè)計_第3頁
基于JSP的留言板課程設(shè)計_第4頁
基于JSP的留言板課程設(shè)計_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、 JSP在水一方留言簿設(shè)計報告一 需求分析隨著互聯(lián)網(wǎng)的迅猛的發(fā)展,網(wǎng)站給我們帶來不少的便利,于此同時,論壇基本是每個網(wǎng)站必有的功能,為用戶之間的交流提供的很好的平臺。我通過仔細的分析和規(guī)劃,本論壇有如下功能:用戶注冊,登錄,用戶信息修改,簽寫留言,留言查看,回復(fù)留言和管理員的普通維護功能等。 這些功能的具體描述如下:1)用戶注冊模塊:用戶可已成為本論壇的會員,通過表單把用戶的相關(guān)信息提交給數(shù)據(jù)庫。2)登錄模塊:基本是每個系統(tǒng)必備的模塊,本論壇的登錄的模塊分為兩個小模塊:普通用戶登錄,另一個是管理員登錄。3)簽寫留言模塊:這是論壇的主要功能之一,用戶把自己感興趣的話題發(fā)表到論壇上,與網(wǎng)上的會員進

2、行探討。4)查看留言模塊:這也是論壇的主要功能之一,把用戶發(fā)表的留言逐條,安順序顯示出來。5)回復(fù)留言模塊:這也是論壇的主要功能之一,用戶對別的用戶發(fā)表的留言進行回復(fù)。6)普通的維護模塊:這是給管理員的功能,該功能對那些危害社會風(fēng)氣的留言刪除。7)用戶信息修改模塊:用戶能對自己的信息進行修改。 二 分析和設(shè)計(頁面和數(shù)據(jù)庫)設(shè)計網(wǎng)站論壇時,首先應(yīng)該區(qū)別是普通用戶登錄還是管理員登錄。如果是普通用戶登錄,那么該用戶只有查看和回復(fù)留言的權(quán)限。如果是管理員登錄,則除了具有查看和回復(fù)權(quán)限外,還用具有管理論壇的權(quán)限。在用戶發(fā)表留言后,將顯示該用戶的用戶名、性別、留言內(nèi)容和留言時間等內(nèi)容。如果在某個留言有回

3、復(fù)內(nèi)容,則顯示出是誰恢復(fù)了該篇留言和回復(fù)的內(nèi)容。另外還能在頁面中顯示當前的系統(tǒng)的時間和訪問權(quán)限。 數(shù)據(jù)庫設(shè)計通過以上的分析:數(shù)據(jù)庫應(yīng)有四個表,tb_user、td_topic、tb_reply、tb_counter。由于是個小型的論壇,選擇AEESS數(shù)據(jù)庫。具體各表的設(shè)計如下:1 分析得知tb_user表功能的記錄用戶的信息,具有如下字段:ID、UserName、PWD、Birthday、Sex、OICQ、Tel、homepage、address、postcode、Email、status。 2 分析得知tb_topic表功能是存放用戶發(fā)表的留言,具有如下字段:ID、anthor、face、c

4、ontent、datetime。 3 分析得知tb_reply表功能是用于存放用戶對每條留言所回復(fù)的信息,具有如下字段:ID、TpoicID、content、replyuser。 4 通過分析得知:tb_counter是記錄網(wǎng)站每天的訪問次數(shù),有如下兩個字段:accessTime、hit。 5.通過分析,在顯示留言的是時候,要用到tb_user和tb_topic兩張表,所以要設(shè)計一個具有這兩張表的一個視圖:首先建立關(guān)系如下: 視圖如下: 頁面設(shè)計1 網(wǎng)站的流程體如下: 2 各頁面功能實現(xiàn)說明:1) 系統(tǒng)提供的服務(wù)(top.jsp) 程序的主要實現(xiàn)根據(jù)等級設(shè)置用戶權(quán)限,是用腳本言語(javasc

5、ript)來顯示系統(tǒng)的當前時間,并通過<marquee>來實現(xiàn)滾動的顯示,主要代碼如下:<% page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %><% include file="connDB.jsp" %><jsp:include page="counter.jsp" /><% Re

6、sultSet rs_user=stmt.executeQuery("select * from tb_user where username='"+session.getAttribute("username")+"'and status='版主'");boolean eof=rs_user.next();%><script language="javascript">function clockon()var date=new Date(); var YY=da

7、te.getYear(); var MM=date.getMonth()+1; var DD=date.getDate(); var KK=date.getDay(); var HH=date.getHours(); var mm=date.getMinutes(); var SS=date.getSeconds(); if (MM<10) MM="0"+MM; if (DD<10) DD="0"+DD; if (HH<10) HH="0"+HH; if (mm<10) mm="0"+mm;

8、 if (SS<10) SS="0"+SS; switch (KK) case 1: KK="星期一" break; case 2: KK="星期二" break; case 3: KK="星期三" break; case 4: KK="星期四" break; case 5: KK="星期五" break; case 6: KK="星期六" break; case 0: KK="星期日" break; var str_date=&

9、quot; 系統(tǒng)公告:"+YY+"年"+MM+"月"+DD+"日 "+KK+" "+HH+":"+mm+":"+SS; if(document.all) div_date.innerHTML=str_date; var timer=setTimeout("clockon()",200);</script><table width="777" height="124" border=&quo

10、t;0" align="center" cellpadding="0" cellspacing="0" > <tr> <td align="center" valign="top" height="5" bgcolor="#FFCCCC"></td> </tr> <tr> <td width="790" align="center" v

11、align="top"> <img src="images/banner.gif" width="500" height="124"></td> </tr> <tr> <td align="center" valign="top"><table width="100%" border="0" cellspacing="0" cellpadding

12、="0" > <tr> <td height="5"></td> </tr> </table></td> </tr></table> <table width="777" height="21" border="0" align="center" cellpadding="0" cellspacing="0" background

13、="images/revigate.GIF"> <tr align="center" valign="middle"> <%if(session.getAttribute("username")!=null)%> <td width="104"><a href="Topic_add.jsp">簽寫留言</a></td> <td width="101"><a hr

14、ef="modify.jsp">修改資料</a></td> <%else%> <td width="104"><a href="reg.jsp">用戶注冊</a></td> <%> <td width="104"> <%if(session.getAttribute("username")!=null)%> <a href="Logout_User.jsp

15、">注銷用戶</a> <%else%> <a href="#" Login_User.jsp','','width=300,height=200');">用戶登錄</a> <%> </td> <td width="104"><a href="index1.jsp">查看留言</a></td> <td width="104"&g

16、t;<a href="#" >刷新頁面</a></td> <td width="104"> <%if(eof)%> <a href="Logout_User.jsp">注銷版主登錄</a> <%else %><a href="#" Login_manager.jsp','','width=300,height=200');">版主登錄</a><

17、;%></td> </tr></table><table width="777" height="47" border="0" align="center" cellpadding="0" cellspacing="0"> <tr align="center" valign="middle"> <td height="2" colspan=&qu

18、ot;6"></td> </tr> <tr align="center" valign="middle"> <td width="18" height="17" align="left"><img src="images/speaker.GIF" width="16" height="16"></td> <td width="290&

19、quot; align="left"><div >系統(tǒng)公告:</div></td> <td width="469" align="right" > <%if(session.getAttribute("username")!=null) out.println(" "+session.getAttribute("username")+" 您好!您不想說點什么嗎?如果想請點擊“簽寫留言”!"); e

20、lse out.println("您好!如果您想說點什么,那么請先注冊或登錄!"); %> </td> </tr> <tr align="center" valign="middle"> <td colspan="3"><marquee direction="left" scrollamount="2" scrolldelay="2"> 您好!歡迎訪問“在水一方”留言簿!已經(jīng)有 <%=

21、application.getAttribute("count")%> 人訪問過本網(wǎng)站! </marquee></td> </tr></table><% stmt.close(); con.close();%>2) 查看留言(index1.jsp)將所有的;留言記錄通過循環(huán)顯示在客戶端,并將某條留言的回復(fù)記錄和回復(fù)者的姓名也顯示出來。如果是登錄用戶的權(quán)限為普通用戶,那么該用戶的權(quán)限極為回復(fù)留言。如果是管理員,那么該用戶的權(quán)限就是回復(fù)和刪除留言。由于涉及到多條記錄的顯示,我們用了分頁顯示的方法出來。定義每個頁面

22、顯示的記錄,通過ResultSet對象計算出總的記錄數(shù),通過這兩個數(shù)據(jù)計算總的頁數(shù)。主要代碼如下: <% page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %><jsp:include page="counter.jsp" /><% Statement stmt2 =con.createStatement(ResultSet.TY

23、PE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); Statement stmt3 =con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); ResultSet rs=stmt.executeQuery("select * from v_board"); ResultSet rs_reply=null; ResultSet rs_user=stmt2.executeQuery("select * from

24、tb_user where username='"+session.getAttribute("username")+"'and status='版主'"); System.out.print("查詢成功!"); /ResultSet rs_topic=stmt.executeQuery("select * from tb_topic");%> -<%boolean tj=rs_user.next();String str=(String)request.get

25、Parameter("Page");if(str=null) str="0"int pagesize=5; /每頁顯示的數(shù)據(jù)條數(shù)rs.last();int RecordCount=rs.getRow(); /獲得記錄的總條數(shù)int maxPage=0;maxPage=(RecordCount%pagesize=0)?(RecordCount/pagesize):(RecordCount/pagesize+1); /得到的是總頁數(shù) int Page=Integer.parseInt(str); /當前時第幾頁if(Page<1) Page=1; el

26、se if(Page-1)*pagesize+1)>RecordCount) Page=maxPage; rs.absolute(Page-1)*pagesize+1);for(int i=1;i<=pagesize;i+) int a=rs.getInt("ID"); %> <table width="100%" height="192" border="0" cellpadding="0" cellspacing="0" > <tr a

27、lign="center"> <td width="115" rowspan="3" align="center"><%=rs.getString("UserName")%>(<%=rs.getString("status")%>) <p> <%=rs.getString("Sex")%>生 <p> 表情:<%=rs.getString("face")%

28、> </td> <td width="2" rowspan="3" align="center" valign="bottom"><hr size="100%" width="1px" color="#FFCCCC"></td> <td width="447" align="left" style="padding-left:10pt"

29、> <img src="images/email.GIF" alt="Email:<%=rs.getString("Email")%>" width="16" height="16"> <img src="images/home-menu.gif" alt="個人主頁:<%=rs.getString("homepage")%>" width="26" height=&q

30、uot;20"> <img src="images/atusers.gif" alt="OICQ號碼:<%=rs.getString("OICQ")%>" width="14" height="16"> <img src="images/datetime.gif" alt="<%=rs.getString("datetime")%>" width="18" h

31、eight="18">&nbsp;留言時間:<%=rs.getString("datetime")%></td> <td width="195" align="right" style="padding-left:10pt" > <% out.println("<a href='reply.jsp?TopicID="+a+"'>回復(fù)&nbsp;</a>"

32、); if(tj)out.println("<a href='Del.jsp?TopicID="+a+"'>刪除</a>");%></td> <td width="14" align="right" style="padding-left:10pt" >&nbsp;</td> </tr> <tr> <td height="20" colspan="

33、3" style="padding-left:10pt"><hr width="98%" color="#FFCCCC" size="1"></td> </tr> <tr> <td height="109" colspan="3" valign="top" style="padding-left:10pt"><pre><%=rs.getStri

34、ng("content")%></pre></td> </tr> <tr> <td height="2" colspan="5" align="center" valign="top" ><hr width="98%" color="#FFCCCC" size="1"></td> </tr> <% rs_reply=stmt3.e

35、xecuteQuery("select * from tb_reply where TopicID="+a); while(rs_reply.next() %> <tr> <td height="39" align="center" valign="top" ><%=rs_reply.getString("replyuser")%>回復(fù)</td> <td align="center" valign="top

36、"><hr size="20%" width="1px" color="#FFCCCC"></td> <td colspan="3" valign="top" style="padding-left:10pt"><%=rs_reply.getString("content")%> <hr width="98%" color="#FFCCCC" si

37、ze="1"></td> </tr> <tr> <td height="20" colspan="3" style="padding-left:10pt">&nbsp;</td> </tr> <%> </table> <br><% try if(!rs.next()break; catch(Exception e)%><table width="100%"

38、border="0" cellspacing="0" cellpadding="0"> <tr> <td align="right">當前頁數(shù):<%=Page%>/<%=maxPage%>&nbsp; <%if(Page>1)%> <a href="index1.jsp?Page=1">第一頁</a><a href="index1.jsp?Page=<%=Page-1%&

39、gt;">上一頁</a> <% if(Page<maxPage) %> <a href="index1.jsp?Page=<%=Page+1%>">下一頁</a><a href="index1.jsp?Page=<%=maxPage%>">最后一頁&nbsp;</a> <%>3) 用戶登陸(Login_User_deal.jsp)在top.jsp中設(shè)計的是當用戶單擊登錄連接的時候,彈出一個小的對話框來提供用戶的登錄功能

40、,所以在在個頁面中需要刷新用戶登錄后的頁面,用到了腳本語言(javascript)中的一段代碼:open.location.reload().管理員登錄(login_manager_deal.jsp)與此頁面的代碼相似,下面就不再寫了。主要的代碼如下:<% page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %><jsp:include page="co

41、unter.jsp" /><% request.setCharacterEncoding("GB2312"); String username=request.getParameter("username"); String PWD=request.getParameter("PWD"); if(username!="")%> <% ResultSet rs=stmt.executeQuery("select * from tb_user where UserName=&

42、#39;"+username+"' and status='用戶'"); if (rs.next() String rsPWD=rs.getString("PWD"); if(PWD.equals(rsPWD)%> <script language="javascript"> opener.location.reload(); window.close(); </script> <% session.setAttribute("username"

43、,username); else%> <script language="javascript"> alert("您輸入的密碼不正確,請重新輸入!"); history.back(); </script> <% else %><script language="javascript">alert("您輸入的用戶名不正確,請重新輸入!");history.back();</script><%>4) 留言回復(fù)(reply_deal.jsp)回

44、復(fù)留言的關(guān)鍵如何準確地將回復(fù)內(nèi)容和留言關(guān)聯(lián)起來。本例通過獲得留言查看(index1.jsp)頁面中的留言回復(fù)連接所傳遞過來的參數(shù)TopicTD(留言記錄ID),來完成回復(fù)功能。添加留言(Topic_add_deal.jsp)于此相似,在次就不在介紹。主要程序代碼如下:<% page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %><% include file=&q

45、uot;connDB.jsp" %><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>回復(fù)信息</title></head><body><%! /處理字符竄亂碼 public String getStr(String str) try String temp_p=str; String temp=new String(temp_

46、p.getBytes("iso-8859-1"),"gb2312"); return temp; catch(Exception e) return "NULL" %> <%String content=getStr(request.getParameter("content");int TopicID=Integer.parseInt(request.getParameter("TopicID");String replyuser=getStr(session.getAttribu

47、te("username").toString();if(content!=null && content.length()>0) String sql="Insert into tb_reply(TopicID,content,replyuser) values("+TopicID+",'"+content+"','"+replyuser+"')" int ret=0; ret=stmt.executeUpdate(sql); if(ret

48、!=0) out.println("<script language='javascript'>alert('回復(fù)信息成功!');window.location.href='index1.jsp'</script>"); else out.println("<script language='javascript'>alert('回復(fù)信息失敗!');window.location.href='index1.jsp'</scrip

49、t>"); else response.sendRedirect("index1.jsp");%></body></html>5) 修改資料(modify_deal.jsp)用戶登錄后,如果想修改除了用戶名以外的資料時,單擊相應(yīng)的連接進入修改資料頁面進行操作。主要代碼如下:<% page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage=&qu

50、ot;" %><% include file="connDB.jsp" %> <!DOCTYPE HTML PUBLIC "-/W3C/DTD HTML 4.01 Transitional/EN"<%! public String getStr(String str) try String temp_p=str; String temp=new String(temp_p.getBytes("iso-8859-1"),"gb2312"); return temp; catch

51、(Exception e) return "NULL" %> <%String username=request.getParameter("username");if (username!=null && username.length()>0 ) String PWD=getStr(request.getParameter("PWD1"); String birthday=request.getParameter("birthday"); String sex=getStr(r

52、equest.getParameter("sex"); String OICQ=getStr(request.getParameter("OICQ"); String tel=getStr(request.getParameter("tel"); String homepage=getStr(request.getParameter("homepage"); String address=getStr(request.getParameter("address"); String postcod

53、e=request.getParameter("postcode"); String Email=getStr(request.getParameter("Email"); int ret=0; String sql="update tb_user set PWD='"+PWD+"',birthday='"+birthday+"',Sex='"+sex+"',OICQ='"+OICQ+"',Tel=&#

54、39;"+tel+"',homepage='"+homepage+"',address='"+address+"',postcode='"+postcode+"',Email='"+Email+"' where username='"+username+"'" ret=stmt.executeUpdate(sql); if(ret!=0) out.println("&l

55、t;script language='javascript'>alert('資料修改成功!');window.location.href='index1.jsp'</script>"); else out.println("<script language='javascript'>alert('資料修改失?。?#39;);window.location.href='modify.jsp'</script>"); else respon

56、se.sendRedirect("modify.jsp");%> 6) 新用戶注冊(reg_ok.jsp)用戶注冊時應(yīng)先判斷用戶的數(shù)據(jù)是否正確。比如:兩次輸入的密碼是否一致,對必填的字段是否為空等要加以限制。這些可以通過jsp所創(chuàng)建的靜態(tài)頁面進行判斷。這里主要是判斷新用戶注冊的用戶名是否已經(jīng)被占用,如果沒有就將用戶所填寫的數(shù)據(jù)添加到數(shù)據(jù)庫中,如果被占用則提示用戶重新填寫。主要的代碼如下:<% include file="connDB.jsp" %><% request.setCharacterEncoding("GB23

57、12"); String username=request.getParameter("username"); String PWD=request.getParameter("PWD1"); String birthday=request.getParameter("birthday"); String sex=request.getParameter("sex"); String OICQ=request.getParameter("OICQ"); String tel=reque

58、st.getParameter("tel"); String homepage=request.getParameter("homepage"); String address=request.getParameter("address"); String postcode=request.getParameter("postcode"); String Email=request.getParameter("Email"); ResultSet rs=stmt.executeQuery(&qu

59、ot;select * from tb_user where UserName='"+username+"'"); if(rs.next() out.println("<script language='javascript'>alert('該用戶名已經(jīng)存在,請重新注冊!');window.location.href='reg.jsp'</script>"); else String sql="Insert into tb_user(UserNam

60、e,PWD,Birthday,Sex,OICQ,Tel,homepage,address,postcode,Email,status) values('"+username+"','"+PWD+"','"+birthday+"','"+sex+"','"+OICQ+"','"+tel+"','"+homepage+"','"+a

61、ddress+"','"+postcode+"','"+Email+"','用戶')" int ret=0; ret=stmt.executeUpdate(sql); if (ret!=0) out.println("<script language='javascript'>alert('用戶注冊成功!');window.location.href='index1.jsp'</script>&qu

62、ot;); else out.println("<script language='javascript'>alert('用戶注冊失??!');window.location.href='reg.jsp'</script>"); %>7) 刪除留言(Del.jsp)當管理員登錄后,在查看(index1.jsp)界面中會多出一個鏈接刪除。刪除留言同回復(fù)留言一樣,關(guān)鍵就是準確地獲的所需要刪除留言記錄的ID。這里同樣使用的是index.jsp頁面中刪除這個鎖鏈所傳遞過來的參數(shù)(TopicID),主要的代碼如下:<<% include file="connDB.jsp" %>-<%

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論