基于jsp的bbs論壇的設(shè)計(jì)與實(shí)現(xiàn) 畢業(yè)論文_第1頁(yè)
已閱讀1頁(yè),還剩42頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  本科生畢業(yè)論文(設(shè)計(jì))</p><p>  基于JSP的財(cái)大家園BBS論壇的設(shè)計(jì)與實(shí)現(xiàn)</p><p>  2011年05月20日</p><p> 姓  名</p><p> 學(xué)  號(hào)</p><p> 專(zhuān)  業(yè)</p><p> 指導(dǎo)教師</p><

2、p><b>  摘 要</b></p><p>  隨著網(wǎng)絡(luò)應(yīng)用的興起,人們交流的方式也發(fā)生了翻天覆地的變化。網(wǎng)絡(luò)聊天、網(wǎng)絡(luò)視頻和郵箱系統(tǒng)等網(wǎng)絡(luò)應(yīng)用的出現(xiàn)正在改變著人們彼此之間溝通、交流的方式。此外,為了滿(mǎn)足人們?cè)谀骋惶囟ㄖ黝}下的知識(shí)獲取和信息發(fā)布,出現(xiàn)了在線(xiàn)網(wǎng)絡(luò)論壇。各種各樣的主題論壇幾乎囊括了人們生活的每個(gè)角落。人們根據(jù)自己的專(zhuān)業(yè)特長(zhǎng)和興趣愛(ài)好在論壇上提出自己的問(wèn)題,即提出主題。而

3、后其他人根據(jù)主題內(nèi)容可以發(fā)表自己的意見(jiàn)和看法,即回復(fù)主題。一千個(gè)人有一千個(gè)哈姆雷特,論壇集大家之所長(zhǎng),所感,為每一個(gè)用戶(hù)提供了豐富的知識(shí)礦藏。論壇是一個(gè)讓人足不出戶(hù)即可了解外界世界,了解他人所想的工具。在人們生活節(jié)奏逐步加快的今天,必有其存在的現(xiàn)實(shí)意義。正是基于這樣的認(rèn)識(shí),開(kāi)發(fā)了此BBS論壇系統(tǒng)。除了提供基本的看帖、發(fā)帖、回帖、搜帖的功能,針對(duì)管理員用戶(hù)系統(tǒng)還提供了用戶(hù)管理和帖子管理的操作。目的是基于現(xiàn)實(shí),為用戶(hù)提供一個(gè)模擬的網(wǎng)上交流環(huán)

4、境。方便大家的溝通交流,豐富人們的娛樂(lè)文化生活。</p><p>  在論文的篇章上,本論文從系統(tǒng)分析、系統(tǒng)整體設(shè)計(jì)、數(shù)據(jù)庫(kù)設(shè)計(jì)、系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)幾個(gè)方面對(duì)系統(tǒng)的開(kāi)發(fā)過(guò)程作了詳細(xì)的介紹,旨在全面地呈現(xiàn)系統(tǒng)由最初設(shè)計(jì)到最終定型的各個(gè)階段,便于大家對(duì)系統(tǒng)有一個(gè)更好的把握和認(rèn)識(shí)。系統(tǒng)的具體實(shí)現(xiàn)細(xì)節(jié)則在論文的系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)一章給出了具體的闡述,各個(gè)功能版塊的展示也包含在其中,能夠直觀地看到系統(tǒng)運(yùn)行后的演示效果。其間

5、夾雜著部分主要代碼的輔助說(shuō)明,便于從底層查看系統(tǒng)的最終實(shí)現(xiàn)。</p><p>  關(guān)鍵詞:JSP;網(wǎng)上論壇;模擬社區(qū);在線(xiàn)交流</p><p><b>  Abstract</b></p><p>  With the development of the Internet,the way of people’s communication h

6、as undergoned enormous changes.Web chat,Online Video and Mailbox System are changing the way of people’s mutual communication.And to meet the request of getting the knowledge and publishing information,Internet Forum has

7、 come to appear.All kinds of topic forum almost cover every corner of perple’s lives.Based on the major,speciality or interest,people pose questions on the forum,named ‘Posting’;Then,other people can publish </p>

8、<p>  The thesis descripts the progress of the developing of the system with four chapters.They are Analysis of system,Entire design of system,Design of Database,Detailed design and achievement of system.The aim is

9、to entirely present every progress from initial design to finalizing the design of the system,to provide convenience for people to grasp or understand the system better.The relizing details of the system is showed at the

10、 chapter which is named Detailed design and achievement of system.The d</p><p>  Key Words: JSP,Web BBS,Simulation Community,Online Communication</p><p><b>  目 錄</b></p><p

11、><b>  1 引 言1</b></p><p><b>  2 系統(tǒng)分析2</b></p><p>  2.1 需求分析2</p><p>  2.1.1 功能性需求2</p><p>  2.1.2 非功能性需求6</p><p>  2.2 可行性分析

12、6</p><p>  3 系統(tǒng)總體設(shè)計(jì)8</p><p>  3.1 系統(tǒng)目標(biāo)8</p><p>  3.2 系統(tǒng)功能劃分8</p><p>  3.2.1 前臺(tái)功能結(jié)構(gòu)8</p><p>  3.2.2 后臺(tái)功能結(jié)構(gòu)9</p><p>  3.3 系統(tǒng)開(kāi)發(fā)環(huán)境10</p&

13、gt;<p>  3.3.1 開(kāi)發(fā)環(huán)境10</p><p>  3.3.2 系統(tǒng)平臺(tái)體系結(jié)構(gòu)的選擇11</p><p>  3.3.3 JavaScript語(yǔ)言簡(jiǎn)介及特點(diǎn)11</p><p>  3.3.4 JSP概述11</p><p>  3.3.5 MySQL12</p><p>  3.

14、3.6 JDBC技術(shù)12</p><p>  4 數(shù)據(jù)庫(kù)設(shè)計(jì)13</p><p>  4.1 數(shù)據(jù)庫(kù)分析13</p><p>  4.2 數(shù)據(jù)庫(kù)概念設(shè)計(jì)13</p><p>  4.3 數(shù)據(jù)庫(kù)的邏輯設(shè)計(jì)15</p><p>  5 系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)19</p><p>  5.1

15、前臺(tái)設(shè)計(jì)19</p><p>  5.1.1 前臺(tái)頁(yè)面設(shè)計(jì)與實(shí)現(xiàn)19</p><p>  5.1.2 用戶(hù)注冊(cè)/登錄、管理員登錄20</p><p>  5.1.3 論壇版塊的展示23</p><p>  5.1.4 發(fā)表新主題25</p><p>  5.1.5 搜索主題26</p>&l

16、t;p>  5.1.6 查看及回復(fù)主題27</p><p>  5.1.7 優(yōu)化主題的一些小設(shè)計(jì)29</p><p>  5.2 后臺(tái)設(shè)計(jì)32</p><p>  5.2.1 管理員登錄32</p><p>  5.2.2 修改和刪除主題32</p><p>  5.2.3用戶(hù)信息管理33</p

17、><p><b>  結(jié)束語(yǔ)36</b></p><p><b>  參考文獻(xiàn)38</b></p><p><b>  1 引 言</b></p><p>  網(wǎng)絡(luò)的興起與發(fā)展,極大地改變了人們的思維和行為習(xí)慣?;诰W(wǎng)絡(luò)的應(yīng)用也層出不窮,論壇就是最早興起的應(yīng)用之一。作為一種傳遞

