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

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(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>  題  目:  基于SSH框架的論壇的設(shè)計(jì)與實(shí)現(xiàn)   </p><p>  學(xué)生姓名:   學(xué)號(hào): </p><p>  系(部): 數(shù)學(xué)與計(jì)算機(jī)科學(xué)系 專業(yè): 計(jì)算機(jī)科學(xué)技術(shù) </p><p>  入學(xué)時(shí)間: 

2、 201   年   9    月</p><p>  導(dǎo)師姓名:     職稱/學(xué)位:  </p><p>  導(dǎo)師所在單位:       </p><p>  基于SSH框架的論壇的設(shè)計(jì)與實(shí)現(xiàn)</p><p><b>

3、;  摘 要</b></p><p>  為了方便信息的交流,在結(jié)合JAVA和S.S.H 技術(shù)之下開(kāi)發(fā)了這個(gè)快捷、界面友好的交流系統(tǒng),實(shí)現(xiàn)了一個(gè)功能相對(duì)齊全的論壇系統(tǒng),網(wǎng)友可以自由地提出問(wèn)題以及幫助他人解決問(wèn)題,或者交流經(jīng)驗(yàn)。論壇在Struts+Hibernate+Spring擴(kuò)展Struts框架的基礎(chǔ)上,用當(dāng)今主流的網(wǎng)站開(kāi)發(fā)技術(shù)jsp語(yǔ)言進(jìn)行開(kāi)發(fā)。論壇將采用B/S體系結(jié)構(gòu),人們通過(guò)瀏覽器就可以

4、訪問(wèn)論壇網(wǎng)站的主頁(yè),保證的服務(wù)器的安全。數(shù)據(jù)庫(kù)采用免費(fèi),小巧,易用的mysql數(shù)據(jù)庫(kù)。本網(wǎng)站嚴(yán)格按照軟件項(xiàng)目開(kāi)發(fā)的流程進(jìn)行開(kāi)發(fā),對(duì)于網(wǎng)站開(kāi)發(fā)的可行性分析、需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)都有詳細(xì)的論述和實(shí)現(xiàn)過(guò)程。 Struts框架的引入是為了將系統(tǒng)顯示層和業(yè)務(wù)層進(jìn)行分離,從而可改變系統(tǒng)頁(yè)面中穿插功能代碼的缺陷性。Spring框架的引入除了可以很好的為中間層服務(wù)以外,還能實(shí)現(xiàn)與上下層之間的兼容,達(dá)到各層相互獨(dú)立的目的,從而可大大降低各層之間耦

5、合度。Hibernate框架用于完善Spring框架對(duì)JDBC的封裝。該系統(tǒng)的投入使用,打破了校園門戶網(wǎng)站的“平面化”,更富有親和力和凝聚力,為高校思想政治教育工作者提供了參考,為教師學(xué)生間的教學(xué)交流開(kāi)拓</p><p>  關(guān)鍵詞:論壇 ;S.S.H;JAVA;MySQL;JSP</p><p>  Design and Implementation of the Online Foru

6、m BBS System Based on the SSH Framework</p><p><b>  Abstract</b></p><p>  In order to facilitate the teachers and students information the exchange,in unified JAVA and S.S.H under th

7、e server technology has developed this quick truncation, the contact surface friendly teachers and students alternating-current system.realized a function relatively complete forum system, the net friend has been possibl

8、e freely to propose the question as well as helped other people to solve the problem, or exchange experience.This BBS prepares to expand the Struts frame in Struts + Hibern</p><p>  Keywords : bbs ; S.S.H; j

9、ava ; mysql ; jsp</p><p><b>  目 錄</b></p><p>  第 1 章 緒 論1</p><p><b>  1.1總體概述1</b></p><p>  1.2發(fā)展與現(xiàn)狀1</p><p>  1.3開(kāi)發(fā)目的和意義2&l

10、t;/p><p>  第 2 章 系統(tǒng)分析3</p><p>  2.1技術(shù)可行性分析3</p><p>  2.1.1 開(kāi)發(fā)語(yǔ)言綜述3</p><p>  2.1.2 MySQL數(shù)據(jù)庫(kù)的選用3</p><p>  2.1.3 S.S.H框架的優(yōu)點(diǎn)4</p><p>  2.1.4熱點(diǎn)技術(shù)

11、6</p><p>  2.1.5系統(tǒng)層次設(shè)計(jì)6</p><p>  2.16技術(shù)可行性綜述7</p><p>  2.2 系統(tǒng)需求分析7</p><p>  2.2.1系統(tǒng)需要支持的環(huán)境7</p><p>  2.2.2開(kāi)發(fā)環(huán)境7</p><p>  第 3 章系統(tǒng)的功能模塊和其流

12、程分析8</p><p>  3.1 BBS系統(tǒng)的用例描述和功能模塊8</p><p>  3.1.1主要功能的組成8</p><p>  3.1.2系統(tǒng)的三大功能模塊8</p><p>  3.2各功能模塊的流程10</p><p>  3.2.1 BBS系統(tǒng)的用戶模塊流程10</p>&l

13、t;p>  3.2.2 BBS系統(tǒng)的帖子模塊流程11</p><p>  3.2.3后臺(tái)管理功能模塊流程12</p><p>  第 4 章BBS系統(tǒng)設(shè)計(jì)13</p><p>  4.1 BBS數(shù)據(jù)庫(kù)設(shè)計(jì)13</p><p>  4.1.1數(shù)據(jù)庫(kù)概要設(shè)計(jì)(E-R圖)13</p><p>  4.1.2數(shù)

14、據(jù)庫(kù)的詳細(xì)設(shè)計(jì)17</p><p>  4.2系統(tǒng)功能設(shè)計(jì)20</p><p>  4.2.1功能模塊設(shè)計(jì)20</p><p>  4.2.2系統(tǒng)界面設(shè)計(jì)21</p><p>  4.2.3 BBS組件設(shè)計(jì)22</p><p>  第 5 章系統(tǒng)的實(shí)現(xiàn)23</p><p>  5.1

15、類圖設(shè)計(jì)23</p><p>  5.2用戶功能模塊實(shí)現(xiàn)25</p><p>  5.2.1會(huì)員登錄與注銷25</p><p>  5.2.2新用戶注冊(cè)28</p><p>  5.2.3賬戶設(shè)置29</p><p>  5.3帖子功能模塊實(shí)現(xiàn)30</p><p>  5.3.1發(fā)表

16、帖子30</p><p>  5.3.2回復(fù)帖子32</p><p>  5.3.3搜索帖子35</p><p>  5.4后臺(tái)管理功能模塊實(shí)現(xiàn)36</p><p>  5.4.1版面管理36</p><p>  5.4.2會(huì)員管理38</p><p>  5.4.3組管理39&l

17、t;/p><p>  5.4.4搜索管理40</p><p><b>  結(jié)論43</b></p><p><b>  主要參考文獻(xiàn)44</b></p><p><b>  附錄46</b></p><p><b>  致 謝51<

18、;/b></p><p>  基于SSH框架的論壇的設(shè)計(jì)與實(shí)現(xiàn)</p><p>  第 1 章 緒 論</p><p><b>  1.1總體概述</b></p><p>  進(jìn)入二十一世紀(jì),計(jì)算機(jī)技術(shù)迅速向著網(wǎng)絡(luò)化、集成化方向發(fā)展。傳統(tǒng)的單機(jī)版應(yīng)用軟件正在逐漸退出舞臺(tái),取而代之的是支持網(wǎng)絡(luò)、支持多種數(shù)據(jù)信息

