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

下載本文檔

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

文檔簡介

1、<p>  本科畢業(yè)設計(論文)</p><p>  題  目:  基于SSH框架的論壇的設計與實現(xiàn)   </p><p>  學生姓名:   學號: </p><p>  系(部): 數(shù)學與計算機科學系 專業(yè): 計算機科學技術 </p><p>  入學時間: 

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

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

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

5、合度。Hibernate框架用于完善Spring框架對JDBC的封裝。該系統(tǒng)的投入使用,打破了校園門戶網(wǎng)站的“平面化”,更富有親和力和凝聚力,為高校思想政治教育工作者提供了參考,為教師學生間的教學交流開拓</p><p>  關鍵詞:論壇 ;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開發(fā)目的和意義2&l

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

11、6</p><p>  2.1.5系統(tǒng)層次設計6</p><p>  2.16技術可行性綜述7</p><p>  2.2 系統(tǒng)需求分析7</p><p>  2.2.1系統(tǒng)需要支持的環(huán)境7</p><p>  2.2.2開發(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后臺管理功能模塊流程12</p><p>  第 4 章BBS系統(tǒng)設計13</p><p>  4.1 BBS數(shù)據(jù)庫設計13</p><p>  4.1.1數(shù)據(jù)庫概要設計(E-R圖)13</p><p>  4.1.2數(shù)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

30、提供一個交流的平臺,為廣大學生者提供交流經(jīng)驗、探討問題的社區(qū)。提供文件的上傳與下載,實現(xiàn)資源與經(jīng)驗的共享。</p><p>  第 2 章 系統(tǒng)分析</p><p>  2.1技術可行性分析</p><p>  2.1.1 開發(fā)語言綜述</p><p>  本系統(tǒng)是基于面向對象思想的JAVA語言中J2EE平臺進行編寫,J2EE平臺具有以下優(yōu)點

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

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

33、用程序的開發(fā)。</p><p>  3.可移植性強:除了Java語言固有的可移植性外,SSH框架也有很好的可移植性,這是它為什么在許多地方可以替代EJB體系結構的原因,這使開發(fā)人員能夠將其從一種操作環(huán)境移植到另一種操作環(huán)境,而無需重新編寫其源代碼。</p><p>  4.易于維護:基于組件的設計簡化了應用程序的維護。由于組件可以被獨立地更新和替代,通過更新應用程序中特定的組件,新的功能可

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

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

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

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

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

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

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

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

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

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

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

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

46、nate 是一個開放源碼的 ORM 持久層框架。作為優(yōu)秀的持久層框架實現(xiàn),Hibernate 框架提供了強大、高性能的對象到關系型數(shù)據(jù)庫的持久化服務,開發(fā)人員可以使用面向對象的設計進行持久層開發(fā)。簡單的說,Hibernate 只是一個將持久化類與數(shù)據(jù)庫表相映射的工具,每個持久化類實例均對應于數(shù)據(jù)庫表中的一個數(shù)據(jù)行而已。用戶只需直接使用面向對象的方法操作此持久化類實例,即可完成對數(shù)據(jù)庫表數(shù)據(jù)的插入、刪除、修改、讀取等操作。</p&g

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

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

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

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

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

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

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

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

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

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

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

58、 (3).帖子的搜索</b></p><p><b>  3. 后臺管理</b></p><p><b>  (1)版面管理</b></p><p><b>  (2)組管理</b></p><p><b>  (3)會員管理</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>  后臺管理功能模塊:</b></p><p>  圖3.4 后臺用例圖</p><p>  3.2各功能模塊的流程</p><p>  本系統(tǒng)是為了提供給廣大用戶一個網(wǎng)上交流的平臺,所以論壇的流程是以用戶為中心進行的.數(shù)據(jù)流程圖是描述系

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

62、一層加工的分解結果,又是它下一層若干加工的抽象,即它又可進一步分解。</p><p> ?、鄣讓?。若一張DFD的加工不能進一步分解,這張DFD就是底層的了。底層DFD的加工是由基本加工構成的,所謂基本加工是指不能再進行分解的加工。</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后臺管理功能模塊流程</p><p>  圖3.7 后臺管理模塊流程圖</p><p>  第 4 章BBS系統(tǒng)設計</p><p>  4.1 BBS數(shù)據(jù)庫設計</p>&

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

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

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

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

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

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

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

71、t; ?、賹τ谀切┰诓樵冎泻苌偈褂没蛘邊⒖嫉牧胁粦搫?chuàng)建索引。這是因為,既然這些列很少使用到,因此有索引或者無索引,并不能提高查詢速度。相反,由于增加了索引,反而降低了系統(tǒng)的維護速度和增大了空間需求。</p><p>  ②對于那些只有很少數(shù)據(jù)值的列也不應該增加索引。</p><p>  ③對于那些定義為text,image和bit數(shù)據(jù)類型的列不應該增加索引。</p>&l

72、t;p> ?、墚斝薷男阅苓h遠大于檢索性能時,不應該創(chuàng)建索引。Hibernate采用了面向對象建模的思想,通過設計子類繼承父類的方式完成數(shù)據(jù)庫表中類似的關聯(lián)外鍵的功能,這樣設計不僅能減少數(shù)據(jù)庫設計中冗余字段,更重要的是,它使得數(shù)據(jù)庫表的結構合理、緊湊。</p><p>  本系統(tǒng)數(shù)據(jù)庫設計的表包括:會員信息表(user)、帖子信息表(topic)、版塊信息表(forum)、登錄日子表(operationlog

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

93、parent.document.location.href = document.location.href;</p><p>  // 方法2, 使用這個方法。轉到登錄頁面,再加上顯示一個錯識消息(只有失敗后才轉到這里來)</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傳遞來的用戶名和密碼是通過以下代碼判斷其用戶名和密碼是否正確的。</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", "用戶已被鎖定,不能登陸。請與

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

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

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

100、s, response);</p><p>  // 2, 保存到服務器端(數(shù)據(jù)庫中)</p><p>  userService.update(user);</p><p><b>  }</b></p><p>  // 3,返回到登錄前訪問的頁面</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)登錄頁面</p><p>  登錄用戶在退出時注銷登錄狀態(tài),系統(tǒng)將請求交給UserAction.java的loginOut()方法處理,在loginOutO方法中修改用戶最后離線時間,將修改保存到數(shù)據(jù)庫中,并將瀏覽器端的Session的user屬性移除,系統(tǒng)返回主頁。用戶同時失去登錄用戶的權限,以游客

103、身份訪問,只能瀏覽主題,不能發(fā)表主題和回復。</p><p>  以下是注銷后系統(tǒng)所要做刪除自動登錄的Cookie并返回到注冊前的訪問的頁面</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新用戶注冊</p><p>  RegUser.jsp通過以下的代碼實現(xiàn)將用戶名、呢稱、密碼和其他個人信息傳遞給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處理過程的代碼</p><p>  if (

112、validateFailed(form, "forRegister", mapping, request)) { // 驗證表單</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>  // 檢測登錄名是否可用</p><p>  if (!userService.checkLoginName(actionForm.getLoginName

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

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

116、ot;】已被使用,請更換", 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 用戶注冊頁面</p><p><b>  5.2.3賬戶設置</b></p><p>  已登錄用戶可以點擊賬戶設置超鏈接到設置頁面,本頁面采用了 jquery技術,jQuery

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

溫馨提示

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

評論

0/150

提交評論