18、消息的方式,最早的BBS的作用是公布股市的即時(shí)消息,而隨著時(shí)代的發(fā)展,現(xiàn)在的BBS的內(nèi)容已達(dá)到無(wú)所不包的程度。小到生活趣事,大到專(zhuān)業(yè)知識(shí),各種各樣的主題論壇讓人眼花繚亂。論壇網(wǎng)頁(yè)的形式也由最初的靜態(tài)頁(yè)面發(fā)展到現(xiàn)在的動(dòng)態(tài)頁(yè)面,更好的實(shí)現(xiàn)了用戶(hù)之間的交互。把BBS作為一種對(duì)外的展示窗口,進(jìn)行內(nèi)外信息交流,已然成為大眾的廣泛需要。財(cái)大家園論壇就是通過(guò)動(dòng)態(tài)Web開(kāi)發(fā)技術(shù)和數(shù)據(jù)庫(kù)技術(shù)實(shí)現(xiàn)的以財(cái)大學(xué)生與老師為主要服務(wù)對(duì)象的一個(gè)基于現(xiàn)實(shí)環(huán)境之上的一個(gè)

19、網(wǎng)上論壇,力求創(chuàng)造出一個(gè)模擬的網(wǎng)上校園虛擬環(huán)境。財(cái)大人可以足不出戶(hù),在論壇上共享一切值得分享的主題,方便交流;外界人士也可以通過(guò)此論壇更好的了解財(cái)大學(xué)生的焦點(diǎn)和興趣所在,省時(shí)省力。在論壇的設(shè)計(jì)上,增加了版塊類(lèi)別。不同的版塊區(qū)域所包含的討論主題會(huì)有所區(qū)分,這樣的話(huà),就能以主題不同,分版塊分主題地記錄了你我他的點(diǎn)滴心聲。</p><p>  此論壇是基于B/S模式的一種JSP網(wǎng)頁(yè)論壇的設(shè)計(jì)與實(shí)現(xiàn),力求做到界面友好、簡(jiǎn)

20、單和易于操作。論文從幾個(gè)大的方面來(lái)對(duì)系統(tǒng)的開(kāi)發(fā)做出了闡述。在系統(tǒng)分析一章從需求分析和可行性分析兩方面來(lái)做具體闡述;系統(tǒng)整體設(shè)計(jì)則從系統(tǒng)目標(biāo)、系統(tǒng)功能劃分和系統(tǒng)開(kāi)發(fā)環(huán)境三大方面說(shuō)明,結(jié)合后面的系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)一章完成對(duì)系統(tǒng)從整體到細(xì)節(jié)的全方位的理解。數(shù)據(jù)庫(kù)設(shè)計(jì)單獨(dú)設(shè)一章,對(duì)數(shù)據(jù)庫(kù)的分析、概念設(shè)計(jì)和邏輯設(shè)計(jì)給出了詳細(xì)說(shuō)明。系統(tǒng)的詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)一章對(duì)系統(tǒng)的各個(gè)功能模塊的設(shè)計(jì)與實(shí)現(xiàn)做了詳細(xì)說(shuō)明,分為前臺(tái)設(shè)計(jì)和后臺(tái)設(shè)計(jì)兩個(gè)部分。其中,前臺(tái)設(shè)計(jì)幾

21、乎囊括了整個(gè)設(shè)計(jì)與實(shí)現(xiàn)的大半部分。在所有章節(jié)中,系統(tǒng)總體設(shè)計(jì)、數(shù)據(jù)庫(kù)設(shè)計(jì)和系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)三章是主要內(nèi)容。論文盡可能的將與系統(tǒng)相關(guān)的內(nèi)容解釋清楚,目的就是將系統(tǒng)的整個(gè)開(kāi)發(fā)流程展示給大家。</p><p><b>  2 系統(tǒng)分析</b></p><p><b>  2.1 需求分析</b></p><p>  2.1.1

22、 功能性需求</p><p>  開(kāi)發(fā)BBS論壇系統(tǒng)的目的是為了提供一個(gè)大家交流的平臺(tái),供人們發(fā)表看法、探討經(jīng)驗(yàn)、討論問(wèn)題。因此,BBS論壇系統(tǒng)的最基本的功能是發(fā)表主題,其次是其它人員根據(jù)主題發(fā)表自己的看法,即回復(fù)主題??紤]到現(xiàn)實(shí)情況,并不是每一個(gè)訪(fǎng)問(wèn)的游客都具有發(fā)表主題的權(quán)利,所以必須用一個(gè)身份綁定用戶(hù),賦予其發(fā)表主題的權(quán)利,這就需要實(shí)現(xiàn)用戶(hù)注冊(cè)及登錄的功能。每一個(gè)系統(tǒng)都需要管理員這個(gè)特殊群體的存在,所以也需要

23、實(shí)現(xiàn)管理員登陸的功能。管理員區(qū)別于一般用戶(hù)的地方在于,管理員往往具有更高的權(quán)限,有權(quán)對(duì)用戶(hù)信息和帖子內(nèi)容作出某些“增刪改查”的操作,所以,針對(duì)管理員,系統(tǒng)應(yīng)該實(shí)現(xiàn)刪除和修改帖子以及對(duì)用戶(hù)的管理等功能,以實(shí)現(xiàn)管理員對(duì)社區(qū)的管理 ??紤]到社區(qū)訪(fǎng)問(wèn)量會(huì)很大,用戶(hù)發(fā)表的帖子的數(shù)量自然很多,在浩瀚的帖子海洋中,如何才能查看自己感興趣的帖子成為了一個(gè)不得不考慮的問(wèn)題。所以,系統(tǒng)還應(yīng)該實(shí)現(xiàn)搜索帖子的功能,用模糊查詢(xún)的方法,對(duì)社區(qū)的帖子進(jìn)行篩檢的工作。

24、本系統(tǒng)針對(duì)用戶(hù)還實(shí)現(xiàn)了一個(gè)特殊的功能,即郵件發(fā)送。如果某個(gè)用戶(hù)對(duì)其他的用戶(hù)感興趣,那么可以通過(guò)將郵件發(fā)送到指定用戶(hù)注冊(cè)時(shí)所填寫(xiě)的郵箱地址,這樣的話(huà),就能夠?qū)崿F(xiàn)即時(shí)通訊的功能。</p><p>  綜上所述,BBS論壇系統(tǒng)的功能就可以進(jìn)行如下劃分:</p><p><b>  1、前臺(tái)部分</b></p><p>  主要涉及系統(tǒng)前臺(tái),即用戶(hù)所能

25、看到的網(wǎng)頁(yè)所涉及到的功能。主要包括:用戶(hù)注冊(cè)/登錄,發(fā)表新主題,回復(fù)主題,查看主題內(nèi)容,搜索主題,郵件發(fā)送。</p><p><b>  2、后臺(tái)管理部分</b></p><p>  主要是數(shù)據(jù)庫(kù)的操作,針對(duì)系統(tǒng)管理員設(shè)置的一些功能。主要包括:管理員登錄,刪除與修改主題和用戶(hù)信息管理。</p><p>  圖2-1 系統(tǒng)功能介紹</p&g

26、t;<p>  數(shù)據(jù)庫(kù)部分,本系統(tǒng)新建了系統(tǒng)用數(shù)據(jù)庫(kù)bbs,并在其下創(chuàng)建了五張表:user(用戶(hù)表)、article(主題表)、admin(管理員表)、grade(用戶(hù)等級(jí)表)和edit(版塊類(lèi)別)。本系統(tǒng)在設(shè)計(jì)之初,為簡(jiǎn)單起見(jiàn),欲暫不考慮系統(tǒng)管理員的設(shè)置,默認(rèn)此系統(tǒng)只有一個(gè)管理員賬戶(hù),用戶(hù)名和密碼均為“admin”。但這種做法在現(xiàn)實(shí)生活中是很難滿(mǎn)足實(shí)際需求的。所以,最終創(chuàng)建了管理員表admin,以實(shí)現(xiàn)對(duì)管理員信息的統(tǒng)一存