19、(多媒體)的新一代網(wǎng)絡(luò)版應(yīng)用軟件,而目前網(wǎng)絡(luò)版軟件中似乎存在著兩種不同的趨勢(shì),一種是稱為客戶端——服務(wù)器的C/S結(jié)構(gòu),這類軟件具有結(jié)構(gòu)嚴(yán)謹(jǐn),運(yùn)行效率高,服務(wù)器端壓力小,安全性好等優(yōu)點(diǎn),被廣泛運(yùn)用于局域網(wǎng)中。而另一種,也是本畢業(yè)設(shè)計(jì)所采用的,是稱為瀏覽器——服務(wù)器的B/S結(jié)構(gòu),它的特點(diǎn)是在客戶端直接采用了功能強(qiáng)大的瀏覽器軟件作為界面,其優(yōu)點(diǎn)在于軟件開(kāi)發(fā)效率高,客戶端不受操作平臺(tái)的限制、也不受地域的限制,網(wǎng)絡(luò)傳輸量少,即適用于局域網(wǎng),更適用

20、于Internet,而且投資小、見(jiàn)效快,用戶可以不必進(jìn)行服務(wù)器方面的投資,而是去租用,甚至是免費(fèi)使用ISP的服務(wù)器資源,因而受到越來(lái)越多中小型單位的青睞。</p><p>  隨著Internet技術(shù)的不斷發(fā)展,以及用戶群爆炸性地增長(zhǎng),網(wǎng)絡(luò)不再僅僅是信息的被動(dòng)獲取來(lái)源,更成為人們探討間題、交換觀點(diǎn)的場(chǎng)所,其中,網(wǎng)上論壇扮演了極其重要的角色,隨著時(shí)間的推移,論壇站點(diǎn)中積存了豐富的信息資源,不但有各類技術(shù)資料和新聞文

21、檔,還包含著用戶的判斷和評(píng)論,論壇站點(diǎn)己成為Web信息庫(kù)的重要組成部分,自網(wǎng)上論壇誕生20多年以來(lái),隨著Web技術(shù)的發(fā)展,己經(jīng)由原來(lái)簡(jiǎn)單的電子公告板系統(tǒng)發(fā)展為功能豐富的網(wǎng)上論壇和虛擬社區(qū)模式。各種論壇隨著網(wǎng)絡(luò)迅速發(fā)展,幾乎充實(shí)著生活工作的每一個(gè)方面,無(wú)論是商界、政界,還是娛樂(lè)界,都有各種論壇?;ヂ?lián)網(wǎng)正在融入我們的生活,網(wǎng)絡(luò)提供給我們的不只是一個(gè)獲取信息的來(lái)源,而且還是一個(gè)可以相互交流的空間,網(wǎng)上論壇正是一種供人們進(jìn)行交流的網(wǎng)絡(luò)空間, 影

22、響和改變著我們的生活。</p><p><b>  1.2發(fā)展與現(xiàn)狀</b></p><p>  1978年在美國(guó)芝加哥開(kāi)發(fā)出一套基于8080芯片的CBBS/Chicago (Computerized Bulletin Board System/Chicago),此乃最早的一套BBS系統(tǒng)。之后隨著蘋果機(jī)的問(wèn)世,開(kāi)發(fā)出基于蘋果機(jī)的Bulletin Board Syste

23、m和大眾信息系統(tǒng)(Peoples Message System)2種BBS系統(tǒng)。1981年IBM個(gè)人計(jì)算機(jī)誕生時(shí),并沒(méi)有自己的BBS系統(tǒng)。直到1982年,Buss Lane 才用Basic語(yǔ)言為IBM個(gè)人計(jì)算機(jī)編寫了一個(gè)原型程序。其后經(jīng)過(guò)幾番增修,終于在1983年通過(guò)Capital PC User Group(CPCUG)的Communication Special Interest Group會(huì)員的努力,改寫出了個(gè)人計(jì)算機(jī)系統(tǒng)的BBS

24、。經(jīng)Thomas Mach整理后,終于完成了個(gè)人計(jì)算機(jī)的第1版BBS系統(tǒng)——RBBS-PC。這套BBS系統(tǒng)的最大特色是其源程序全部公開(kāi),有利于日后的修改和維護(hù),因此后來(lái)在開(kāi)發(fā)其他的BBS系統(tǒng)時(shí)都以此為框架,所以RBBS-PC贏得了BBS鼻祖的美稱。</p><p>  大約是從1991年開(kāi)始,國(guó)內(nèi)開(kāi)始了第一個(gè)BBS站。經(jīng)過(guò)長(zhǎng)時(shí)間的發(fā)展,直到1995年,隨著計(jì)算機(jī)及其外設(shè)的大幅降價(jià),BBS才逐漸被人們所認(rèn)識(shí)。199

25、6年更是以驚人的速度發(fā)展起來(lái)。國(guó)內(nèi)的BBS站,按其性質(zhì)劃分,可以分為2種:一種是商業(yè)BBS站,如新華龍訊網(wǎng);另一種是業(yè)余BBS站,如天堂資訊站。由于使用商業(yè)BBS站要交納一筆費(fèi)用,而商業(yè)站所能提供的服務(wù)與業(yè)余站相比,并沒(méi)有什么優(yōu)勢(shì),所以其用戶數(shù)量不多。多數(shù)業(yè)余BBS站的站長(zhǎng),基于個(gè)人關(guān)系,每天都互相交換電子郵件,漸漸地形成了一個(gè)全國(guó)性的電子郵件網(wǎng)絡(luò)China FidoNet(中國(guó)惠多網(wǎng))。于是,各地的用戶都可以通過(guò)本地的業(yè)余BBS站與遠(yuǎn)

26、在異地的網(wǎng)友互通信息。這種跨地域電子郵件交流正是商業(yè)站無(wú)法與業(yè)余站相抗衡的根本因素。由于業(yè)余BBS站擁有這種優(yōu)勢(shì),所以使用者都更樂(lè)意加入。這里“業(yè)余”2字,并不是代表這種類型的BBS站的服務(wù)和技術(shù)水平是業(yè)余的,而是指這類BBS站的性質(zhì)。一般BBS站都是由志愿者開(kāi)發(fā)的。他們付出的不僅是金錢,更多的是精力。其目的是為了推動(dòng)中國(guó)計(jì)算機(jī)網(wǎng)絡(luò)的健康發(fā)展,提高廣大計(jì)算機(jī)用戶的應(yīng)用水平。</p><p>  國(guó)內(nèi)的BBS站,大

27、多數(shù)還是大型綜合性BBS站。隨著計(jì)算機(jī)的普及,特別是寬帶的普及,BBS的活動(dòng)將會(huì)進(jìn)一步高漲。但是,隨之而來(lái)對(duì)專注于領(lǐng)域方面的BBS將會(huì)慢慢增加需求。盡管BBS站臺(tái)的數(shù)量在不斷增長(zhǎng),但BBS的發(fā)展過(guò)程,也出現(xiàn)了一些問(wèn)題。由于國(guó)內(nèi)使用的BBS架站軟件,都是從國(guó)外引進(jìn)的,因此沒(méi)有必要的中文說(shuō)明。雖然一些熱心的站長(zhǎng)翻譯了一些資料,但是僅靠這些是遠(yuǎn)遠(yuǎn)不夠的。另外,有些站臺(tái)的設(shè)立是相互抄襲,所以在結(jié)構(gòu)上難免有雷同之處。 </p>&l