27、儲(chǔ)和管理。理論上應(yīng)該有四個(gè)業(yè)務(wù)角色:游客、用戶(hù)、管理員以及帖子。</p><p><b>  系統(tǒng)的用例圖如下:</b></p><p>  圖2-2 系統(tǒng)用例圖</p><p>  從用例圖中我們可以看出,游客的權(quán)限最低,只能查看、回復(fù)和搜索主題;用戶(hù)的權(quán)限居中,能夠發(fā)布、回復(fù)、搜索和查看主題;管理員的權(quán)限最高,除了能夠?qū)崿F(xiàn)用戶(hù)的所有功能,還

28、能夠修改和刪除主題,并且能夠?qū)τ脩?hù)信息進(jìn)行管理,具有行使系統(tǒng)所能夠提供的一切權(quán)利。</p><p>  說(shuō)明:用戶(hù)和游客(非用戶(hù))的身份區(qū)別主要通過(guò)“用戶(hù)注冊(cè)”的功能實(shí)現(xiàn),系統(tǒng)通過(guò)sql語(yǔ)句將注冊(cè)用戶(hù)信息保存到user表中,用戶(hù)登錄時(shí)查詢(xún)user表,并以返回結(jié)果的有無(wú)判斷個(gè)人的真實(shí)身份。</p><p>  系統(tǒng)的頂層數(shù)據(jù)流圖(DFD)如下:</p><p>  圖

29、2-3 頂層數(shù)據(jù)流圖(DFD)</p><p>  圖2-4 一層數(shù)據(jù)流圖</p><p>  2.1.2 非功能性需求</p><p>  1>平臺(tái)限制。本系統(tǒng)是在Window xp環(huán)境下開(kāi)發(fā),對(duì)系統(tǒng)沒(méi)有過(guò)高的其它要求。</p><p>  2>服務(wù)器支持。本系統(tǒng)是基于B/S模式下的論壇系統(tǒng),采用的服務(wù)器是Tomcat 7.0.

30、5版本。</p><p>  3>數(shù)據(jù)庫(kù)支持。本系統(tǒng)采用的數(shù)據(jù)庫(kù)是MySQL 5.1版本,同類(lèi)型或更高級(jí)別的數(shù)據(jù)庫(kù)管理軟件都能適用。</p><p>  4>基于MyEclipse平臺(tái)下開(kāi)發(fā)。</p><p><b>  2.2 可行性分析</b></p><p>  需求分析回答的是“做什么,不做什么”的問(wèn)

31、題,而可行性分析回答的則是“做,還是不做”的問(wèn)題??尚行苑治鍪窃谡{(diào)查分析的基礎(chǔ)上,針對(duì)新系統(tǒng)的開(kāi)發(fā)是否具有實(shí)用性和可能性,對(duì)新系統(tǒng)的開(kāi)發(fā)從經(jīng)濟(jì)、技術(shù)、社會(huì)環(huán)境和人等發(fā)面進(jìn)行分析和研究。可行性分析往往能夠?qū)Q策者提供有價(jià)值的依據(jù),以避免投資失誤,保證新系統(tǒng)的開(kāi)發(fā)成功。聯(lián)想集團(tuán)領(lǐng)導(dǎo)人柳傳志[2006]曾說(shuō):“沒(méi)錢(qián)賺的事我們不干;有錢(qián)賺但投不起錢(qián)的事不干;有錢(qián)賺也投的起錢(qián)但沒(méi)有可靠的人選,這樣的事也不干。”可見(jiàn)可行性分析的重要性。</p

32、><p><b> ?。?)、技術(shù)可行性</b></p><p>  技術(shù)上的可行性分析主要指在現(xiàn)有可用的技術(shù)基礎(chǔ)上,是否能夠順利完成新系統(tǒng)的開(kāi)發(fā)工作。從硬件方面來(lái)看,計(jì)算機(jī)硬件的更新速度正在不斷提高,與此同時(shí),系統(tǒng)的穩(wěn)定性也在不斷加強(qiáng)。容量越來(lái)越大,性能越來(lái)越強(qiáng),而價(jià)錢(qián)卻越來(lái)越低。所以,僅從硬件方面來(lái)看,完全能夠提供滿(mǎn)意的系統(tǒng)開(kāi)發(fā)環(huán)境。從軟件方面來(lái)看,該BBS論壇采用了

33、流行的動(dòng)態(tài)網(wǎng)頁(yè)設(shè)計(jì)技術(shù)(JSP)和當(dāng)前流行的B/S(瀏覽器/服務(wù)器)設(shè)計(jì)模式進(jìn)行開(kāi)發(fā)。B/S模式本身是隨著Internet技術(shù)的興起,對(duì)傳統(tǒng)C/S結(jié)構(gòu)的一種變化或者改進(jìn)結(jié)構(gòu),具有很多傳統(tǒng)結(jié)構(gòu)所不具有的優(yōu)點(diǎn)。先進(jìn)的Internet/Intranet(國(guó)際互聯(lián)網(wǎng)/企業(yè)內(nèi)部互聯(lián)網(wǎng))技術(shù),保證了B/S結(jié)構(gòu)的強(qiáng)有力態(tài)勢(shì),將B/S結(jié)構(gòu)的應(yīng)用轉(zhuǎn)變成為一種特定時(shí)代條件下的大勢(shì)所趨。本系統(tǒng)的服務(wù)器采用的是Tomcat 7.0.5版本,Tomcat發(fā)展至今

34、,技術(shù)上自不必說(shuō),性能也很穩(wěn)定,完全能夠擔(dān)負(fù)服務(wù)器的重任,輔助完成中小型應(yīng)用的成功開(kāi)發(fā)。數(shù)據(jù)庫(kù)服務(wù)器選用的是MySQL 5.1版本,是目前運(yùn)行速度最快的SQL語(yǔ)言數(shù)據(jù)庫(kù),能夠同時(shí)處理大量數(shù)據(jù),并保證數(shù)據(jù)的完整性。它的靈活性、易用性和安全性為新系統(tǒng)的開(kāi)發(fā)提供</p><p><b>  (2)、經(jīng)濟(jì)可行性</b></p><p>  經(jīng)濟(jì)可行性所作的工作主要是對(duì)項(xiàng)目整體

35、的經(jīng)濟(jì)效益進(jìn)行評(píng)估,本系統(tǒng)的目的是模擬一個(gè)網(wǎng)上交流的平臺(tái),供用戶(hù)在社區(qū)交流經(jīng)驗(yàn)、探討問(wèn)題。但實(shí)際只是用于個(gè)人畢業(yè)設(shè)計(jì),不涉及商業(yè)上的運(yùn)作,純粹模擬,故不存在資金上的流動(dòng),也不存在經(jīng)濟(jì)不可行的問(wèn)題。</p><p><b> ?。?)、社會(huì)可行性</b></p><p>  隨著Internet技術(shù)的迅猛發(fā)展,BBS論壇已成為越來(lái)越多網(wǎng)民彼此交流,獲取信息的重要途徑。在

36、論壇上,人們可以發(fā)表自己一切感興趣的話(huà)題,也可以根據(jù)別人所發(fā)的主題發(fā)表一些自己的看法,心得體會(huì)等。通過(guò)BBS論壇獲取信息及發(fā)表主題已成為一種時(shí)尚的生活方式。BBS論壇縮短了人們之間的距離,在不知不覺(jué)間,早已成為人們網(wǎng)上生活的必備工具,可見(jiàn)論壇存在的必要性和發(fā)展的前景。</p><p><b>  3 系統(tǒng)總體設(shè)計(jì)</b></p><p><b>  3.1

37、系統(tǒng)目標(biāo)</b></p><p>  基于BBS論壇在現(xiàn)實(shí)生活的實(shí)際應(yīng)用,本系統(tǒng)的系統(tǒng)目標(biāo)是提供一個(gè)以現(xiàn)實(shí)環(huán)境為基礎(chǔ)的網(wǎng)上模擬交流平臺(tái),通過(guò)它,人們可以不必拘泥于空間和時(shí)間上的限制,方便交流,暢所欲言,同時(shí)也能夠更加便利的看到周?chē)说南敕ǎ^點(diǎn),最大化的豐富人們的視野和生活,讓人隨時(shí)都能身在其中,隨時(shí)也能置身事外。</p><p>  3.2 系統(tǒng)功能劃分</p>

38、<p>  3.2.1 前臺(tái)功能結(jié)構(gòu)</p><p>  系統(tǒng)的前臺(tái)初始頁(yè)面如下,登錄地址為“http://localhost:8080/BBS”:</p><p>  圖3-1財(cái)大家園網(wǎng)首頁(yè)</p><p>  當(dāng)用戶(hù)登錄到論壇首頁(yè)時(shí),其默認(rèn)的身份就是游客,只能查看、回復(fù)、搜索帖子,而不能執(zhí)行發(fā)帖等其它操作。如果用戶(hù)為非注冊(cè)用戶(hù),則其可以進(jìn)行注冊(cè)以獲得

39、一個(gè)登錄身份。如果用戶(hù)為已注冊(cè)用戶(hù),則其可以直接進(jìn)行登錄,然后以注冊(cè)用戶(hù)的身份執(zhí)行諸如發(fā)表新主題、查看新主題、回復(fù)主題、搜索主題等一系列操作。</p><p>  前臺(tái)系統(tǒng)流程圖具體如下:</p><p>  圖3-2 前臺(tái)系統(tǒng)流程圖</p><p>  此時(shí),用戶(hù)已經(jīng)具有了一種身份,此后用戶(hù)可以以此種身份執(zhí)行諸如發(fā)表新主題、查看主題、搜索主題、回復(fù)主題等操作。&l

40、t;/p><p>  3.2.2 后臺(tái)功能結(jié)構(gòu)</p><p>  后臺(tái)功能主要是針對(duì)管理員而設(shè)置的,用戶(hù)以管理員的身份登陸后,就能執(zhí)行后臺(tái)管理的操作,具體到此BBS論壇,主要是指刪除和修改主題以及對(duì)用戶(hù)信息的管理。</p><p>  后臺(tái)系統(tǒng)流程圖如下: 圖3-3 后臺(tái)系統(tǒng)流程圖</p><

41、p>  3.3 系統(tǒng)開(kāi)發(fā)環(huán)境</p><p>  3.3.1 開(kāi)發(fā)環(huán)境</p><p>  在建立工程前,需要首先搭建開(kāi)發(fā)環(huán)境。此BBS論壇系統(tǒng)的開(kāi)發(fā)需要用到以下幾種工具,故開(kāi)發(fā)前需要進(jìn)行相應(yīng)的下載和安裝:</p><p>  開(kāi)發(fā)平臺(tái):MyEclipse 9.0M2</p><p>  Web服務(wù)器:Tomcat 7.0.5<

42、/p><p>  數(shù)據(jù)庫(kù)服務(wù)器:MySQL 5.1</p><p>  Java開(kāi)發(fā)工具:JDK 1.6.0</p><p>  輔助工具:Dreamweaver CS4</p><p>  3.3.2 系統(tǒng)平臺(tái)體系結(jié)構(gòu)的選擇</p><p>  在系統(tǒng)開(kāi)發(fā)領(lǐng)域內(nèi),目前存在兩大主流系統(tǒng)平臺(tái)的開(kāi)發(fā)結(jié)構(gòu),一種是C/S結(jié)構(gòu),而另

43、一種是B/S結(jié)構(gòu)。C/S結(jié)構(gòu),即大家熟知的客戶(hù)端/服務(wù)器結(jié)構(gòu),是一種應(yīng)用較早,相對(duì)傳統(tǒng)的開(kāi)發(fā)模式。通過(guò)它,可以充分利用兩端硬件環(huán)境的優(yōu)勢(shì),將任務(wù)合理的分配到Client端和Server端,降低了系統(tǒng)的通訊開(kāi)銷(xiāo)。B/S結(jié)構(gòu),即瀏覽器/服務(wù)器結(jié)構(gòu),是隨著Internet的興起,對(duì)C/S結(jié)構(gòu)的一種變化或者改進(jìn)。在這種結(jié)構(gòu)下,用戶(hù)不需要借助于客戶(hù)端軟件,通過(guò)WWW瀏覽器,即可實(shí)現(xiàn)系統(tǒng)的全部既定功能。在這種模式下,一部分事務(wù)邏輯在前段實(shí)現(xiàn),但是主

44、要事務(wù)邏輯在服務(wù)器端實(shí)現(xiàn),大大簡(jiǎn)化了客戶(hù)端電腦載荷,減輕了系統(tǒng)維護(hù)與升級(jí)的成本,從而降低了用戶(hù)的整體成本。從開(kāi)放程度來(lái)說(shuō),傳統(tǒng)的C/S結(jié)構(gòu)雖然采用的是開(kāi)放模式,但這個(gè)開(kāi)放性只是針對(duì)系統(tǒng)開(kāi)發(fā)一級(jí)的,在特定的應(yīng)用中,無(wú)論是客戶(hù)端還是服務(wù)器端都還需要特定的軟件支持。而B(niǎo)/S結(jié)構(gòu),是一次性到位的開(kāi)發(fā),應(yīng)用此模式開(kāi)發(fā)的系統(tǒng),不同人員,在不同地點(diǎn),以不同的接入方式(比如LAN、WAN等)訪(fǎng)問(wèn)并操作共同的數(shù)據(jù)庫(kù),能有效地保護(hù)數(shù)據(jù)平臺(tái)和管理訪(fǎng)問(wèn)權(quán)限,服

45、務(wù)器的數(shù)據(jù)庫(kù)也很安全。特別是在Java這樣的</p><p>  3.3.3 JavaScript語(yǔ)言簡(jiǎn)介及特點(diǎn)</p><p>  JavaScript語(yǔ)言是Netscape公司開(kāi)發(fā)的一種腳本性語(yǔ)言(Scripting language),或者稱(chēng)其為描述性語(yǔ)言。作為一種編程語(yǔ)言,其出現(xiàn)的使命就是為了適合動(dòng)態(tài)網(wǎng)頁(yè)制作的需要,頗具工具色彩。在靜態(tài)網(wǎng)頁(yè)Html的基礎(chǔ)上,使用JavaScript

46、可以開(kāi)發(fā)交互式Web網(wǎng)頁(yè),能夠使網(wǎng)頁(yè)和用戶(hù)之間實(shí)現(xiàn)一種實(shí)時(shí)性的、動(dòng)態(tài)的、交互性的關(guān)系,使得網(wǎng)頁(yè)包含更多活躍的元素和更加精彩內(nèi)容??梢哉f(shuō),JavaScript是專(zhuān)門(mén)為制作Web網(wǎng)頁(yè)而量身定做的一種簡(jiǎn)單的編程語(yǔ)言。</p><p>  JavaScript是在客戶(hù)機(jī)上執(zhí)行的,其特點(diǎn)和功能主要是短小精悍,能夠大大提高網(wǎng)頁(yè)的瀏覽速度和交互能力。其特有的工具色彩讓其在動(dòng)態(tài)網(wǎng)頁(yè)的開(kāi)發(fā)中找到了用武之地。</p>