28、t;p>  而國(guó)內(nèi)自己開(kāi)發(fā)的BBS基本上都是處于最原始的JSP MODEL1模式, 這種模式是控制層與表示層合二為一,雖然開(kāi)發(fā)簡(jiǎn)單,但是擁有很差的擴(kuò)展性,可維護(hù)性,這樣極大的限制了BBS站點(diǎn)的擴(kuò)展,于是在這種情況下,本文提出了目前比較流行的,基于MVC模式的S.S.H框架(Sturts+Spring+hibernate)的BBS論壇,本套論壇的優(yōu)點(diǎn)在于它具有強(qiáng)大的可擴(kuò)展性和可維護(hù)性,非常適合網(wǎng)民創(chuàng)建自己的中小型BBS論壇。<

29、/p><p>  1.3開(kāi)發(fā)目的和意義</p><p>  綜上所述,本文設(shè)計(jì)的是基于MVC模式的SSH框架(Sturts+Spring+Hibernate)的BBS論壇,本套論壇的優(yōu)點(diǎn)在于它具有強(qiáng)大的可擴(kuò)展性和可維護(hù)性,非常適合網(wǎng)民創(chuàng)建自己的中小型BBS論壇,能使用戶發(fā)表自己的想法,同時(shí)管理員可以管理論壇的情況,并在此基礎(chǔ)上實(shí)現(xiàn)學(xué)生和學(xué)生、學(xué)生和老師溝通和交流的功能。實(shí)現(xiàn)校園資源共享,為學(xué)生

30、提供一個(gè)交流的平臺(tái),為廣大學(xué)生者提供交流經(jīng)驗(yàn)、探討問(wèn)題的社區(qū)。提供文件的上傳與下載,實(shí)現(xiàn)資源與經(jīng)驗(yàn)的共享。</p><p>  第 2 章 系統(tǒng)分析</p><p>  2.1技術(shù)可行性分析</p><p>  2.1.1 開(kāi)發(fā)語(yǔ)言綜述</p><p>  本系統(tǒng)是基于面向?qū)ο笏枷氲腏AVA語(yǔ)言中J2EE平臺(tái)進(jìn)行編寫,J2EE平臺(tái)具有以下優(yōu)點(diǎn)

31、</p><p>  1.簡(jiǎn)化結(jié)構(gòu):J2EE平臺(tái)支持簡(jiǎn)化的、基于組件開(kāi)發(fā)模型,由于J2EE基于Java編程語(yǔ)言和J2SE平臺(tái),它提供了編寫一次,隨處運(yùn)行的可移植性,遵循J2EE標(biāo)準(zhǔn)的所有服務(wù)器都支持該模型。另外,J2EE還支持異構(gòu)環(huán)境。基于J2EE的應(yīng)用程序不依賴任何特定操作系統(tǒng)、中間件或硬件,因此,設(shè)計(jì)合理的基于J2EE的程序只需開(kāi)發(fā)一次就可以部署到各種平臺(tái),這在典型的異構(gòu)企業(yè)算環(huán)境中是十分關(guān)鍵的。J2EE標(biāo)準(zhǔn)

32、還允許客戶訂購(gòu)與J2EE兼容的第三方的現(xiàn)成組件,把其部署到異構(gòu)環(huán)境中,節(jié)省了由自己制訂整個(gè)方案所需的費(fèi)用。</p><p>  2. 提高開(kāi)發(fā)效率:由于組件技術(shù)的使用,可以按照開(kāi)發(fā)人員的技能對(duì)應(yīng)用程序開(kāi)發(fā)進(jìn)行分工,并行開(kāi)發(fā),提供整體開(kāi)發(fā)效率。例如:圖形設(shè)計(jì)師創(chuàng)建JSP模板,商業(yè)邏輯由該領(lǐng)域的專家完成,JSP頁(yè)面由Java工程師完成,應(yīng)用程序的裝配和部署由團(tuán)隊(duì)中其他的成員完成,其中許多工作可以同時(shí)進(jìn)行,有助于加速應(yīng)

33、用程序的開(kāi)發(fā)。</p><p>  3.可移植性強(qiáng):除了Java語(yǔ)言固有的可移植性外,SSH框架也有很好的可移植性,這是它為什么在許多地方可以替代EJB體系結(jié)構(gòu)的原因,這使開(kāi)發(fā)人員能夠?qū)⑵鋸囊环N操作環(huán)境移植到另一種操作環(huán)境,而無(wú)需重新編寫其源代碼。</p><p>  4.易于維護(hù):基于組件的設(shè)計(jì)簡(jiǎn)化了應(yīng)用程序的維護(hù)。由于組件可以被獨(dú)立地更新和替代,通過(guò)更新應(yīng)用程序中特定的組件,新的功能可

34、以被很容易地增加。</p><p>  5.可伸縮性:企業(yè)必須要選擇一種服務(wù)器端平臺(tái),以便滿足那些在它們系統(tǒng)上進(jìn)行商業(yè)動(dòng)作大批新客戶。基于J2EE平臺(tái)的應(yīng)用程序可被部署到各種操作系統(tǒng)上,例如,可被部署到高端UNIX或其他的大型機(jī)系統(tǒng)上。J2EE領(lǐng)域的供應(yīng)商提供了更為廣泛的負(fù)載平衡策略,能消除系統(tǒng)中的瓶頸,允許多臺(tái)服務(wù)器集成部署,實(shí)現(xiàn)可高度伸縮的系統(tǒng),滿足未來(lái)商業(yè)應(yīng)用的需要。</p><p>

35、;  7.被廣泛接受:主要的IT供應(yīng)用商都采納SSH,不同供應(yīng)商的產(chǎn)品只要符合SSH,就都是可互操作的。</p><p>  2.1.2 MySQL數(shù)據(jù)庫(kù)的選用</p><p>  MySQL是現(xiàn)在流行的關(guān)系數(shù)據(jù)庫(kù)中其中的一種,相比其它的數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)來(lái)說(shuō),MySQL具有小巧、功能齊全、查詢迅捷等優(yōu)點(diǎn),關(guān)鍵的是它是免費(fèi)的,可以在Internet上免費(fèi)下載到,并可免費(fèi)使用,對(duì)于一

36、般中小型,甚至大型應(yīng)用都能夠勝任。</p><p>  MySQL具有以下優(yōu)點(diǎn):</p><p>  1、首先是速度。對(duì)于MySQL來(lái)說(shuō),速度是他們追求的主要目標(biāo)之一,基于這個(gè)原因,MySQL在以前的文檔中也曾經(jīng)說(shuō)過(guò)并不準(zhǔn)備支持事務(wù)和觸發(fā)器。但現(xiàn)在的MySQL已經(jīng)可以支持事務(wù),而且在MySQL的TODO中,對(duì)觸發(fā)器、約束這樣的注定會(huì)降低速度的功能也列入了日程。但是,仍然有理由相信,MySQ

37、L將有可能一直保持速度的優(yōu)勢(shì)。</p><p>  2、MySQL更流行,流行對(duì)于一個(gè)商業(yè)軟件來(lái)說(shuō),也是一個(gè)很重要的指標(biāo),流行意味著更多的用戶,意味著經(jīng)受了更多的考驗(yàn),意味著更好的商業(yè)支持、意味著更多、更完善的文檔資料。</p><p>  3、MySQL更適宜在Windows環(huán)境下運(yùn)行。MySQL作為一個(gè)本地的Windows應(yīng)用程序運(yùn)行(在WinXP/Win7下,是一個(gè)服務(wù)), 在Win

38、dows運(yùn)行中,MySQL更加的穩(wěn)定。</p><p>  4、MySQL使用了線程,在不同線程之間的環(huán)境轉(zhuǎn)換和訪問(wèn)公用的存儲(chǔ)區(qū)域顯然要比在不同的進(jìn)程之間要快得多。</p><p>  5、MySQL在絕大多數(shù)情況下,你不需要為MySQL運(yùn)行任何清除程序。</p><p>  6、MySQL在權(quán)限系統(tǒng)上更為完善。MySQL允許你定義一整套的不同的數(shù)據(jù)級(jí)、表級(jí)和列級(jí)的