47、<p>  3.3.4 JSP概述</p><p>  JSP是由Sun公司在Java語(yǔ)言的基礎(chǔ)上開(kāi)發(fā)出來(lái)的一種動(dòng)態(tài)網(wǎng)頁(yè)制作技術(shù),其將標(biāo)記<% %>插入到頁(yè)面中,從而使網(wǎng)頁(yè)中的靜態(tài)部分和動(dòng)態(tài)部分分離開(kāi)來(lái)。JSP是類(lèi)似ASP的一種技術(shù),在傳統(tǒng)的靜態(tài)網(wǎng)頁(yè)HTML文件插入Java程序段和JSP標(biāo)記,就形成了JSP文件。</p><p>  JSP技術(shù)的強(qiáng)勢(shì)在于:</p

48、><p>  1、一次編寫(xiě),到處運(yùn)行。在更換系統(tǒng)時(shí),代碼不需要做任何修改。</p><p>  2、系統(tǒng)的多平臺(tái)支持?;旧峡梢栽谒衅脚_(tái)上的任意環(huán)境下開(kāi)發(fā),在任意環(huán)境中進(jìn)行系統(tǒng)部署,在任意環(huán)境中擴(kuò)展。</p><p>  3、強(qiáng)大的可伸縮性。通過(guò)小小的jar文件運(yùn)行servlet/JSP,到由多臺(tái)服務(wù)器進(jìn)行集群和負(fù)載均衡,到多臺(tái)Application進(jìn)行事務(wù)處理,一臺(tái)

49、服務(wù)器到無(wú)數(shù)臺(tái)服務(wù)器,JSP表現(xiàn)了強(qiáng)大的可伸縮性。</p><p>  4、多樣化和功能強(qiáng)大的開(kāi)發(fā)工具支持,常用的編輯工具有Dreamweaver和MyEclipse等。</p><p>  3.3.5 MySQL</p><p>  MySQL可以稱(chēng)得上是目前運(yùn)行速度最快的SQL語(yǔ)言數(shù)據(jù)庫(kù),除了具有許多其他數(shù)據(jù)庫(kù)所不具備的功能和選擇外,MySQL數(shù)據(jù)庫(kù)是一種完全免

50、費(fèi)的產(chǎn)品,用戶(hù)可以直接從網(wǎng)上下載數(shù)據(jù)庫(kù),用于個(gè)人和商業(yè)用途,而不必支付任何費(fèi)用。</p><p>  3.3.6 JDBC技術(shù)</p><p>  數(shù)據(jù)庫(kù)管理是每個(gè)應(yīng)用系統(tǒng)開(kāi)發(fā)過(guò)程中不得不考慮的問(wèn)題,目前主流的數(shù)據(jù)庫(kù)有Oracle、SqlServer、MySql等。不管使用何種技術(shù),都離不開(kāi)JDBC技術(shù)的支持。JDBC的全稱(chēng)是Java DataBases Connectivity stan

51、dard,即Java數(shù)據(jù)庫(kù)連接,是一種數(shù)據(jù)庫(kù)通用接口采用的主流技術(shù)。其定義了用來(lái)訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)源的標(biāo)準(zhǔn)Java類(lèi)庫(kù),通過(guò)它使用一種標(biāo)準(zhǔn)方法,就能夠方便的訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)資源。所以,JDBC又是一種規(guī)范,其目標(biāo)是使應(yīng)用程序開(kāi)發(fā)人員通過(guò)它連接任何提供JDBC驅(qū)動(dòng)程序的數(shù)據(jù)庫(kù)系統(tǒng),這樣就使得程序員無(wú)需對(duì)某種數(shù)據(jù)庫(kù)有過(guò)多的了解,大大加快了開(kāi)發(fā)過(guò)程。</p><p>  有了JDBC,向各種數(shù)據(jù)庫(kù)發(fā)送SQL語(yǔ)句就是一件再簡(jiǎn)單不過(guò)的事

52、了。換言之,有了JDBC,就不必為訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)A專(zhuān)門(mén)再寫(xiě)一個(gè)程序,又為訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)B專(zhuān)門(mén)寫(xiě)一個(gè)程序。所以,JDBC為Java應(yīng)用程序與各種不同數(shù)據(jù)庫(kù)之間進(jìn)行對(duì)話(huà)提供了一個(gè)標(biāo)準(zhǔn)的方法,這也是Java語(yǔ)言“一次編寫(xiě),到處運(yùn)行”的優(yōu)勢(shì)。</p><p><b>  4 數(shù)據(jù)庫(kù)設(shè)計(jì)</b></p><p><b>  4.1 數(shù)據(jù)庫(kù)分析</b></p&

53、gt;<p>  數(shù)據(jù)庫(kù)的設(shè)計(jì),在應(yīng)用系統(tǒng)的開(kāi)發(fā)中起著舉足輕重的作用。一個(gè)合理、有效的數(shù)據(jù)庫(kù)設(shè)計(jì)不僅是做好系統(tǒng)的保證,也能降低程序的復(fù)雜性,使程序的開(kāi)發(fā)過(guò)程變得更加容易。</p><p>  本系統(tǒng)是一個(gè)中型的BBS論壇系統(tǒng),考慮到用戶(hù)信息量和用戶(hù)需求等問(wèn)題,決定采用MySQl作為項(xiàng)目用數(shù)據(jù)庫(kù)。</p><p>  MySQl是一個(gè)中小關(guān)系型數(shù)據(jù)管理系統(tǒng),最初由MySQL A

54、B公司發(fā)布。MySQL由于體積小、速度快、總體擁有成本低等原因,成為許多中小型網(wǎng)站數(shù)據(jù)庫(kù)的首選。MySQL可以稱(chēng)得上是目前運(yùn)行速度最快的SQL語(yǔ)言數(shù)據(jù)庫(kù),此外,MySQL數(shù)據(jù)庫(kù)是一種完全免費(fèi)的產(chǎn)品,用戶(hù)可以直接從網(wǎng)上下載數(shù)據(jù)庫(kù),用于個(gè)人和商業(yè)用途,而不必支付任何費(fèi)用。</p><p>  4.2 數(shù)據(jù)庫(kù)概念設(shè)計(jì)</p><p>  ER圖是實(shí)體聯(lián)系圖,E-R模型是對(duì)現(xiàn)實(shí)世界的一種抽象。其組

55、成部分主要包括實(shí)體、聯(lián)系和屬性。使用這三種成分,我們可以很好的抽象出現(xiàn)實(shí)世界中的個(gè)體,并通過(guò)彼此之間的聯(lián)系來(lái)抽象整個(gè)世界。E-R模型是設(shè)計(jì)數(shù)據(jù)庫(kù)時(shí)經(jīng)常使用到的方法。</p><p>  經(jīng)過(guò)分析,本系統(tǒng)創(chuàng)建了五張數(shù)據(jù)庫(kù)表,即帖子表(article)、版塊表(edit)、用戶(hù)等級(jí)表(grade)、用戶(hù)表(user)和管理員表(admin)。下面劃分出本系統(tǒng)所使用的數(shù)據(jù)庫(kù)實(shí)體,它們分別為用戶(hù)(User)和帖子(Art

56、icle)以及管理員(admin)。</p><p>  以下是帖子、用戶(hù)和管理員的實(shí)體圖:</p><p>  圖4-1 帖子實(shí)體圖</p><p>  圖4-2 用戶(hù)實(shí)體表</p><p>  圖4-3 實(shí)體管理員表</p><p>  系統(tǒng)的E-R圖如下:</p><p>  圖4-4 系