39、權(quán)限。對(duì)于列級(jí)的權(quán)限。MySQL還允許你指定基于主機(jī)的權(quán)限。</p><p>  7、計(jì)放式的開(kāi)發(fā)與分發(fā)。只要到MySQL的官方網(wǎng)站,或者義他相關(guān)的N站,即可下載MySQL的組件。如果對(duì)MySQL的某一個(gè)組件不滿,則可以將源代碼拿來(lái)自己修改,或者增添自己想要的功能。</p><p>  8、非常周到的技術(shù)支持。MySQL的任何版本都包含有內(nèi)容詳盡的參考指南。如果和MySQL的開(kāi)發(fā)者之間達(dá)成

40、協(xié)議,就可以從開(kāi)發(fā)者那里得到技術(shù)支持。此外,通過(guò)郵件列表也可以隨時(shí)在網(wǎng)上向MySLQ巳開(kāi)發(fā)組成員提問(wèn),通常很快就全得到回答。</p><p>  9、MySQL的MERGE表提供了一個(gè)獨(dú)特管理多個(gè)表的方法。</p><p>  10、MySQL的myisampack可以對(duì)只讀表進(jìn)行壓縮,此后仍然可以直接訪問(wèn)該表中的行。</p><p>  2.1.3 S.S.H框架

41、的優(yōu)點(diǎn)</p><p>  S.S.H框架是J2EE應(yīng)用中struts+spring+hibernate三大免費(fèi)開(kāi)源框架的結(jié)合使用, 它可以看成工具,也是中間件。他是用來(lái)提高我們的開(kāi)發(fā)效率,提高我們軟件產(chǎn)品的可維護(hù)性、可擴(kuò)展性乃至敏捷性的。他們里面有很多優(yōu)秀的設(shè)計(jì)理念及模式應(yīng)用。比如,struts屬于MVC框架,關(guān)鍵是要了解MVC的概念及大致原理;而hibernate屬于ORM系統(tǒng),屬于持久層的解決方案,同樣需要

42、對(duì)ORM的概念及原理有一個(gè)總體的了解。而spring屬于應(yīng)用程序框架,其核心是IOC容器以及AOP,Spring中還集成了很多適用東西,比如對(duì)JDBC的封裝、自己的MVC、對(duì)動(dòng)態(tài)語(yǔ)言的簡(jiǎn)潔訪問(wèn)等。</p><p>  它由以下3個(gè)框架構(gòu)成:</p><p>  1.Struts框架</p><p>  Struts是Apache組織的一個(gè)開(kāi)放源碼項(xiàng)目。Struts是

43、一個(gè)比較好的MVC框架,提供了對(duì)開(kāi)發(fā)MVC系統(tǒng)的底層支持,它采用的主要技術(shù)是Servlet,JSP和Custom tag library。其基本構(gòu)成如圖2.1所示。</p><p>  圖2.1 Struts框架概覽圖</p><p>  2.Spring框架</p><p>  Spring 的核心是個(gè)輕量級(jí)(Lightweight)的容器(Container)

44、,它是實(shí)現(xiàn)IoC(Inversion of Control)容器、非侵入性(No intrusive)的框架,并提供AOP(Aspect-oriented programming)概念的實(shí)現(xiàn)方式,提供對(duì)持久層(Persistence)、事務(wù)(Transaction)的支持,提供MVC Web 框架的實(shí)現(xiàn),并對(duì)一些常用的企業(yè)服務(wù)API(Application Interface)提供一致的模型封裝,是一個(gè)全方位的應(yīng)用程序框架(Applic

45、ation framework),除此之外,對(duì)于現(xiàn)存的各種框架(Struts、JSF、Hibernate 等),Spring 也提供了與它們相整合的方案。</p><p>  Spring框架由以下7個(gè)部分組成</p><p>  圖2.2 Spring框架構(gòu)成</p><p>  3.Hibernate框架</p><p>  Hiber

46、nate 是一個(gè)開(kāi)放源碼的 ORM 持久層框架。作為優(yōu)秀的持久層框架實(shí)現(xiàn),Hibernate 框架提供了強(qiáng)大、高性能的對(duì)象到關(guān)系型數(shù)據(jù)庫(kù)的持久化服務(wù),開(kāi)發(fā)人員可以使用面向?qū)ο蟮脑O(shè)計(jì)進(jìn)行持久層開(kāi)發(fā)。簡(jiǎn)單的說(shuō),Hibernate 只是一個(gè)將持久化類與數(shù)據(jù)庫(kù)表相映射的工具,每個(gè)持久化類實(shí)例均對(duì)應(yīng)于數(shù)據(jù)庫(kù)表中的一個(gè)數(shù)據(jù)行而已。用戶只需直接使用面向?qū)ο蟮姆椒ú僮鞔顺志没悓?shí)例,即可完成對(duì)數(shù)據(jù)庫(kù)表數(shù)據(jù)的插入、刪除、修改、讀取等操作。</p&g

47、t;<p>  圖2.3 Hibernate框架</p><p><b>  2.1.4熱點(diǎn)技術(shù)</b></p><p>  1、簡(jiǎn)單來(lái)說(shuō),Widget是指小工具,一系列的小工具通過(guò)一個(gè)特定的平臺(tái)(Widget: JI擎)為用戶展示不同的個(gè)性化的信息,例如天氣Widget、新聞Widget、股票Widget、IP查詢Widget等,這些都是可以自由定制

48、的,都依賴于Widget JI擎。Widget不但有桌面應(yīng)用.也有網(wǎng)頁(yè)服務(wù)應(yīng)用,如13Netvibes等個(gè)性化首頁(yè)。Widget能夠穿透不同的操作系統(tǒng),當(dāng)然,前提是Widget: JI擎能在不同的操作系統(tǒng)里運(yùn)行。</p><p>  2、Lucene是一套用于全文檢索和搜尋的開(kāi)源程式庫(kù),由Apache軟件基金會(huì)支持和提供。Lucene提供了一個(gè)簡(jiǎn)單卻強(qiáng)大的應(yīng)用程式接口,能夠做全文索引和搜尋。在Java開(kāi)發(fā)環(huán)境里L(fēng)

49、ucene是一個(gè)成熟的免費(fèi)開(kāi)源工具。就其本身而言,Lucene是目前以及最近幾年最受歡迎的免費(fèi)Java資訊檢索程式庫(kù)。Lucene的目的是為軟件開(kāi)發(fā)人員提供一個(gè)簡(jiǎn)單易用的工具包,以方便的在目標(biāo)系統(tǒng)中實(shí)現(xiàn)全文檢索的功能,或者是以此為基礎(chǔ)建立起完整的全文檢索引擎。</p><p>  2.1.5系統(tǒng)層次設(shè)計(jì)</p><p>  系統(tǒng)很據(jù)S.S.H框架的特點(diǎn),決定使用四層結(jié)構(gòu),這樣做的優(yōu)點(diǎn)是&l

50、t;/p><p>  (1)可以分層開(kāi)發(fā),訪問(wèn)數(shù)據(jù)庫(kù)與業(yè)務(wù)邏輯實(shí)現(xiàn)能夠分開(kāi)。</p><p>  (2)提高代碼的復(fù)用。</p><p>  圖2.4 BBS系統(tǒng)的分層結(jié)構(gòu)</p><p>  2.16技術(shù)可行性綜述</p><p>  綜上所述,這些成熟的框架和優(yōu)秀的設(shè)計(jì)思想,為系統(tǒng)建設(shè)提供了技術(shù)條件。計(jì)算機(jī)等基礎(chǔ)設(shè)施