57、統(tǒng)E-R圖</p><p>  4.3 數(shù)據(jù)庫(kù)的邏輯設(shè)計(jì)</p><p>  根據(jù)數(shù)據(jù)庫(kù)的概念設(shè)計(jì),可以創(chuàng)建與實(shí)體對(duì)應(yīng)的數(shù)據(jù)表。</p><p>  1、用戶(hù)表(User)</p><p>  下面是對(duì)表User的具體設(shè)計(jì)</p><p>  表4-1 user</p&g

58、t;<p>  說(shuō)明:*userName是注冊(cè)用戶(hù)的用戶(hù)名,為User表的主鍵。</p><p>  *password是用戶(hù)密碼,為用戶(hù)登錄時(shí)用。</p><p>  *rePassword是確認(rèn)密碼,與用戶(hù)密碼對(duì)應(yīng)。</p><p>  *mailUrl是用戶(hù)的郵箱地址,通過(guò)它,我們可以與之通過(guò)郵件通信。</p><p> 

59、 *loginTime表示用戶(hù)注冊(cè)的時(shí)間。</p><p>  *gradeNo表示用戶(hù)的等級(jí),與登記表(grade)中的gradeId相關(guān)聯(lián),組成表的外鍵。共分為四個(gè)等級(jí):菜鳥(niǎo)、列兵、星級(jí)標(biāo)兵和士官。</p><p>  *在注冊(cè)過(guò)程中,password和rePassword必須一致,否則無(wú)法成功注冊(cè)。</p><p>  2、管理員表(admin)</p&

60、gt;<p>  表4-2 admin</p><p>  3、帖子表(Article)</p><p>  下面是對(duì)表Article的具體設(shè)計(jì)</p><p>  表4-3 article</p><p>  說(shuō)明:*id是帖子的編號(hào),為本表的

61、主鍵。</p><p>  *pid是父親id的編號(hào),表示被回復(fù)的帖子id號(hào)。</p><p>  *rootid表示根貼的id號(hào),表示最初發(fā)起主題的帖子id號(hào)。</p><p>  *editNo表示帖子所屬的板塊號(hào),每個(gè)版塊的帖子分版塊區(qū)別顯示。</p><p>  *title表示帖子的主題。</p><p> 

62、 *cont表示帖子的內(nèi)容。</p><p>  *pdate表示發(fā)帖的具體時(shí)間。</p><p>  *writer表示發(fā)帖的作者,此外鍵對(duì)應(yīng)user表中userName字段。</p><p>  *viewCount表示帖子的查看量。</p><p>  *replyCount表示帖子的回復(fù)量。</p><p> 

63、 *isLeaf判斷帖子是否為葉子節(jié)點(diǎn),值為1時(shí)表示為非葉子節(jié)點(diǎn);為0時(shí)表示為葉子節(jié)點(diǎn)。</p><p>  *isEssence判斷帖子是否為精華帖,值為1是表示是精華帖;反之,則不是。</p><p>  4、用戶(hù)等級(jí)表(grade)</p><p>  圖4-4 grade</p><p>  5、

64、版塊類(lèi)別表(edit)</p><p>  圖4-5 edit</p><p>  圖4-5 數(shù)據(jù)庫(kù)模型圖</p><p>  5 系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)</p><p><b>  5.1 前臺(tái)設(shè)計(jì)</b></p><p>  系統(tǒng)的前臺(tái),即是直接面向用戶(hù)的所

65、有頁(yè)面。因?yàn)榍芭_(tái)的功能模塊較多,而各個(gè)模塊的實(shí)現(xiàn)過(guò)程都是類(lèi)似的,所以對(duì)于系統(tǒng)前臺(tái)的介紹,只是做有選擇的系統(tǒng)重點(diǎn)設(shè)計(jì)介紹。</p><p>  5.1.1 前臺(tái)頁(yè)面設(shè)計(jì)與實(shí)現(xiàn)</p><p>  本系統(tǒng)的所有頁(yè)面都采用了統(tǒng)一的簡(jiǎn)化頁(yè)面框架,包括頁(yè)頭和內(nèi)容顯示區(qū)。前臺(tái)首頁(yè)的頁(yè)面運(yùn)行結(jié)果已在前文中出現(xiàn)過(guò),此處不再累述。</p><p>  下面主要介紹前臺(tái)首頁(yè)面index

66、.jsp的具體實(shí)現(xiàn)。由于論壇是以主題分版塊展示的,下面以其中一個(gè)板塊頁(yè)面做詳細(xì)介紹。部分主要代碼如下:</p><p><b>  <%</b></p><p>  List<Article> articles = new ArrayList<Article>();</p><p>  Connection con

67、n = DB.getConn();//創(chuàng)建與數(shù)據(jù)庫(kù)的連結(jié)</p><p>  Statement stmt = DB.createStmt(conn);//通過(guò)連結(jié)創(chuàng)建Statement對(duì)象</p><p>  String sql = "select * from article"; </p><p>  ResultSet rs = D

68、B.executeQuery(stmt, sql );//執(zhí)行sql語(yǔ)句,并返回結(jié)果集</p><p>  while (rs.next()) {</p><p>  Article a = new Article();</p><p>  a.initFromRs(rs);</p><p>  articles.add(a);</p

69、><p><b>  }</b></p><p><b>  //記錄總查看量</b></p><p>  int totalViewNum=0;</p><p><b>  //記錄帖子總數(shù)</b></p><p>  int totalArticleNu

70、m=0;</p><p>  /*查詢(xún)出帖子的總查看量*/</p><p>  for (Iterator<Article> it = articles.iterator(); it.hasNext();) {</p><p>  Article a = it.next();</p><p>  totalViewNum+=a.g

71、etViewCount();</p><p><b>  }</b></p><p>  /*查詢(xún)出帖子的總回復(fù)量*/</p><p>  String sql1="select count(id) from article where pid=0";</p><p>  ResultSet rs1

72、= DB.executeQuery(stmt, sql1);</p><p>  rs1.next();</p><p>  totalArticleNum = rs1.getInt(1);</p><p>  /*查詢(xún)出最后的發(fā)帖作者*/</p><p>  String sql2="select * from article o

73、rder by pdate desc";</p><p>  ResultSet rs2 = DB.executeQuery(stmt, sql2);</p><p>  while (rs2.next()) {</p><p>  Article a = new Article();</p><p>  a.initFromRs(

74、rs2);</p><p>  articles.add(a);</p><p><b>  }</b></p><p>  Iterator<Article> it1 = articles.iterator();</p><p>  Article a1=it1.next();</p><

75、;p>  String lastWriter=a1.getWriter();</p><p>  DB.close(rs2);</p><p>  DB.close(rs1);</p><p>  DB.close(rs);</p><p>  DB.close(stmt);</p><p>  DB.close

76、(conn);</p><p><b>  %></b></p><p>  以上的語(yǔ)句實(shí)現(xiàn)的有三個(gè)功能:1、查詢(xún)出帖子的總查看量;2、查詢(xún)出帖子的總回復(fù)量;3、查詢(xún)出最后的發(fā)帖作者。這些都是對(duì)整個(gè)板塊的總體統(tǒng)計(jì),是對(duì)板塊信息的最直觀的展現(xiàn)。</p><p>  5.1.2 用戶(hù)注冊(cè)/登錄、管理員登錄</p><p&g

77、t;  在論壇首頁(yè),提供了三個(gè)登錄、注冊(cè)入口,包括:用戶(hù)注冊(cè)/登錄、管理員登錄;通過(guò)點(diǎn)擊如下鏈接,進(jìn)入到對(duì)應(yīng)各個(gè)界面。</p><p>  <DD><A class=jive-acc-login </p><p>  href="http://localhost:8080/BBS/loginUser.jsp">普通用戶(hù)注冊(cè)</A> &