51、的更新?lián)Q代也緊跟潮流的發(fā)展,這就為開(kāi)發(fā)系統(tǒng)提供了堅(jiān)實(shí)基礎(chǔ)。</p><p>  2.2 系統(tǒng)需求分析</p><p>  2.2.1系統(tǒng)需要支持的環(huán)境</p><p>  鑒于系統(tǒng)的開(kāi)發(fā)語(yǔ)言和數(shù)據(jù)庫(kù),采用如下的開(kāi)發(fā)環(huán)境</p><p>  運(yùn)行平臺(tái): Windows 7</p><p>  開(kāi)發(fā)工具:MyEclipse

52、2013</p><p>  服務(wù)器:MySQL5.6</p><p>  開(kāi)發(fā)語(yǔ)言: Java</p><p>  硬件實(shí)現(xiàn): 酷睿 4G內(nèi)存 720G硬盤</p><p>  預(yù)期成果: 一個(gè)可擴(kuò)展的基于MVC模式的 BBS論壇</p><p><b>  2.2.2開(kāi)發(fā)環(huán)境</b><

53、;/p><p> ?。?)Java SE</p><p>  包含兩個(gè)部分組成,它們分別是JDK和JRE,JDK是java程序員開(kāi)發(fā)java程序所需要的部分,JRE是java的運(yùn)行環(huán)境,我們開(kāi)發(fā)要求這兩部分都要安裝。</p><p>  (2)MyEclipse</p><p>  是在Java EE的Eclipse軟件基礎(chǔ)上安裝了許多插件的集合

54、,MyEclipse的功能非常強(qiáng)大,支持也非常廣泛所以說(shuō)MyEclipse可以非常成功的完成任務(wù)。</p><p>  第 3 章系統(tǒng)的功能模塊和其流程分析</p><p>  3.1 BBS系統(tǒng)的用例描述和功能模塊</p><p>  3.1.1主要功能的組成</p><p>  對(duì)于訪問(wèn)論壇的用戶,可分為注冊(cè)會(huì)員和為注冊(cè)的臨時(shí)用戶,這兩種

55、用戶有著不同的權(quán)限,比如臨時(shí)用戶只能對(duì)帖子進(jìn)行查看,而注冊(cè)會(huì)員除了查看帖子之外,還可以發(fā)帖,回復(fù),搜索帖子,并且可以對(duì)自己的注冊(cè)資料進(jìn)行修改等。而注冊(cè)用戶中的管理員可以對(duì)后臺(tái)進(jìn)行管理,如版面管理、組管理、會(huì)員管理等。則系統(tǒng)的用例圖如下:</p><p>  圖3.1 BBS系統(tǒng)用例圖</p><p>  3.1.2系統(tǒng)的三大功能模塊</p><p>  因?yàn)锽BS

56、系統(tǒng)是網(wǎng)上交流的系統(tǒng),根據(jù)用戶的需要和實(shí)際的管理?xiàng)l件,應(yīng)由用戶功能實(shí)現(xiàn),帖子功能實(shí)現(xiàn)和后臺(tái)管理等幾個(gè)模塊所構(gòu)成。以下是這幾個(gè)模塊要實(shí)現(xiàn)的功能:</p><p><b>  1.用戶功能實(shí)現(xiàn)</b></p><p><b>  (1).用戶的登錄</b></p><p><b>  (2).用戶的注冊(cè)</b&

57、gt;</p><p>  (3).用戶資料的修改</p><p><b>  2.帖子功能實(shí)現(xiàn)</b></p><p><b>  (1).帖子的發(fā)表</b></p><p><b>  (2).帖子的回復(fù)</b></p><p><b> 

58、 (3).帖子的搜索</b></p><p><b>  3. 后臺(tái)管理</b></p><p><b>  (1)版面管理</b></p><p><b>  (2)組管理</b></p><p><b>  (3)會(huì)員管理</b></

59、p><p><b>  (4)搜索管理</b></p><p>  則這些功能模塊的的用例圖如下:</p><p><b>  用戶功能模塊:</b></p><p>  圖3.2 用戶用例圖</p><p><b>  帖子功能模塊:</b></p

60、><p>  圖3.3 帖子用例圖</p><p><b>  后臺(tái)管理功能模塊:</b></p><p>  圖3.4 后臺(tái)用例圖</p><p>  3.2各功能模塊的流程</p><p>  本系統(tǒng)是為了提供給廣大用戶一個(gè)網(wǎng)上交流的平臺(tái),所以論壇的流程是以用戶為中心進(jìn)行的.數(shù)據(jù)流程圖是描述系

61、統(tǒng)數(shù)據(jù)流程的工具,它將數(shù)據(jù)獨(dú)立抽象出來(lái),通過(guò)圖形方式描述信息的來(lái)龍去脈和實(shí)際流程。為了描述復(fù)雜的軟件系統(tǒng)的信息流向和加工,可采用分層的DFD來(lái)描述,分層DFD有頂層,中間層、底層之分:</p><p>  ①頂層。決定系統(tǒng)的范圍,決定輸入輸出數(shù)據(jù)流,它說(shuō)明系統(tǒng)的邊界,把整個(gè)系統(tǒng)的功能抽象為一個(gè)加工,頂層DFD只有一張。</p><p> ?、谥虚g層。頂層之下是若干中間層,某一中間層既是它上

62、一層加工的分解結(jié)果,又是它下一層若干加工的抽象,即它又可進(jìn)一步分解。</p><p> ?、鄣讓印H粢粡圖FD的加工不能進(jìn)一步分解,這張DFD就是底層的了。底層DFD的加工是由基本加工構(gòu)成的,所謂基本加工是指不能再進(jìn)行分解的加工。</p><p>  3.2.1 BBS系統(tǒng)的用戶模塊流程</p><p>  圖3.5 用戶模塊流程圖</p><

63、p>  3.2.2 BBS系統(tǒng)的帖子模塊流程</p><p>  圖3.6 帖子模塊流程圖</p><p>  3.2.3后臺(tái)管理功能模塊流程</p><p>  圖3.7 后臺(tái)管理模塊流程圖</p><p>  第 4 章BBS系統(tǒng)設(shè)計(jì)</p><p>  4.1 BBS數(shù)據(jù)庫(kù)設(shè)計(jì)</p>&

64、lt;p>  4.1.1數(shù)據(jù)庫(kù)概要設(shè)計(jì)(E-R圖)</p><p>  數(shù)據(jù)庫(kù)設(shè)計(jì)是整個(gè)系統(tǒng)設(shè)計(jì)的重要部分,數(shù)據(jù)結(jié)構(gòu)的好壞將直接影響到應(yīng)用系統(tǒng)實(shí)現(xiàn)效果和數(shù)據(jù)操作效率。數(shù)據(jù)模型是是數(shù)據(jù)特征的抽象,從抽象層次上描述了系統(tǒng)的靜態(tài)特征、動(dòng)態(tài)行為和約束條件,為數(shù)據(jù)庫(kù)系統(tǒng)的信息表與操作提供一個(gè)抽象的框架。以下是系統(tǒng)的實(shí)體與其屬性圖。</p><p>  圖4.1 user實(shí)體與其屬性圖<

65、/p><p>  圖4.2 topic實(shí)體與其屬性圖</p><p>  圖4.3 bloglink實(shí)體與其屬性圖</p><p>  圖4.4 reply實(shí)體與其屬性圖</p><p>  圖4.5 systemprivilege實(shí)體與其屬性圖</p><p>  圖4.6 forum實(shí)體與其屬性圖</p

66、><p>  圖4.7 role_systemprivileges實(shí)體與其屬性圖</p><p>  圖4.8 user_role實(shí)體與其屬性圖</p><p>  圖4.9 category實(shí)體與其屬性圖</p><p>  圖4.10 datadictiem實(shí)體與其屬性圖</p><p>  圖4.11 op

67、erationlog實(shí)體與其屬性圖</p><p>  圖4.12 role實(shí)體與其屬性圖</p><p>  圖4.13 exceptionlog實(shí)體與其屬性圖</p><p>  其中主要實(shí)體(user、topic、forum)之間的E—R圖如下:</p><p>  圖4.14 user、topic與forum之間E-R圖<

68、/p><p>  4.1.2數(shù)據(jù)庫(kù)的詳細(xì)設(shè)計(jì)</p><p>  本系統(tǒng)采用Hibernate作為數(shù)據(jù)訪問(wèn)框架,首先通過(guò)設(shè)計(jì)良好結(jié)構(gòu)的領(lǐng)域?qū)嶓w類,然后由hbm配置文件來(lái)完成對(duì)象關(guān)系的映射工作。通過(guò)Hibernate來(lái)自動(dòng)管理數(shù)據(jù)庫(kù),設(shè)計(jì)數(shù)據(jù)庫(kù)同時(shí)用到了數(shù)據(jù)庫(kù)索弓丨的方法。索引是對(duì)數(shù)據(jù)庫(kù)表中一列或多列的值進(jìn)行排序的一種結(jié)構(gòu),使用索引可快速訪問(wèn)數(shù)據(jù)庫(kù)表中的特定信息。創(chuàng)建索引可以大大提高系統(tǒng)的性能。

69、索引是建立在數(shù)據(jù)庫(kù)表中的某些列上。一般來(lái)說(shuō),應(yīng)該在這些列上創(chuàng)建索引:</p><p> ?、僭诮?jīng)常需要搜索的列上,可以加快搜索的速度。</p><p>  ②在作為主鍵的列上,強(qiáng)制該列的唯一性和組織表中數(shù)據(jù)的排列結(jié)構(gòu)。</p><p> ?、墼诮?jīng)常用在連接的列上,這些列主要是一些外鍵,可以加快連接的速度;在經(jīng)常需要根據(jù)范圍進(jìn)行搜索的列上創(chuàng)建索引,因?yàn)樗饕呀?jīng)排序,其

70、指定的范圍是連續(xù)的。</p><p> ?、茉诮?jīng)常需要排序的列上創(chuàng)建索引,因?yàn)樗饕呀?jīng)排序,這樣查詢可以利用索引的排序,加快排序查詢時(shí)間。</p><p> ?、菰诮?jīng)常使用在WHERE子句中的列上面創(chuàng)建索引,加快條件的判斷速度。</p><p>  同樣,對(duì)于有些列不應(yīng)該創(chuàng)建索引。一般來(lái)說(shuō),不應(yīng)該創(chuàng)建索引的的這些列具有下列特點(diǎn):</p><p&g

71、t; ?、賹?duì)于那些在查詢中很少使用或者參考的列不應(yīng)該創(chuàng)建索引。這是因?yàn)?既然這些列很少使用到,因此有索引或者無(wú)索引,并不能提高查詢速度。相反,由于增加了索引,反而降低了系統(tǒng)的維護(hù)速度和增大了空間需求。</p><p> ?、趯?duì)于那些只有很少數(shù)據(jù)值的列也不應(yīng)該增加索引。</p><p> ?、蹖?duì)于那些定義為text,image和bit數(shù)據(jù)類型的列不應(yīng)該增加索引。</p>&l

72、t;p> ?、墚?dāng)修改性能遠(yuǎn)遠(yuǎn)大于檢索性能時(shí),不應(yīng)該創(chuàng)建索引。Hibernate采用了面向?qū)ο蠼5乃枷?通過(guò)設(shè)計(jì)子類繼承父類的方式完成數(shù)據(jù)庫(kù)表中類似的關(guān)聯(lián)外鍵的功能,這樣設(shè)計(jì)不僅能減少數(shù)據(jù)庫(kù)設(shè)計(jì)中冗余字段,更重要的是,它使得數(shù)據(jù)庫(kù)表的結(jié)構(gòu)合理、緊湊。</p><p>  本系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)的表包括:會(huì)員信息表(user)、帖子信息表(topic)、版塊信息表(forum)、登錄日子表(operationlog

73、)、異常日志表(exceptionlog)、回復(fù)信息表(reply)、角色表(role)、數(shù)據(jù)字典表(datadictitem)、Blog 鏈接表(bloglink)、系統(tǒng)權(quán)限表(systemprivilege )、分類目錄表(category)、角色權(quán)限表(role—systemprivilege)、會(huì)員角色表(user—role)。其中主要涉及到了 3張表,分別是會(huì)員信息表,帖子信息表,版塊信息表,字段屬性設(shè)計(jì)內(nèi)容分別如表:<

74、/p><p>  表4.1 會(huì)員基本信息描述表</p><p>  表4.2 板塊基本信息描述表</p><p>  表4.3 帖子基本信息表</p><p><b>  4.2系統(tǒng)功能設(shè)計(jì)</b></p><p>  根據(jù)需求分析的結(jié)果,對(duì)系統(tǒng)進(jìn)行詳細(xì)的概要設(shè)計(jì)。</p><

75、;p>  4.2.1功能模塊設(shè)計(jì)</p><p>  繪制出的用例圖,將本系統(tǒng)分為三個(gè)大的模塊,他們分別是會(huì)員資料模塊,帖子資料模塊和后臺(tái)管理模塊,本系統(tǒng)的功能層次圖如圖4.15所示</p><p>  圖4.15 BBS系統(tǒng)功能層次圖</p><p>  如圖4.15, bbs系統(tǒng)實(shí)現(xiàn)了如下的功能.</p><p><b>

76、;  (1).會(huì)員模塊:</b></p><p>  此模塊用來(lái)實(shí)現(xiàn)會(huì)員的登陸注冊(cè)和會(huì)員資料的修改和查找.</p><p><b>  1.會(huì)員登陸模塊:</b></p><p>  會(huì)員可以通過(guò)此模塊對(duì)論壇進(jìn)行登陸,登陸后便可以使用所有的會(huì)員功能,比如發(fā)帖回復(fù)等等.</p><p><b>  2

77、.會(huì)員注冊(cè)模塊:</b></p><p>  沒(méi)有會(huì)員帳號(hào)的用戶,可以通過(guò)此模塊添加會(huì)員信息,添加成功后便可登陸論壇,使用會(huì)員功能.</p><p><b>  3.資料修改模塊:</b></p><p>  已注冊(cè)的會(huì)員在登陸后,可以通過(guò)此模塊,對(duì)會(huì)員的基本資料,聯(lián)系方式,密碼,頭像等資料進(jìn)行修改.</p><

78、p><b>  (2).帖子模塊:</b></p><p><b>  1.帖子發(fā)表模塊:</b></p><p>  已注冊(cè)的會(huì)員在登陸后,可以在相應(yīng)的論壇中,發(fā)表或轉(zhuǎn)載自己的大作,發(fā)表成功后,其他會(huì)員便可以在相應(yīng)的論壇中看到這篇帖子,并可以對(duì)其進(jìn)行回復(fù)等操作.</p><p><b>  2.帖子回復(fù)模