78、lt;/DD></p><p>  <DD><A class=jive-acc-login </p><p>  href="http://localhost:8080/BBS/recordUser.jsp">普通用戶(hù)登錄 </A> </DD></p><p>  <A class=ji

79、ve-acc-login </p><p>  href="http://localhost:8080/BBS/recordManager.jsp">管理員登錄入口</A></p><p><b>  1>用戶(hù)注冊(cè)</b></p><p>  用戶(hù)注冊(cè)的網(wǎng)頁(yè)文件對(duì)應(yīng)的是“l(fā)oginUser.jsp”文

80、件,在此頁(yè)面下,非注冊(cè)用戶(hù)可以進(jìn)行注冊(cè)的操作。</p><p><b>  運(yùn)行效果圖如下:</b></p><p>  圖5-1 用戶(hù)注冊(cè)界面</p><p>  用戶(hù)完成注冊(cè)后,注冊(cè)的用戶(hù)名和密碼就被寫(xiě)入到用戶(hù)表user。之后,會(huì)出現(xiàn)一個(gè)用戶(hù)信息確認(rèn)頁(yè)面,以最終完成用戶(hù)的注冊(cè)。確認(rèn)無(wú)誤后,點(diǎn)擊鏈接,頁(yè)面就跳轉(zhuǎn)到論壇首頁(yè),此時(shí)的用戶(hù)身份還是“

81、游客”,之后可以通過(guò)登錄改變用戶(hù)身份狀態(tài)。</p><p>  在用戶(hù)注冊(cè)的時(shí)候,如果用戶(hù)輸入的密碼和重復(fù)密碼不一致,會(huì)出現(xiàn)“密碼和重復(fù)密碼不一致”的錯(cuò)誤信息提示,然后頁(yè)面返回到注冊(cè)頁(yè)面。如果用戶(hù)所有待填項(xiàng)輸入無(wú)誤,則進(jìn)入用戶(hù)信息確認(rèn)頁(yè)面。</p><p>  以下是用戶(hù)信息確認(rèn)頁(yè)面的展示圖:</p><p>  圖5-2 用戶(hù)信息確認(rèn)頁(yè)面</p>&

82、lt;p><b>  用戶(hù)登錄</b></p><p>  用戶(hù)完成注冊(cè)后,就可以進(jìn)行用戶(hù)登錄的操作,用戶(hù)登陸頁(yè)面如下:</p><p>  圖5-3 用戶(hù)登錄界面</p><p>  在用戶(hù)登錄時(shí),如果用戶(hù)名或密碼輸入有誤,則會(huì)出現(xiàn)“invalid username or password”的錯(cuò)誤信息提示,然后頁(yè)面返回到登陸頁(yè)面供用戶(hù)修

83、正輸入繼續(xù)登錄。</p><p>  5.1.3 論壇版塊的展示</p><p>  下面以“青蔥歲月”區(qū)為例,來(lái)介紹論壇版塊的展示操作。在論壇首頁(yè),通過(guò)鏈接版塊鏈接,進(jìn)入到特定版塊的特定頁(yè)面。</p><p>  “最初的夢(mèng)想”版塊頁(yè)面運(yùn)行效果</p><p>  圖5-4 “最初的夢(mèng)想“版塊頁(yè)面運(yùn)行效果圖</p><p

84、>  從運(yùn)行效果來(lái)看,此處運(yùn)用了分頁(yè)技術(shù)。分頁(yè)技術(shù)實(shí)現(xiàn)的關(guān)鍵點(diǎn)依賴(lài)于一條重要的sql語(yǔ)句,具體如下:</p><p>  Select * from Table order by 參數(shù)1 limit startPage+”,” endPage;</p><p>  其中,Table是所要查詢(xún)的表名稱(chēng);</p><p>  startPage是起始頁(yè)面;<

85、/p><p>  endPage是結(jié)束頁(yè)面。</p><p>  執(zhí)行的效果是查詢(xún)出排序結(jié)果的制定起始行到指定結(jié)束行的所有頁(yè)面。</p><p>  板塊頁(yè)面的展示是通過(guò)一個(gè)循環(huán)來(lái)實(shí)現(xiàn)的,在循環(huán)的基礎(chǔ)上,為頁(yè)面實(shí)現(xiàn)了一個(gè)優(yōu)化:奇偶行以不同的顯示效果展現(xiàn)。</p><p>  優(yōu)化的方式主要向jsp頁(yè)面導(dǎo)入class文件,在導(dǎo)入的時(shí)候,針對(duì)行數(shù)的奇

86、偶性采取不同的對(duì)應(yīng)操作。</p><p><b>  主要代碼如下:</b></p><p><b>  <%</b></p><p>  int lineNum = 0;</p><p>  for(Iterator<Article> it = articles.iterator

87、(); it.hasNext();) {</p><p>  Article a = it.next();</p><p>  String classStr = lineNum % 2 == 0 ? "jive-even" : "jive-odd"; //區(qū)分奇偶行,以不同效果區(qū)分顯示</p><p><b>  

88、%></b></p><p><b>  實(shí)現(xiàn)代碼具體如下:</b></p><p>  代碼段1:獲取制定部分行的查詢(xún)結(jié)果</p><p><b>  <%</b></p><p>  final int PAGE_SIZE = 8; //每頁(yè)顯示的主題數(shù)目</p&g

89、t;<p>  int pageNo = 1; //記錄當(dāng)前頁(yè)數(shù)</p><p>  String strPageNo = request.getParameter("pageNo");</p><p>  if (strPageNo != null && !strPageNo.trim().equals("")) {&

90、lt;/p><p><b>  try {</b></p><p>  pageNo = Integer.parseInt(strPageNo);</p><p>  } catch (NumberFormatException e) {</p><p>  pageNo = 1;</p><p>&

91、lt;b>  }</b></p><p><b>  }</b></p><p>  if (pageNo <= 0) {</p><p>  pageNo = 1;</p><p><b>  }</b></p><p>  int totalPag

92、es = 0; //記錄符合要求的總主題頁(yè)數(shù)</p><p>  List<Article> articles = new ArrayList<Article>();</p><p>  Connection conn = DB.getConn();</p><p>  Statement stmtCount = DB.createStmt(

93、conn);</p><p>  ResultSet rsCount = DB.executeQuery(stmtCount,</p><p>  "select count(*) from article where pid=0");</p><p>  rsCount.next();</p><p>  int tot

94、alRecords = rsCount.getInt(1);</p><p>  totalPages = (totalRecords + PAGE_SIZE - 1) / PAGE_SIZE;</p><p>  if (pageNo > totalPages) {</p><p>  pageNo = totalPages;</p><

95、p><b>  }</b></p><p>  Statement stmt = DB.createStmt(conn);</p><p>  int startPos = (pageNo - 1) * PAGE_SIZE;</p><p>  String sql = "select * from article where

96、pid=0 order by pdate desc limit "</p><p>  + startPos + "," + PAGE_SIZE; </p><p>  ResultSet rs = DB.executeQuery(stmt, sql);</p><p>  while (rs.next()) {</p>

97、<p>  Article a = new Article();</p><p>  a.initFromRs(rs);</p><p>  articles.add(a);</p><p><b>  }</b></p><p>  代碼段2:將獲取的結(jié)果根據(jù)行號(hào)的奇偶性分頁(yè)展示:</p>&l