79、塊:</b></p><p>  會(huì)員在發(fā)表完帖子后,用戶便可查看相關(guān)文章,并可以在文章中對(duì)已發(fā)表的帖子進(jìn)行回復(fù),</p><p><b>  3.帖子搜索模塊</b></p><p>  會(huì)員可以通過(guò)此模塊,根據(jù)帖子的標(biāo)題和作者,對(duì)相關(guān)的帖子進(jìn)行查找.</p><p><b>  (3)后臺(tái)管理&

80、lt;/b></p><p><b>  1.版面管理模塊</b></p><p>  管理員可以添加版塊,刪除版塊,修改版塊,還可以調(diào)整版塊順序。</p><p><b>  2.會(huì)員管理模塊</b></p><p>  管理員可以通過(guò)此模塊,對(duì)會(huì)員進(jìn)行管理,對(duì)一些不法的用戶可以修改或者刪除

81、資料,還可以鎖定用戶。</p><p><b>  3.角色管理模塊</b></p><p>  管理員對(duì)角色的添加,刪除,修改等功能都是在此模塊里進(jìn)行處理,設(shè)置默認(rèn)角色。</p><p><b>  4.搜索管理模塊</b></p><p>  管理員可以重新創(chuàng)建帖子索引。</p>

82、<p>  4.2.2系統(tǒng)界面設(shè)計(jì)</p><p>  對(duì)于系統(tǒng)來(lái)說(shuō),用戶界面設(shè)計(jì)將非常重要,因?yàn)橐粋€(gè)交互良好的界面能夠加深瀏覽者的印象.</p><p>  設(shè)計(jì)首頁(yè)的第一步是設(shè)計(jì)版面布局。我們可以將網(wǎng)頁(yè)看作傳統(tǒng)的報(bào)刊雜志來(lái)編輯,這里面有文字、圖像乃至動(dòng)畫,我們要做的工作就是以最適合的方式將圖片和文字排放在頁(yè)面的不同位置。</p><p>  設(shè)計(jì)是有原

83、則的,無(wú)論使用何種手法對(duì)畫面中的元素進(jìn)行組合,都一定要遵循五個(gè)大的原則:統(tǒng)一、連貫、分割、對(duì)比及和諧。</p><p>  統(tǒng)一,是指設(shè)計(jì)作品的整體性,一致性。設(shè)計(jì)作品的整體效果是至關(guān)重要的,在設(shè)計(jì)中切勿將各組成部分孤立分散,那樣會(huì)使畫面呈現(xiàn)出一種枝蔓紛雜的凌亂效果。</p><p>  連貫,是指要注意頁(yè)面的相互關(guān)系。設(shè)計(jì)中應(yīng)利用各組成部分在內(nèi)容上的內(nèi)在聯(lián)系和表現(xiàn)形式上的相互呼應(yīng),并注意

84、整個(gè)頁(yè)面設(shè)計(jì)風(fēng)格的一致性,實(shí)現(xiàn)視覺(jué)上和心理上的連貫,使整個(gè)頁(yè)面設(shè)計(jì)的各個(gè)部分極為融洽,猶如一氣呵成。</p><p>  分割,是指將頁(yè)面分成若干小塊,小塊之間有視覺(jué)上的不同,這樣可以使觀者一目了然。在信息量很多時(shí)為使觀者能夠看清楚,就要注意到將畫面進(jìn)行有效的分割。分割不僅是表現(xiàn)形式的需要。換個(gè)角度來(lái)講,分割也可以被視為對(duì)于頁(yè)面內(nèi)容的一種分類歸納。</p><p>  對(duì)比就是通過(guò)矛盾和沖

85、突,使設(shè)計(jì)更加富有生氣。對(duì)比手法很多,例如:多與少、曲與直、強(qiáng)與弱、長(zhǎng)與短、粗與細(xì)、疏與密、虛與實(shí)、主與次、黑與白、動(dòng)與靜、美與丑、聚與散等等。在使用對(duì)比的時(shí)候應(yīng)慎重,對(duì)比過(guò)強(qiáng)容易破壞美感,影響統(tǒng)一。</p><p>  和諧是指整個(gè)頁(yè)面符合美的法則,渾然一體。如果一件設(shè)計(jì)作品僅僅是色彩、形狀、線條等的隨意混合,那么作品將不但沒(méi)有“生命感”,而且也根本無(wú)法實(shí)現(xiàn)視覺(jué)設(shè)計(jì)的傳達(dá)功能。和諧不僅要看結(jié)構(gòu)形式,而且要看作品

86、所形成的視覺(jué)效果能否與人的視覺(jué)感受形成一種溝通,產(chǎn)生心靈的共鳴。這是設(shè)計(jì)能否成功的關(guān)鍵。</p><p>  圖4.16 BBS系統(tǒng)界面圖</p><p>  4.2.3 BBS組件設(shè)計(jì)</p><p>  本系統(tǒng)除了由Spring、Struts、Hibernate三大框架整合實(shí)現(xiàn)的領(lǐng)域?qū)嶓w層、DAO層、Service層以及Web層以外,還包括數(shù)據(jù)庫(kù)服務(wù)系統(tǒng)以及用

87、戶界面層。用戶界面層(UI)的設(shè)計(jì)也是本系統(tǒng)中重要的一環(huán),本系統(tǒng)的用戶界面包括登陸注冊(cè)、瀏覽帖子、發(fā)表帖子、搜索帖子、發(fā)表回復(fù)、賬戶設(shè)置和后臺(tái)管理等頁(yè)面。本系統(tǒng)的UI設(shè)計(jì)都是以相關(guān)的JSP文件以及JS (JavaScript)文件和CSS (層疊樣式表文件)文件配合完成。</p><p>  第 5 章系統(tǒng)的實(shí)現(xiàn)</p><p><b>  5.1類圖設(shè)計(jì)</b>&l

88、t;/p><p>  formbean 包中的類包括 ActionFormBase、BlogLinkActionForm、Category ActionForm、F orumActionForm、Reply ActionForm、Role ActionForm、T opicActionForm 、User ActionForm。詳細(xì)設(shè)計(jì)如圖5.1所示。</p><p>  圖5.1 form

89、bean包中類圖</p><p>  BBS系統(tǒng)前臺(tái)action類詳細(xì)設(shè)計(jì)如下圖所示。</p><p>  圖5.2 action包中類圖</p><p>  后臺(tái)管理action類詳細(xì)設(shè)計(jì)如下圖所示。</p><p>  圖5.3 Manage包中的類圖</p><p>  BBS系統(tǒng)接口詳細(xì)設(shè)計(jì)如下圖所示。&l

90、t;/p><p>  圖5.4 service包中的類圖</p><p>  BBS系統(tǒng)具體的實(shí)現(xiàn)類詳細(xì)設(shè)計(jì)如下圖所示。</p><p>  圖5.5 impl包中的類</p><p>  5.2用戶功能模塊實(shí)現(xiàn)</p><p>  5.2.1會(huì)員登錄與注銷</p><p>  用戶在有賬號(hào)的前

91、提下,可以在登錄頁(yè)面login.jsp或首頁(yè)index.jsp中輸入用戶名和密碼點(diǎn)擊登錄,系統(tǒng)將用戶名和密碼提交到UserAction.java中的loginG方法,將用戶提交的用戶名和密碼再轉(zhuǎn)交給后臺(tái)的DAO進(jìn)行處理,如果有這樣的一條記錄存在則登錄成功,將用戶的個(gè)人信息保存在瀏覽器端的Session中,否則返回登錄頁(yè)面,并提示用戶名或密碼錯(cuò)誤,</p><p>  這里是當(dāng)通過(guò)login.jsp或index.j