98、t;p><b>  <%</b></p><p>  int lineNum = 0;</p><p>  for (Iterator<Article> it = articles.iterator(); it.hasNext();) {</p><p>  Article a = it.next();</p>

99、;<p>  String classStr = lineNum % 2 == 0 ? "jive-even" : "jive-odd"; //區(qū)分奇偶行,以不同效果區(qū)分顯示</p><p>  <TR class="<%=classStr%>"></p><p><b>  靜態(tài)部

100、分</b></p><p><b>  <%</b></p><p>  lineNum++;</p><p><b>  %></b></p><p>  5.1.4 發(fā)表新主題</p><p>  在論壇版塊展示頁(yè)面中,注冊(cè)用戶(hù)可以執(zhí)行發(fā)表新主題的

101、操作,對(duì)游客而言,則不能實(shí)現(xiàn)此功能。這個(gè)功能是通過(guò)區(qū)分用戶(hù)登錄方式的不同而實(shí)現(xiàn)的,非注冊(cè)用戶(hù)點(diǎn)擊“發(fā)表新主題”的連接后會(huì)出現(xiàn)一個(gè)錯(cuò)誤提示及跳轉(zhuǎn)頁(yè)面,以提示用戶(hù)目前處于“非登錄用戶(hù)”狀態(tài),無(wú)權(quán)發(fā)表新主題。</p><p>  已注冊(cè)用戶(hù)成功登陸后,則可以進(jìn)行發(fā)表新主題的操作,運(yùn)行頁(yè)面效果如下:</p><p>  圖5-5 發(fā)表主題頁(yè)面</p><p>  成功發(fā)表后

102、,所發(fā)表主題會(huì)顯示在論壇版塊展示頁(yè)面下(圖5-4)。</p><p>  5.1.5 搜索主題</p><p>  和發(fā)表新主題不同,所有的用戶(hù)都能夠執(zhí)行搜索主題的操作。在論壇版塊展示頁(yè)面點(diǎn)擊“搜索主題“鏈接,進(jìn)入到搜索主題頁(yè)面。</p><p><b>  圖5-6 搜索頁(yè)面</b></p><p>  圖5-7 搜

103、索結(jié)果頁(yè)面</p><p>  5.1.6 查看及回復(fù)主題</p><p>  點(diǎn)擊主題鏈接,進(jìn)入主題查看頁(yè)面。</p><p>  圖5-8 主題顯示頁(yè)面</p><p>  在此頁(yè)面,用戶(hù)點(diǎn)擊“回復(fù)”按鈕,即可進(jìn)入到回復(fù)主題頁(yè)面,運(yùn)行效果如下。</p><p>  圖5-9 主題回復(fù)頁(yè)面</p>&l

104、t;p>  在此,需要說(shuō)明的是:為了美化回復(fù)的效果,在此加入了Fckeditor網(wǎng)頁(yè)編輯器。具體實(shí)現(xiàn)步驟為:首先從網(wǎng)上下載一個(gè)Fckeditor,將解壓文件拷貝到工程“WebRoot”目錄下,然后到壓縮包解壓文件“FCKeditor2.6.4 ”下的路徑:“\fckeditor\_samples\html\sample02.html”下,打開(kāi)靜態(tài)頁(yè)“sample02.html”,然后將其代碼復(fù)制、粘貼到回復(fù)頁(yè)面“reply.jsp

105、”。修改即可。修改后的代碼段如下:</p><p>  <!-- fckeditor --></p><p>  <script type="text/javascript" src="FCKeditor/fckeditor.js"></script></p><p>  <scrip

106、t type="text/javascript"></p><p>  window.onload = function()</p><p><b>  {</b></p><p>  // Automatically calculates the editor base path based on the _samp

107、les directory.</p><p>  // This is usefull only for these samples. A real application should use something like this:</p><p>  // oFCKeditor.BasePath = '/fckeditor/' ;// '/fckeditor

108、/' is the default value.</p><p>  var sBasePath = "<%=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath()+"/FCKeditor/&

109、quot;%>";</p><p>  var oFCKeditor = new FCKeditor( 'cont' ) ;</p><p>  oFCKeditor.BasePath= sBasePath ;</p><p>  oFCKeditor.ReplaceTextarea() ;</p><p>

110、<b>  }</b></p><p><b>  </script></b></p><p>  <!-- end of fckeditor --></p><p>  點(diǎn)擊提交,回復(fù)內(nèi)容會(huì)顯示在上級(jí)頁(yè)面。</p><p>  圖5-10 回復(fù)后主題顯示頁(yè)面</p&g

111、t;<p>  5.1.7 優(yōu)化主題的一些小設(shè)計(jì)</p><p><b>  1>信息統(tǒng)計(jì)</b></p><p> ?。?)、帖子查看量與回復(fù)量的統(tǒng)計(jì)</p><p>  如圖5-4所示,在論壇版塊的展示頁(yè)面,會(huì)有“查看”、“回復(fù)”兩個(gè)代表帖子被查看量和被回復(fù)量的信息提示,這個(gè)是通過(guò)對(duì)article表設(shè)置的兩個(gè)冗余變量“v

112、iewCount”和“replyCount”來(lái)實(shí)現(xiàn)的。在用戶(hù)每次執(zhí)行查看或者回復(fù)的時(shí)候,就對(duì)變量實(shí)行“++”的操作,從而達(dá)到統(tǒng)計(jì)次數(shù)的目的。</p><p>  那么,如何判斷某個(gè)帖子被查看或被回復(fù)了呢?</p><p>  這個(gè)過(guò)程是通過(guò)設(shè)置Session對(duì)象來(lái)實(shí)現(xiàn)的。在論壇板塊頁(yè)面(圖5-4)添加如下語(yǔ)句,以判斷帖子的查看情況。</p><p>  sessio

113、n.setAttribute(“isView”,”true”);</p><p>  對(duì)帖子的回復(fù)動(dòng)作系統(tǒng)也做了相應(yīng)操作,在回復(fù)信息提交后,系統(tǒng)添加了一個(gè)過(guò)渡頁(yè)面“replyDeal.jsp”,如果此頁(yè)面被激活,并且所回復(fù)內(nèi)容被順利添加到數(shù)據(jù)庫(kù)后,就執(zhí)行replyCount++的操作;反之,則不作任何操作。</p><p> ?。?)、版塊內(nèi)帖子查看量和帖子發(fā)表總量的統(tǒng)計(jì)</p>

114、;<p>  在論壇首頁(yè),如圖3-1所示,也會(huì)有兩個(gè)統(tǒng)計(jì)信息的存在,即:帖子總查看量和帖子發(fā)表總量。有了帖子查看量的計(jì)算方法,帖子總查看量的獲得則變得相當(dāng)容易,只需一句sql語(yǔ)句即可實(shí)現(xiàn)。以下是具體的代碼實(shí)現(xiàn):</p><p>  List<Article> articles = new ArrayList<Article>();</p><p>  

115、Connection conn = DB.getConn();//創(chuàng)建與數(shù)據(jù)庫(kù)的連結(jié)</p><p>  Statement stmt = DB.createStmt(conn);//通過(guò)連結(jié)創(chuàng)建Statement對(duì)象</p><p>  String sql = "select * from article"; </p><p>  Re

116、sultSet rs = DB.executeQuery(stmt, sql );//執(zhí)行sql語(yǔ)句,并返回結(jié)果集</p><p>  while (rs.next()) {</p><p>  Article a = new Article();</p><p>  a.initFromRs(rs);</p><p>  articles

117、.add(a);</p><p><b>  }</b></p><p><b>  //記錄總查看量</b></p><p>  int totalViewNum=0;</p><p><b>  //記錄帖子總數(shù)</b></p><p>  int

118、totalArticleNum=0;</p><p>  /*查詢(xún)出帖子的總查看量*/</p><p>  for (Iterator<Article> it = articles.iterator(); it.hasNext();) {</p><p>  Article a = it.next();</p><p>  tot

溫馨提示

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

評(píng)論

0/150

提交評(píng)論