92、sp中輸入用戶名和密碼不正確是所要處理的代碼如下:</p><p>  if(window.frameElement != null){</p><p>  // 如果是從其他頁(yè)面中嵌套的登錄頁(yè)面(iframe等),失敗后應(yīng)讓整個(gè)窗口顯示登錄頁(yè)面</p><p>  // 方法1, 這樣不會(huì)把POST的參數(shù)傳遞過(guò)去</p><p>  //

93、parent.document.location.href = document.location.href;</p><p>  // 方法2, 使用這個(gè)方法。轉(zhuǎn)到登錄頁(yè)面,再加上顯示一個(gè)錯(cuò)識(shí)消息(只有失敗后才轉(zhuǎn)到這里來(lái))</p><p>  alert("用戶名或密碼不正確!");</p><p>  parent.document.loca

94、tion.href="<html:rewrite action='/user?method=loginUI'/>";</p><p><b>  }</b></p><p>  Index.jsp傳遞來(lái)的用戶名和密碼是通過(guò)以下代碼判斷其用戶名和密碼是否正確的。</p><p>  // 登陸失敗1

95、:用戶名或密碼不正確</p><p>  if (user == null) {</p><p>  addErrorMessage(request, "loginName", "用戶名或密碼不正確", false);</p><p>  return mapping.findForward("loginUI&quo

96、t;);</p><p><b>  }</b></p><p>  // 登陸失敗2:用戶被鎖定</p><p>  if (user.isLocked()) {</p><p>  addErrorMessage(request, "loginName", "用戶已被鎖定,不能登陸。請(qǐng)與

97、管理理員聯(lián)系", false);</p><p>  return mapping.findForward("loginUI");</p><p><b>  }</b></p><p>  // 1,用戶名密碼驗(yàn)證通過(guò),登陸用戶</p><p>  MemberAuthentication

98、Utils.login(request, user);</p><p>  // 2,如果選擇了自動(dòng)登錄,就啟動(dòng)自動(dòng)登錄</p><p>  if (actionForm.isAutoLogin()) {</p><p>  // 1, 發(fā)送Cookie并更新User中的autoLoginAuthKey</p><p>  // int au

99、toLoginDays = actionForm.getAutoLoginDays();</p><p>  // FIXME 默認(rèn)自動(dòng)登錄時(shí)間為30天</p><p>  int autoLoginDays = 30;MemberAutoLoginUtils.addAutoLoginCookieAndSetUserAutoLoginAuthKey(user, autoLoginDay

100、s, response);</p><p>  // 2, 保存到服務(wù)器端(數(shù)據(jù)庫(kù)中)</p><p>  userService.update(user);</p><p><b>  }</b></p><p>  // 3,返回到登錄前訪問(wèn)的頁(yè)面</p><p>  if (ReturnPa

101、thUtils.rediectPreviousPage(request, response)) {</p><p>  return null;</p><p><b>  } else {</b></p><p>  return mapping.findForward("index");</p><p

102、><b>  }</b></p><p>  圖5.6 系統(tǒng)登錄頁(yè)面</p><p>  登錄用戶在退出時(shí)注銷登錄狀態(tài),系統(tǒng)將請(qǐng)求交給UserAction.java的loginOut()方法處理,在loginOutO方法中修改用戶最后離線時(shí)間,將修改保存到數(shù)據(jù)庫(kù)中,并將瀏覽器端的Session的user屬性移除,系統(tǒng)返回主頁(yè)。用戶同時(shí)失去登錄用戶的權(quán)限,以游客

103、身份訪問(wèn),只能瀏覽主題,不能發(fā)表主題和回復(fù)。</p><p>  以下是注銷后系統(tǒng)所要做刪除自動(dòng)登錄的Cookie并返回到注冊(cè)前的訪問(wèn)的頁(yè)面</p><p>  public ActionForward logout(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse

104、 response)</p><p>  throws Exception {</p><p>  User user = MemberAuthenticationUtils.getLoggedOnUser(request);</p><p>  MemberAutoLoginUtils.delAutoLoginCookieAndClearUserAutoLogin

105、AuthKey(response, user);</p><p>  MemberAuthenticationUtils.logout(request);</p><p>  String returnPath = ReturnPathUtils.getReturnPathDefaultUseRefererHeaderValue(request);</p><p>

106、  if (ReturnPathUtils.rediectPreviousPage(request, response, returnPath)) {</p><p>  return null;</p><p><b>  } else {</b></p><p>  return mapping.findForward("inde

107、x");</p><p><b>  }</b></p><p><b>  }</b></p><p>  5.2.2新用戶注冊(cè)</p><p>  RegUser.jsp通過(guò)以下的代碼實(shí)現(xiàn)將用戶名、呢稱、密碼和其他個(gè)人信息傳遞給UserAction.jsp</p><

108、;p>  $(function(){</p><p>  $("input[name=loginName]").attr("minlength", "2");</p><p>  $("input[name=loginName]").attr("maxlength", "64

109、");</p><p>  $("input[name=nickname]").attr("minlength", "2");</p><p>  $("input[name=nickname]").attr("maxlength", "64");</p&

110、gt;<p>  $("input[name=password]").attr("minlength", "2");</p><p>  $("input[name=password]").attr("maxlength", "64");</p><p> 

111、 $("input[name=password2]").attr("equalTo", "input[name=password]");</p><p><b>  });</b></p><p>  以下是數(shù)據(jù)在UserAction.jsp處理過(guò)程的代碼</p><p>  if (

112、validateFailed(form, "forRegister", mapping, request)) { // 驗(yàn)證表單</p><p>  return mapping.findForward("regUserUI");</p><p><b>  }</b></p><p>  UserAct

113、ionForm actionForm = (UserActionForm) form;</p><p>  ActionErrors errors = new ActionErrors();</p><p>  // 檢測(cè)登錄名是否可用</p><p>  if (!userService.checkLoginName(actionForm.getLoginName

114、())) {</p><p>  errors.add("loginName", new ActionMessage("登錄名【" + actionForm.getLoginName() + "】已被使用,請(qǐng)更換", false));</p><p><b>  }</b></p><p&

115、gt;  // 檢測(cè)昵稱是否可用</p><p>  if (!userService.checkNickname(actionForm.getNickname())) {</p><p>  errors.add("nickname", new ActionMessage("昵稱【" + actionForm.getNickname() + &qu

116、ot;】已被使用,請(qǐng)更換", false));</p><p><b>  }</b></p><p>  if (errors.size() > 0) {</p><p>  addErrors(request, errors);</p><p>  return mapping.findForward

117、("regUserUI");</p><p><b>  }</b></p><p>  圖5.7 用戶注冊(cè)頁(yè)面</p><p><b>  5.2.3賬戶設(shè)置</b></p><p>  已登錄用戶可以點(diǎn)擊賬戶設(shè)置超鏈接到設(shè)置頁(yè)面,本頁(yè)面采用了 jquery技術(shù),jQuery

118、使用戶能更方便地處理HTML documents、events、實(shí)現(xiàn)動(dòng)畫效果,并且方便地為網(wǎng)站提供AJAX交互。sHdeToggleO方法通過(guò)使用滑動(dòng)效果(高度變化)來(lái)切換元素的可見(jiàn)狀態(tài)。如果被選元素是可見(jiàn)的,則隱藏這些元素,如果被選元素是隱藏的,則顯示這些元素。實(shí)現(xiàn)了將多個(gè)功能放在了同一個(gè)頁(yè)面,可以自由切換,用戶體驗(yàn)較好。本頁(yè)面可以修改密碼,修改個(gè)人基本信息,修改頭像。修改這些信息都只有登錄的用戶才可以使用,若session失效,則會(huì)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論