基于MVC的新聞發(fā)布系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)(電子商務(wù)論文)_第1頁
基于MVC的新聞發(fā)布系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)(電子商務(wù)論文)_第2頁
基于MVC的新聞發(fā)布系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)(電子商務(wù)論文)_第3頁
基于MVC的新聞發(fā)布系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)(電子商務(wù)論文)_第4頁
基于MVC的新聞發(fā)布系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)(電子商務(wù)論文)_第5頁
已閱讀5頁,還剩61頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、基于MVC模式的新聞發(fā)布系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)作者姓名:吳秋生專業(yè)班級:2003070505摘要:新聞發(fā)布系統(tǒng)是公司內(nèi)容管理系統(tǒng)的主要應(yīng)用之一,是公司信息化建設(shè)和實(shí)現(xiàn)電子商務(wù)的重要途徑。它的基本思想是分離新聞信息的內(nèi)容和表現(xiàn)形式,以期提高新聞發(fā)布效率。本設(shè)計(jì)采用基于UML用例驅(qū)動(dòng)對象建模的ICONIX項(xiàng)目管理方法,應(yīng)用MVC三層設(shè)計(jì)模式,實(shí)現(xiàn)一個(gè)可以完成新聞欄目和新聞信息的添加、修改、刪除以及新聞查看功能的新聞發(fā)布系統(tǒng)。關(guān)鍵字:ICONIX;MVC;Servlet;JavaBean;新聞發(fā)布 DesignandImplementationoftheNewsPublishingSystembasedo

2、nMVCmodelAbstract:ThenewspublishingsystemisthemainapplicationofContentManagementSysteminacompany,alsoitisanimportantapproachofthecompaniesinformationconstructionandtherealizationofE-Commerce.Theseparationofthecontentsandviewsofinformationinthenewsisitisthebasicidea,soastoadvancetheefficiencyofthenew

3、s.ThroughapplyingtheprojectmanagementmethodsofICONIX,whichisbasedonusecasedrivenobjectmodelingwithUML,andMVCdesignpattern,thispaperimplementanewspublishingsystemwithfunctionsofadding,editing,deletingthecategoryandnews,andbrowsingnewsmessage.Keywords:ICONIX;MVC;Servlet;JavaBean;NewsPublishing目錄TOC o

4、1-5 h z第1章前言1 HYPERLINK l bookmark8 第2章系統(tǒng)概述2 HYPERLINK l bookmark10 2.1項(xiàng)目管理方法22.1.1項(xiàng)目管理方法比較22.1.2項(xiàng)目管理方法選擇2 HYPERLINK l bookmark12 2.2設(shè)計(jì)模式3 HYPERLINK l bookmark14 MVC模式基本原理4 HYPERLINK l bookmark16 MVCModel15 HYPERLINK l bookmark18 MVCModel25 HYPERLINK l bookmark22 2.3小結(jié)6 HYPERLINK l bookmark24 第3章需求分

5、析7 HYPERLINK l bookmark26 3.1需求描述7 HYPERLINK l bookmark28 3.2角色識(shí)別8 HYPERLINK l bookmark30 3.3用例識(shí)別8 HYPERLINK l bookmark32 3.4用例文檔8 HYPERLINK l bookmark34 3.5用例驅(qū)動(dòng)分析10 HYPERLINK l bookmark36 3.6小結(jié)12 HYPERLINK l bookmark40 第4章系統(tǒng)設(shè)計(jì)13 HYPERLINK l bookmark42 4.1系統(tǒng)總體設(shè)計(jì)13 HYPERLINK l bookmark44 4.1.1系統(tǒng)構(gòu)架13

6、HYPERLINK l bookmark46 4.1.2發(fā)現(xiàn)系統(tǒng)類14 HYPERLINK l bookmark48 4.2視圖層設(shè)計(jì)15 HYPERLINK l bookmark50 4.2.1前臺(tái)設(shè)計(jì)15 HYPERLINK l bookmark52 4.2.2后臺(tái)設(shè)計(jì)16 HYPERLINK l bookmark60 4.3模型層設(shè)計(jì)184.3.1前臺(tái)顯示和用戶登錄184.3.2新聞管理194.3.3欄目管理20 HYPERLINK l bookmark76 4.4控制層設(shè)計(jì)21 HYPERLINK l bookmark78 4.4.1用戶登錄214.4.2新聞管理214.4.3欄目管理

7、22 HYPERLINK l bookmark84 4.5數(shù)據(jù)庫設(shè)計(jì)234.5.1數(shù)據(jù)庫需求分析234.5.2數(shù)據(jù)庫概念設(shè)計(jì)234.5.3數(shù)據(jù)庫邏輯設(shè)計(jì)244.5.4數(shù)據(jù)庫表設(shè)計(jì)24 HYPERLINK l bookmark86 4.6數(shù)據(jù)庫連接池設(shè)計(jì)25傳統(tǒng)的數(shù)據(jù)庫連接254.6.2數(shù)據(jù)庫連接池的必要性254.6.3數(shù)據(jù)庫連接池工作原理26 HYPERLINK l bookmark88 4.6.4具體設(shè)計(jì)26 HYPERLINK l bookmark90 4.7小結(jié)27 HYPERLINK l bookmark92 第5章系統(tǒng)實(shí)現(xiàn)28 HYPERLINK l bookmark94 5.1視圖

8、層實(shí)現(xiàn)28 HYPERLINK l bookmark96 5.1.1公共頁面285.1.2前臺(tái)實(shí)現(xiàn)295.1.3后臺(tái)實(shí)現(xiàn)30 HYPERLINK l bookmark102 5.2模型層實(shí)現(xiàn)325.2.1新聞顯示32 HYPERLINK l bookmark110 5.2.2新聞管理325.2.3欄目管理32 HYPERLINK l bookmark104 5.3控制層實(shí)現(xiàn)32 HYPERLINK l bookmark106 5.3.1用戶登錄335.3.2新聞管理335.3.3欄目管理34 HYPERLINK l bookmark114 5.4數(shù)據(jù)庫實(shí)現(xiàn)345.4.1數(shù)據(jù)庫表實(shí)現(xiàn)345.4.

9、2數(shù)據(jù)庫表關(guān)系35 HYPERLINK l bookmark118 5.5數(shù)據(jù)庫連接池實(shí)現(xiàn)36 HYPERLINK l bookmark120 5.6小結(jié)36 HYPERLINK l bookmark122 第6章系統(tǒng)運(yùn)行測試37 HYPERLINK l bookmark124 系統(tǒng)測試環(huán)境376.1.1系統(tǒng)測試硬件環(huán)境376.1.2系統(tǒng)測試軟件環(huán)境37Tomcat的配置37 HYPERLINK l bookmark126 6.2系統(tǒng)測試37 HYPERLINK l bookmark128 第7章系統(tǒng)評價(jià)與改進(jìn)39 HYPERLINK l bookmark130 7.1系統(tǒng)評價(jià)397.2系統(tǒng)改

10、進(jìn)39 HYPERLINK l bookmark132 結(jié)論40 HYPERLINK l bookmark134 致謝41 HYPERLINK l bookmark136 參考文獻(xiàn)42 HYPERLINK l bookmark148 附件43 第1章前言伴隨著網(wǎng)絡(luò)的出現(xiàn),網(wǎng)頁逐漸融入人們的生活??焖偌皶r(shí)的新聞瀏覽,五彩繽紛的網(wǎng)上信息,使網(wǎng)絡(luò)與人們的生活息息相關(guān),于是世界上出現(xiàn)了第三媒體Internet。它打破了地域限制,真正使信息得以共享,改變了人們的工作和生活方式。人們對信息的需求有了更新,更高的要求,而網(wǎng)頁由于本身所具有的信息量大,傳遞快速,沒有時(shí)空限制等特點(diǎn)恰好滿足這種要求。也正是由于網(wǎng)

11、絡(luò)實(shí)現(xiàn)網(wǎng)站的數(shù)據(jù)信息能夠進(jìn)行實(shí)時(shí)交互,保證網(wǎng)站數(shù)據(jù)的實(shí)時(shí)性。隨著Internet信息技術(shù)的高速發(fā)展,越來越多的企業(yè)想將自己企業(yè)的信息通過網(wǎng)絡(luò)與全世界分享并最終實(shí)現(xiàn)電子商務(wù),所以它們已經(jīng)建立或計(jì)劃建立自己的網(wǎng)站。但是,如果為了建立和維護(hù)自己的網(wǎng)站而聘請專職的網(wǎng)絡(luò)技術(shù)人員,其成本對于一個(gè)中小型企業(yè)來說實(shí)在是太高了。對于上面這類企業(yè)來說,他們最需要的就是一個(gè)現(xiàn)成的可以自動(dòng)發(fā)布信息的新聞發(fā)布系統(tǒng),這樣只要會(huì)打字,會(huì)上網(wǎng)就能利用新聞發(fā)布系統(tǒng)快速簡潔地發(fā)布企業(yè)信息。然而傳統(tǒng)的信息發(fā)布方式已經(jīng)不適應(yīng)這個(gè)快速變化的信息時(shí)代,需要一個(gè)更高效,更簡潔的方式進(jìn)行信息發(fā)布。內(nèi)容管理系統(tǒng)正是基于這樣一個(gè)目的而誕生的,它

12、是企業(yè)信息化建設(shè)和電子政務(wù)的新寵。它的基本思想是分離信息內(nèi)容和表現(xiàn)形式,內(nèi)容存儲(chǔ)在數(shù)據(jù)庫或獨(dú)立的文件中,而表現(xiàn)形式存儲(chǔ)在模版里。當(dāng)用戶請求頁面時(shí),各部分聯(lián)合生成一個(gè)標(biāo)準(zhǔn)的HTML頁面;當(dāng)信息修改時(shí),用戶只需在一個(gè)可視化的界面對信息內(nèi)容進(jìn)行修改。大大縮短了信息的更新時(shí)間,提高了效率,并且簡化了操作。本設(shè)計(jì)便是基于內(nèi)容管理思想的一個(gè)新聞發(fā)布系統(tǒng),以下各章從系統(tǒng)概述、需求分析、系統(tǒng)設(shè)計(jì)、系統(tǒng)實(shí)現(xiàn)、系統(tǒng)運(yùn)行測試和系統(tǒng)評價(jià)與改進(jìn)依次展現(xiàn)系統(tǒng)開發(fā)過程。第2章系統(tǒng)概述本章主要介紹在系統(tǒng)開發(fā)過程中所采用的軟件項(xiàng)目管理方法和系統(tǒng)設(shè)計(jì)模式。2.1項(xiàng)目管理方法2.1.1項(xiàng)目管理方法比較目前,面向?qū)ο筌浖_發(fā)的項(xiàng)目管

13、理方法主要有RUP、XP和ICONIX。RUP(RationalUnifiedProcess)統(tǒng)一軟件過程,是統(tǒng)一軟件開發(fā)過程,強(qiáng)調(diào)文檔、設(shè)計(jì)和代碼的質(zhì)量,采用動(dòng)態(tài)適應(yīng)變化的漸進(jìn)式迭代周期,依靠需求和測試驅(qū)動(dòng),并積極鼓勵(lì)客戶參與的開發(fā)方法。RUP是一個(gè)基于UML和構(gòu)件式構(gòu)架的迭代遞增型開發(fā)過程,更適用于大、中型軟件開發(fā)項(xiàng)目。XP極限編程(ExtremeProgramming,XP)是一門針對業(yè)務(wù)和軟件開發(fā)的規(guī)則,它將編碼和設(shè)計(jì)活動(dòng)融為一體,弱化了構(gòu)架的概念1。要求先開發(fā)出系統(tǒng)中最重要的特性,迅速向客戶提供所需功能,然后隨著代碼的演進(jìn)通過重構(gòu)來滿足新的要求,從而使整個(gè)項(xiàng)目的風(fēng)險(xiǎn)降到最小。XP是一

14、種漸進(jìn)式的原型化開發(fā)方法,反映的是以編程為中心,節(jié)省資源的觀念。它具有溝通高效,設(shè)計(jì)簡單,反饋迅速等特點(diǎn),是一種針對某些特定環(huán)境(需求變化快的小型開發(fā)團(tuán)隊(duì))的具體過程實(shí)施模型和方法論。ICONIX的規(guī)模大概在重量級的RationalUnifiedProcess(RUP)和輕量級的極限編程(XP)之間。和RUP一樣,ICONIX過程也是用例驅(qū)動(dòng)的,但不需要RUP使紀(jì)錄延續(xù)到表中帶來的大量開銷;和XP一樣,它相對較小,比較緊湊,但不像XP那樣摒棄了分析和設(shè)計(jì)過程。因此,有助于使用統(tǒng)一建模語言(UML),同時(shí)對需求進(jìn)行跟蹤。該過程遵循了IvarJacobson的“用例驅(qū)動(dòng)”的思想,能夠獲得有形、具體

15、、易于理解的用例,可以使用這些用例來驅(qū)動(dòng)開發(fā)工作。該過程的3個(gè)基本原則是:從用戶需求向內(nèi)進(jìn)行;從問題域的關(guān)鍵抽象向外進(jìn)行;從高級模型向下挖掘到詳細(xì)設(shè)計(jì)2。2.1.2項(xiàng)目管理方法選擇本系統(tǒng)選擇的項(xiàng)目管理方法是ICONIX,也許它并不是用于本系統(tǒng)開發(fā)最好的項(xiàng)目管理方法,當(dāng)然它也有很多缺點(diǎn)。本系統(tǒng)選擇它作為系統(tǒng)的軟件項(xiàng)目管理方法,第一是因?yàn)橄到y(tǒng)本身較簡單,采用ICONIX足以滿足系統(tǒng)需求,并且由于時(shí)間限制,本人沒有太多精力去學(xué)習(xí)更好的項(xiàng)目管理方法;第二是因?yàn)楹蛣e的軟件方法不同的是,ICONIX更強(qiáng)調(diào)需求到設(shè)計(jì)之前的自然、有章可循的,同時(shí)也適合迭代的過渡,并且按照它自己的軟件方法思想,它對UML符號(hào)集

16、在可擴(kuò)充的前提下作了一定的取舍。本系統(tǒng)選擇ICONIX項(xiàng)目管理方法,在系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)過程中,根據(jù)系統(tǒng)需要,對其進(jìn)行了適當(dāng)?shù)娜∩?。圖2-1是ICONIX項(xiàng)目管理方法過程的總圖。C圖2-1ICONIX總圖22.2設(shè)計(jì)模式隨著Web技術(shù)的發(fā)展,Web內(nèi)容從一些靜態(tài)頁面發(fā)展到內(nèi)容豐富的動(dòng)態(tài)頁面。目前,用于生成動(dòng)態(tài)網(wǎng)頁較為流行的技術(shù)有Microsoft的ASP、Tex的PHP和Sun的JSP。ASP只能工作在微軟的IIS(InternetInformationServer)和PWS(PersonalWebServer)上及PHP模式,一些天生缺陷使得它們的使用受到了一定的制約。而JSP是一種完全與平臺(tái)無

17、關(guān)的開發(fā)新技術(shù),它集極高的運(yùn)行效率,較短的開發(fā)周期,超強(qiáng)的擴(kuò)展能力,完全開放的技術(shù)標(biāo)準(zhǔn),自由的開發(fā)方式等眾多完美特性于一身。JSP+JavaBean+Servlet+JDBC+DBMS是一套能夠?qū)崿F(xiàn)動(dòng)態(tài)網(wǎng)站的開發(fā)和維護(hù)的技術(shù)。DBMS數(shù)據(jù)庫用于數(shù)據(jù)存儲(chǔ),JDBC用于連接數(shù)據(jù)庫并對數(shù)據(jù)庫進(jìn)行存儲(chǔ),Servlet用于處理過程控制,JavaBean用于封裝業(yè)務(wù)邏輯,JSP用于頁面顯示部分。而MVC正是這種設(shè)計(jì)模式代表。2.2.2MVC模式基本原理MVC(Model-View-Controller),即把一個(gè)應(yīng)用的輸入、處理、輸出流程按照Model,View,Controller的方式進(jìn)行分離,這樣一

18、個(gè)應(yīng)用被分成三個(gè)層模型層、視圖層、控制層,其三層之間的關(guān)系和功能如圖2-2“MVC組件類型關(guān)系和功能圖”。方法調(diào)用尸事件圖2-2MVC組件類型關(guān)系和功能圖3MVC設(shè)計(jì)模式的典型流程為:首先Controller接收用戶的請求,并決定應(yīng)該調(diào)用哪個(gè)Model來進(jìn)行處理,然后Model用業(yè)務(wù)邏輯來處理用戶的請求并返回?cái)?shù)據(jù),最后Controller用相應(yīng)的View格式化Model返回的數(shù)據(jù),并通過表示層呈現(xiàn)給用戶。控制層(Controller)可以理解為從用戶接收請求,將模型與視圖匹配在一起,共同完成用戶的請求。劃分控制層的作用也很明顯,它清楚地告訴我們,它就是一個(gè)分發(fā)器,選擇什么樣的模型,選擇什么樣的

19、視圖,可以完成什么樣的用戶請求??刂茖硬⒉蛔鋈魏蔚臄?shù)據(jù)處理。例如,用戶點(diǎn)擊一個(gè)鏈接,控制層接受請求后,并不處理業(yè)務(wù)信息,它只把用戶的信息傳遞給模型,告訴模型做什么,選擇符合要求的視圖返回給用戶。因此,一個(gè)模型可能對應(yīng)多個(gè)視圖,一個(gè)視圖可能對應(yīng)多個(gè)模型。模型層(Model)就是業(yè)務(wù)流程/狀態(tài)的處理以及業(yè)務(wù)規(guī)則的制定。業(yè)務(wù)流程的處理過程對其它層來說是黑箱操作,模型接受視圖請求的數(shù)據(jù),并返回最終的處理結(jié)果。業(yè)務(wù)模型的設(shè)計(jì)可以說是MVC最主要的核心,必須能夠滿足大多數(shù)客戶的需求,包括保證應(yīng)用程序各組件的事務(wù)整合、維護(hù)并快速獲取應(yīng)用數(shù)據(jù),支持事務(wù)工作流的協(xié)調(diào)以及在已有應(yīng)用程序中集成新的應(yīng)用組件等。MVC

20、并沒有提供模型的設(shè)計(jì)方法,而只告訴我們應(yīng)該組織管理這些模型,以便于模型的重構(gòu)和提高重用性。視圖層(View)代表用戶交互界面,對于Web應(yīng)用來說,可以概括為HTML界面,但有可能為XHTML,XML和Applet。隨著應(yīng)用的復(fù)雜性和規(guī)模性,界面的處理也變得具有挑戰(zhàn)性。一個(gè)應(yīng)用可能有很多不同的視圖,MVC設(shè)計(jì)模式對于視圖的處理僅限于視圖上數(shù)據(jù)的采集和處理,以及用戶的請求,而不包括在視圖上的業(yè)務(wù)流程的處理。業(yè)務(wù)流程的處理交予模型(Model)處理。MVCModel1在MVC模式的Model1體系中,JSP頁面獨(dú)立響應(yīng)請求并將出理結(jié)果返回客戶,所有的數(shù)據(jù)存取都是由JavaBean來完成。Modell

21、體系十分適合簡單應(yīng)用需要,卻不能滿足復(fù)雜的大型應(yīng)用程序的實(shí)現(xiàn)。MVCModel1的體系結(jié)構(gòu)如圖2-3所示。請求響應(yīng)JavaBean.:+JDBC*關(guān)系數(shù)據(jù)庫圖2-3MVCModell體系結(jié)構(gòu)圖5MVCModel2MVC模式的Model2體系結(jié)構(gòu)是一種把JSP與Servlet聯(lián)合起來實(shí)現(xiàn)動(dòng)態(tài)內(nèi)容服務(wù)的方法。它吸取了兩種技術(shù)的優(yōu)點(diǎn),用JSP生成表達(dá)層的內(nèi)容,讓Servlet完成深層次的處理任務(wù)。這是一種有代表性的方法,它清晰地分離了表達(dá)和內(nèi)容,明確了角色的定義及開發(fā)者與網(wǎng)頁設(shè)計(jì)者的分工。本系統(tǒng)的設(shè)計(jì)模式選擇的便是Model2。MVCModel2的體系結(jié)構(gòu)如圖2-4所示。瀏rlA*覽器TJITSer

22、vlet*JSPJavaBeanJDBC關(guān)系數(shù)據(jù)庫圖2-4MVCModel2體系結(jié)構(gòu)圖52.3小結(jié)本章首先介紹了目前面向?qū)ο蟮能浖_發(fā)中所常用的幾種項(xiàng)目管理方法,并最終根據(jù)系統(tǒng)需要選擇了ICONIX作為系統(tǒng)項(xiàng)目管理方法。然后對MVC設(shè)計(jì)模式基本原理進(jìn)行了詳細(xì)闡述,并介紹了MVC的兩種不同的模式Modell和Model2,并確定本系統(tǒng)的設(shè)計(jì)模式便是MVCModel2。第3章需求分析需求分析在軟件開發(fā)過程中,具有舉足輕重的地位,它具有決策性,方向性,策略性的作用。需求分析的任務(wù)就是要解決“做什么”的問題,就是要全面地理解用戶的各項(xiàng)需求,并準(zhǔn)確地表達(dá)所接受的用戶需求。3.1需求描述新聞發(fā)布系統(tǒng)功能需

23、求主要包括:前臺(tái)顯示功能和后臺(tái)管理功能。前臺(tái)顯示功能主要針對一般用戶的,當(dāng)一般用戶在瀏覽新聞系統(tǒng)時(shí),系統(tǒng)應(yīng)該對新聞欄目和新聞條目的顯示。另外,前臺(tái)顯示功能還應(yīng)包括一個(gè)提供給系統(tǒng)管理員登錄后臺(tái)的登錄入口。具體需求見表3-1系統(tǒng)前臺(tái)顯示需求表。表3-1系統(tǒng)前臺(tái)顯示需求表用戶要求實(shí)現(xiàn)功能一般用戶瀏覽新聞欄目一般用戶瀏覽新聞系統(tǒng)管理員登錄后臺(tái)系統(tǒng)后臺(tái)管理功能是針對系統(tǒng)管理員的,當(dāng)系統(tǒng)管理員登錄系統(tǒng)后臺(tái)時(shí),系統(tǒng)后臺(tái)提供給系統(tǒng)管理員的功能應(yīng)該有:對新聞欄目的瀏覽、添加、修改和刪除;對新聞條目的瀏覽、添加、修改和刪除。具體需求見表3-2系統(tǒng)后臺(tái)管理需求表。表3-2系統(tǒng)后臺(tái)管理需求表用戶要求實(shí)現(xiàn)功能系統(tǒng)管理員

24、瀏覽新聞欄目系統(tǒng)管理員添加新聞欄目系統(tǒng)管理員修改新聞欄目系統(tǒng)管理員刪除新聞欄目系統(tǒng)管理員瀏覽新聞系統(tǒng)管理員修改新聞系統(tǒng)管理員添加新聞系統(tǒng)管理員刪除新聞3.2角色識(shí)別角色識(shí)別的任務(wù)是找到所有可能與系統(tǒng)發(fā)生交互行為的外部實(shí)體、對象和系統(tǒng)。他們的行為不受系統(tǒng)控制,但是可以提供輸入信息。從系統(tǒng)描述可知,在前臺(tái)顯示模塊中,系統(tǒng)主要對一般用戶的瀏覽需求和管理員的登錄需求做出響應(yīng);而在后臺(tái)管理系統(tǒng)中,系統(tǒng)管理員可以對新聞欄目及新聞進(jìn)行瀏覽、添加、修改和刪除。所以本系統(tǒng)應(yīng)包括兩個(gè)角色:一般用戶和系統(tǒng)管理員用戶。而事實(shí)上這些人對于系統(tǒng)來說都是用戶,只是當(dāng)用戶登錄到后臺(tái)便成了管理員而已。因此,系統(tǒng)角色可以統(tǒng)一為:

25、用戶。3.3用例識(shí)別在UML文檔中,用例(即UseCase)的定義是:在不展現(xiàn)一個(gè)系統(tǒng)或子系統(tǒng)內(nèi)部結(jié)構(gòu)的情況下,對系統(tǒng)或子系統(tǒng)的某個(gè)連貫的功能單元的定義和描述6。用例識(shí)別的目標(biāo)是在需求描述和系統(tǒng)角色識(shí)別的基礎(chǔ)上,識(shí)別出角色相映的用例,從而可以得出系統(tǒng)的用例模型,如圖3-1是“系統(tǒng)用例模型圖”。圖3-1系統(tǒng)用例模型圖3.4用例文檔用例文檔主要為了描述出用例的詳細(xì)業(yè)務(wù)流程,本系統(tǒng)主要包括以下用例文檔:前臺(tái)顯示用例文檔:基本流程:當(dāng)用戶在前臺(tái)瀏覽新聞系統(tǒng)時(shí),系統(tǒng)默認(rèn)顯示給用戶的是所有欄目和所有新聞條目(每頁顯示8條新聞,一頁顯示不完可以分頁顯示)。當(dāng)用戶點(diǎn)擊某個(gè)欄目時(shí),系統(tǒng)顯示相應(yīng)的新聞條目。分支流

26、程:如果某個(gè)欄目下沒有任何新聞,系統(tǒng)將顯示一條信息,以指出該欄目沒有新聞可以顯示。(2)登錄入口用例文檔:基本流程:用戶在前臺(tái)顯示頁面提供的登錄后臺(tái)系統(tǒng)的登錄入口中輸入用戶信息,系統(tǒng)根據(jù)用戶的登錄信息進(jìn)行檢驗(yàn),然后進(jìn)入系統(tǒng)后臺(tái)管理系統(tǒng)。分支流程:如果用戶取消登錄,則系統(tǒng)將信息重置,用戶回到前臺(tái)顯示頁面。如果用戶輸入的信息不正確,系統(tǒng)將控制權(quán)交給“登錄錯(cuò)誤”頁面,用戶可以在此重新輸入用戶名和密碼進(jìn)行登錄。(3)系統(tǒng)后臺(tái)管理用例文檔:基本流程:用戶在登錄系統(tǒng)后臺(tái)后,可以對新聞和欄目進(jìn)行操作,根據(jù)用戶的操作選擇,進(jìn)入擴(kuò)展用例。(4)新聞管理用例文檔:基本流程:用戶進(jìn)入系統(tǒng)后便可瀏覽到新聞條目,在瀏覽

27、過程中,用戶可以修改和刪除新聞。用戶在進(jìn)行相應(yīng)的操作后,系統(tǒng)存儲(chǔ)新的信息,系統(tǒng)將控制權(quán)交給后臺(tái)管理用例。分支流程:如果用戶放棄對新聞的相應(yīng)操作,則系統(tǒng)直接將控制權(quán)交給后臺(tái)管理用例。如果用戶選擇添加新聞,系統(tǒng)將控制權(quán)交給添加新聞?dòng)美#?)添加新聞?dòng)美臋n:基本流程:用戶填寫新聞相關(guān)信息,并確定添加新聞時(shí),系統(tǒng)將存儲(chǔ)此新聞,并將控制權(quán)交給新聞管理用例。分支流程:如果用戶放棄新聞添加,系統(tǒng)將直接將控制權(quán)交回給新聞管理用例。(6)欄目管理用例文檔:基本流程:用戶在后臺(tái)管理中選擇欄目管理時(shí),用戶將瀏覽到系統(tǒng)已有欄目,并可對其進(jìn)行修改刪除操作,用戶在進(jìn)行相應(yīng)操作后,系統(tǒng)會(huì)存儲(chǔ)新的信息,控制權(quán)將回到欄目管

28、理用例。分支流程:如果用戶放棄相應(yīng)操作,控制權(quán)將直接回到欄目管理用例。如果用戶選擇添加欄目,控制權(quán)將交給添加欄目用例。(7)添加欄目用例文檔:基本流程:用戶填寫欄目相關(guān)信息,并確定添加欄目,系統(tǒng)將存儲(chǔ)此欄目,并將控制權(quán)交給欄目管理用例。分支流程:如果用戶放棄欄目添加,控制權(quán)將直接交回到欄目管理用例。3.5用例驅(qū)動(dòng)分析通過以上對系統(tǒng)需求的分析已經(jīng)定義了系統(tǒng)的角色和系統(tǒng)用例。系統(tǒng)根據(jù)用例模型可以對用例進(jìn)行細(xì)化,從而展現(xiàn)整個(gè)用例的活動(dòng)順序。序列圖則反映了用例各個(gè)類之間的具體調(diào)用過程7,如圖便是根據(jù)系統(tǒng)的角色分析和系統(tǒng)用例模型而得出的相應(yīng)活動(dòng)的順序圖如圖3-2至圖3-7。圖3-2前臺(tái)活動(dòng)順序圖c頂層包

29、:用戶圖3-5添加新聞活動(dòng)順序圖圖3-6欄目管理活動(dòng)順序圖欄目管理III=t添加欄曰f-J1|.II頂層包:用戶1:欄目管理.2:顯示欄目;3:添加欄目添加控制4:添加成功圖3-7添加欄目活動(dòng)順序圖3.6小結(jié)本章從用戶的角度,分析了系統(tǒng)的需求用例,畫出了系統(tǒng)用例模型圖,并得出了相應(yīng)的用例文檔;做出了用例驅(qū)動(dòng)分析,并得出了相應(yīng)的順序圖。本章的工作為系統(tǒng)的設(shè)計(jì)打下基礎(chǔ)。第4章系統(tǒng)設(shè)計(jì)根據(jù)上一章的需求用例分析,本章從先總體構(gòu)架的角度對系統(tǒng)進(jìn)行總體設(shè)計(jì),然后根據(jù)MVC三層模式對系統(tǒng)進(jìn)行詳細(xì)設(shè)計(jì),最后對系統(tǒng)數(shù)據(jù)庫和數(shù)據(jù)庫連接池進(jìn)行了設(shè)計(jì)。4.1系統(tǒng)總體設(shè)計(jì)4.1.1系統(tǒng)構(gòu)架系統(tǒng)基于MVCModel2設(shè)計(jì)

30、模式,設(shè)計(jì)出本系統(tǒng)自己的設(shè)計(jì)模式,在MVCModel2基礎(chǔ)上加入數(shù)據(jù)庫連接池模塊層對數(shù)據(jù)庫操作進(jìn)行封裝。具體模式圖如圖4-1。請求響應(yīng)瀏覽器圖4-1系統(tǒng)設(shè)計(jì)模式圖關(guān)系數(shù)據(jù)庫對于MVC設(shè)計(jì)模式,在本系統(tǒng)中具體實(shí)現(xiàn)方式是:Model由JavaBean完成,View由JSP完成,Controller由Servlet完成,再加上數(shù)據(jù)庫連接池專門負(fù)責(zé)數(shù)據(jù)庫連接和管理。本系統(tǒng)具體構(gòu)架如圖4-2。系統(tǒng)基本構(gòu)架視圖層View控制層Contriller模型層Model數(shù)據(jù)層DatabaseJSP調(diào)用返回JavaBean對-象ConnectionPeel圖4-2系統(tǒng)構(gòu)架圖4.1.2發(fā)現(xiàn)系統(tǒng)類發(fā)現(xiàn)系統(tǒng)類是域建模的工

31、作,其主要目的是根據(jù)系統(tǒng)需求用例及描述,找到代表與本新聞系統(tǒng)將要解決的問題有關(guān)的事務(wù)和概念的“對象”,即類1。在本系統(tǒng)中,根據(jù)第3章中對系統(tǒng)需求用例的分析,可以總結(jié)出如下的需求集:(1)系統(tǒng)應(yīng)該分為前臺(tái)和后臺(tái);(2)系統(tǒng)前臺(tái)應(yīng)該可以顯示新聞欄目和新聞以及用于管理員登錄系統(tǒng)后臺(tái)的登錄界面;(3)一般用戶應(yīng)該可以在前臺(tái)自由瀏覽新聞,包括選擇性地瀏覽新聞即先選擇新聞欄目再瀏覽新聞欄目下的新聞條目;用戶在瀏覽新聞時(shí),系統(tǒng)應(yīng)該可以將顯示給用戶一個(gè)包含新聞具體內(nèi)容的HTML文件;(4)系統(tǒng)管理員應(yīng)該可以登錄到系統(tǒng)后臺(tái);(5)系統(tǒng)管理員應(yīng)該可以對新聞欄目和新聞進(jìn)行查看、修改、刪除和添加操作。系統(tǒng)在添加新聞時(shí)

32、,應(yīng)該可以將添加的新聞保存為一個(gè)HTML文件。由以上需求集進(jìn)一步分析可知:(1)詞“系統(tǒng)”太模糊,不能成為一個(gè)對象的名稱;同樣,“前臺(tái)”和“后臺(tái)”為系統(tǒng)的兩個(gè)不同的區(qū)域,亦不能成為對象名稱;(2)“新聞欄目”和“新聞”為系統(tǒng)的兩個(gè)主要內(nèi)容,所以應(yīng)該分別作為一個(gè)類,而新聞欄目和新聞的顯示需要管理類進(jìn)行管理,系統(tǒng)管理員要對欄目和新聞進(jìn)行查看、添加、修改和刪除,也需要相應(yīng)的管理類進(jìn)行管理,所以,系統(tǒng)對于新聞欄目和新聞分別需要“欄目管理類”和“新聞管理類”;(3)要將添加的新聞保存為一個(gè)HTML文件,需要一個(gè)從表單中收集信息并將其轉(zhuǎn)換為一個(gè)HTML文件的類;(4)系統(tǒng)要保存信息,必須用到數(shù)據(jù)庫,所以需

33、要一個(gè)數(shù)據(jù)庫連接的類;(5)要將系統(tǒng)的各個(gè)功能執(zhí)行成功,少不了相應(yīng)的控制類。因此,識(shí)別出系統(tǒng)主要的類:新聞?lì)悾∟ews)和新聞管理類(NewsMgr),欄目類(Category)和欄目管理類(CategoryMgr),數(shù)據(jù)庫連接池的連接對象類(ConnectionObject)和連接池管理類(ConnectionPool)以及各個(gè)Servlet類。4.2視圖層設(shè)計(jì)4.2.1前臺(tái)設(shè)計(jì)當(dāng)一個(gè)用戶瀏覽新聞系統(tǒng)時(shí),首先進(jìn)入系統(tǒng)前臺(tái)界面。如果把一個(gè)系統(tǒng)比作一個(gè)人,那么前臺(tái)界面則是這個(gè)人的臉,因此系統(tǒng)的前臺(tái)界面的設(shè)計(jì)是比較重要的,并且,前臺(tái)界面應(yīng)該被設(shè)計(jì)得比較簡潔,方便。前臺(tái)界面設(shè)計(jì)如圖4-3所示。新聞系

34、統(tǒng)前臺(tái)登錄框一登錄圖4-3前臺(tái)界面設(shè)計(jì)圖首先,在本系統(tǒng)的前臺(tái)界面的頂部用戶可以看到一個(gè)專為系統(tǒng)管理員用戶提供的登錄入口,為系統(tǒng)管理員提供了方便。而對于一般用戶來說,他們也不會(huì)感覺這有何不妥,因?yàn)榇说卿浗缑姹容^簡潔,并不會(huì)影響用戶正常地閱讀新聞。其次,在登錄界面的下方是新聞欄目的顯示,顯示系統(tǒng)新聞欄目數(shù)據(jù)庫中已有的新聞欄目,一目了然,用戶可以方便地找到自己喜歡和關(guān)心的新聞所在的欄目。再次,在新聞欄目的下方則是新聞條目的顯示,默認(rèn)的新聞條目的顯示方式是以表格的形式將系統(tǒng)新聞數(shù)據(jù)表中的新聞按發(fā)布時(shí)間進(jìn)行列表(發(fā)布較早的新聞被放在列表的后面,而發(fā)布較遲的新聞被放在列表的前面,體現(xiàn)了新聞的“新”,即“時(shí)

35、效性”)。新聞列表中僅顯示新聞的標(biāo)題,發(fā)布時(shí)間和新聞作者,如果想瀏覽整篇新聞,用戶可以點(diǎn)擊新聞標(biāo)題(超鏈接),這時(shí)系統(tǒng)會(huì)將用戶引導(dǎo)向一個(gè)包含新聞具體內(nèi)容的HTML文件。然后,用戶可以對自己比較關(guān)心和感興趣的新聞進(jìn)行有選擇性地瀏覽,這時(shí)新聞欄目便起作用了。當(dāng)用戶點(diǎn)擊新聞所在的欄目時(shí),系統(tǒng)在新聞列表中只顯示本欄目的新聞條目。用戶可以在此瀏覽自己關(guān)心和感興趣的新聞。4.2.2后臺(tái)設(shè)計(jì)后臺(tái)主頁面設(shè)計(jì)當(dāng)用戶登錄到系統(tǒng)后臺(tái)時(shí),他便成為系統(tǒng)管理員,可以執(zhí)行對新聞和欄目的查看、修改、刪除和添加。此界面主要是面向管理員的,界面要設(shè)計(jì)得簡潔方便,使得系統(tǒng)管理員在管理系統(tǒng)時(shí)容易操作。后臺(tái)界面設(shè)計(jì)如圖4-4所示。回岡

36、歡迎詞(welcomeXX)I添加新聞丨欄目管理丨退出丨.刷新I主頁I圖4-4后臺(tái)管理系統(tǒng)主界面設(shè)計(jì)圖當(dāng)管理員用戶登錄到系統(tǒng)后臺(tái)時(shí),呈現(xiàn)到他眼前的是系統(tǒng)后臺(tái)管理的主頁面:首先,系統(tǒng)后臺(tái)主頁面左上角是歡迎詞(Welcome+管理員名),對于管理員,他可以感覺到系統(tǒng)的人性化;對于系統(tǒng)本身,系統(tǒng)可以識(shí)別此時(shí)登錄的是哪個(gè)管理員,可以分配管理員的權(quán)限。其次,歡迎詞下方是系統(tǒng)管理的功能選擇,一目了然,管理員可以在此選擇要操作的模塊進(jìn)入,然后執(zhí)行相應(yīng)的操作。再次,再往下就是系統(tǒng)新聞列表,與前臺(tái)新聞顯示類似,只是多了對新聞的操作(修改和刪除)。管理員可以在此對系統(tǒng)已有的新聞進(jìn)行修改和刪除操作。添加新聞設(shè)計(jì)如果

37、系統(tǒng)管理員在系統(tǒng)后臺(tái)主頁面中選擇“添加新聞”,管理員會(huì)進(jìn)入下圖這樣一個(gè)頁面進(jìn)行新聞的添加,添加完新聞標(biāo)題和新聞?wù)膬?nèi)容后,還必須選擇所添加新聞所屬的新聞欄目。確認(rèn)所有內(nèi)容均已填好,點(diǎn)擊“發(fā)表”按鈕,新聞發(fā)布工作完成,如果點(diǎn)擊“清除”按鈕,則系統(tǒng)清除管理員剛才的所有輸入,讓管理員重新填寫新聞的各項(xiàng)內(nèi)容。管理員可以在系統(tǒng)后臺(tái)主頁面中看到剛剛發(fā)表的新聞,可以對其進(jìn)行相關(guān)操作,如圖4-5。o發(fā)布新聞文章標(biāo)題:在此處輸入文章標(biāo)題圖4-5發(fā)布新聞頁面設(shè)計(jì)圖欄目管理設(shè)計(jì)如果系統(tǒng)管理員在系統(tǒng)后臺(tái)主頁面中選擇“欄目管理”,系統(tǒng)將鏈接到新聞欄目管理頁面。欄目管理頁面上有一些鏈接按鈕,可以讓管理員鏈接到其他頁面。鏈

38、接按鈕下面是系統(tǒng)已有新聞欄目的列表,在此,管理員可以對新聞發(fā)布系統(tǒng)的欄目進(jìn)行操作(編輯和刪除欄目)。如果管理員想要添加新聞欄目,只需點(diǎn)擊“添加欄目”,就可以被鏈接到添加新聞欄目頁面(因?yàn)榇隧撁姹容^簡單,所以并未給出具體設(shè)計(jì)圖),添加欄目完成后,管理員可以在欄目管理主頁面的欄目列表中找到新添加的欄目,并對其進(jìn)行相關(guān)操作,如圖4-6。圖4-6欄目管理頁面設(shè)計(jì)圖4.3模型層設(shè)計(jì)本系統(tǒng)模型層由JavaBean完成,模型層設(shè)計(jì)主要設(shè)計(jì)出完成各個(gè)功能模塊中模型層的JavaBean類。模型層的類主要有新聞?lì)怤ews和新聞管理類NewsMgr以及欄目類Category和欄目管理類CategoryMgr。4.3

39、.1前臺(tái)顯示和用戶登錄在前臺(tái)顯示和用戶登錄模塊中,充當(dāng)模型層的是News和NewsMgr根據(jù)系統(tǒng)分析中的系統(tǒng)前臺(tái)需求用例分析和上述的前臺(tái)界面功能描述,對系統(tǒng)的前臺(tái)的每一個(gè)流程、每一個(gè)模塊進(jìn)行詳細(xì)功能設(shè)計(jì)。其相應(yīng)的功能模型如下圖4-7。圖4-7系統(tǒng)前臺(tái)顯示和用戶登錄靜態(tài)模型圖根據(jù)上面的系統(tǒng)前臺(tái)模型,我們可以來說明各個(gè)類的責(zé)任和功能。表4-1前臺(tái)類責(zé)任表名稱類型屬性責(zé)任(或操作)Indexpage邊界無顯示系統(tǒng)前臺(tái)主頁面,并提供管理員登錄News實(shí)體新聞條目的屬性新聞條目的抽象NewsMgr控制無根據(jù)新聞ID得到新聞對象,獲得所有新聞和根據(jù)欄目ID得到該欄目的所有新聞LoginForm邊界無提供管

40、理員登錄,并負(fù)責(zé)客戶端的登錄完整性檢驗(yàn)mainpage邊界無系統(tǒng)后臺(tái)管理主頁面4.3.2新聞管理管理員在系統(tǒng)后臺(tái)主界面中可以對已有新聞進(jìn)行管理(修改、刪除和添加)新聞管理模塊中充當(dāng)模型層的仍然是News和NewsMgr。其靜態(tài)模型如圖4-8。圖4-8新聞管理靜態(tài)模型圖根據(jù)上面的新聞管理模型,我們可以對各個(gè)類的責(zé)任和功能進(jìn)行說明。表4-2新聞管理類責(zé)任表名稱類型屬性責(zé)任(或操作)Mainpage邊界無顯示系統(tǒng)后臺(tái)主頁面,系統(tǒng)管理員可以在此對系統(tǒng)進(jìn)行操作表4-2新聞管理類責(zé)任表(續(xù))NewsMgr控制無對新聞條目進(jìn)行操作,修改和刪除News實(shí)體新聞屬性對新聞實(shí)體的抽象Addnewspage邊界無添

41、加新聞界面,以Form形式收集信息然后提交給控制器AddNewsServlet控制無在控制層設(shè)計(jì)EditNewsServlet控制無在控制層設(shè)計(jì)DeleteNewsServlet控制無在控制層設(shè)計(jì)4.3.3欄目管理欄目管理中可以對已有欄目的編輯、刪除以及添加新欄目,欄目管理靜態(tài)模型如圖4-9。圖4-9欄目管理靜態(tài)模型圖根據(jù)上面的欄目管理靜態(tài)模型設(shè)計(jì),我們可以對各個(gè)類的責(zé)任和功能進(jìn)行說明。表4-3欄目管理類責(zé)任表名稱類型屬性責(zé)任(或操作)ClassManagepage邊界無顯示系統(tǒng)既有欄目,管理員可以在此對欄目進(jìn)行修改和刪除操作Addclasspage邊界無添加欄目,提交給添加欄目控制器Cate

42、gory實(shí)體ID和Name新聞欄目的抽象CategoryMgr控制無實(shí)現(xiàn)對新聞欄目的操作表4-3欄目管理類責(zé)任表(續(xù))EditCategoryServlet控制無在控制層中設(shè)計(jì)DeleteCategoryServet控制無在控制層中設(shè)計(jì)AddCategoryServlet控制無在控制層中設(shè)計(jì)4.4控制層設(shè)計(jì)4.4.1用戶登錄當(dāng)用戶通過系統(tǒng)前臺(tái)提供的登錄入口登錄后臺(tái)系統(tǒng)時(shí),系統(tǒng)將用戶的登錄信息提交給登錄控制層處理。所以登錄控制器必須對用戶登錄信息進(jìn)行識(shí)別,判斷其是否有權(quán)限登錄到后臺(tái)系統(tǒng)。用戶登錄控制器由LoginServlet完成,實(shí)現(xiàn)登錄控制的靜態(tài)類圖如圖4-10。圖4-10登錄控制靜態(tài)模型圖

43、根據(jù)圖4-10登錄控制靜態(tài)模型設(shè)計(jì),對各個(gè)類的責(zé)任和功能進(jìn)行說明。表4-4用戶等錄控制類責(zé)任表名稱類型屬性責(zé)任(或操作)LoginServlet控制無控制用戶登錄4.4.2新聞管理新聞管理中主要涉及到新聞信息的添加、刪除和修改,所以其控制層由AddNewsServlet、DeleteServlet和EditServlet完成。新聞管理靜態(tài)類圖如圖4-11。圖4-11新聞管理靜態(tài)模型圖根據(jù)圖4-11新聞管理靜態(tài)模型設(shè)計(jì),對各個(gè)類的責(zé)任和功能進(jìn)行說明。表4-5新聞管理控制層靜態(tài)類責(zé)任表名稱類型屬性責(zé)任(或操作)EditNewsServlet控制無對已有新聞編輯的控制DeleteNewsServle

44、t控制無對刪除已有新聞的控制AddNewsServlet控制無對添加新聞的控制4.4.3欄目管理欄目管理模塊主要對新聞欄目進(jìn)行修改、刪除和添加,此功能模塊控制層由EditCategoryServlet、DeleteCategoryServlet和AddCategoryServlet完成。欄目管理靜態(tài)類圖設(shè)計(jì)如圖4-12。圖4-12欄目管理靜態(tài)模型圖根據(jù)圖4-12欄目管理靜態(tài)模型設(shè)計(jì),對各個(gè)類的責(zé)任和功能進(jìn)行說明。表4-6欄目管理控制層靜態(tài)類責(zé)任表名稱類型屬性責(zé)任(或操作)EditCategoryServlet控制無對新聞欄目編輯的控制DeleteCategoryServlet控制無對刪除新聞欄

45、目的控制AddCategoryServlet控制無對添加新聞欄目的控制4.5數(shù)據(jù)庫設(shè)計(jì)4.5.1數(shù)據(jù)庫需求分析由于本系統(tǒng)面向的對象有兩個(gè):一般用戶和系統(tǒng)管理員。所以,數(shù)據(jù)庫需求分析中就要考慮兩方面因素。對于一般用戶來說,他們所關(guān)心的是新聞的瀏覽。通過系統(tǒng)功能分析,針對一般新聞?dòng)脩舻男枨螅偨Y(jié)出如下需求信息:(1)每個(gè)新聞對應(yīng)一個(gè)HTML文件;(2)每個(gè)新聞只能對應(yīng)一個(gè)新聞欄目;(3)每個(gè)欄目下可以有多個(gè)新聞。(4)每個(gè)新聞除了包含新聞的基本信息之外,還得包含新聞所對應(yīng)的HTML路徑信息。對于系統(tǒng)管理員來說,他們所關(guān)心的是如何對新聞欄目和新聞的添加、修改和刪除。通過分析,針對系統(tǒng)管理員,總結(jié)出如

46、下需求信息:(1)管理員可以對新聞欄目進(jìn)行增、刪、改;(2)管理員可以對新聞條目進(jìn)行增、刪、改。4.5.2數(shù)據(jù)庫概念設(shè)計(jì)根據(jù)上面的數(shù)據(jù)庫需求分析,就可以構(gòu)造出各種實(shí)體,以及并根據(jù)它們的關(guān)系繪制出實(shí)體間的E-R圖8,為以后的邏輯設(shè)計(jì)打下基礎(chǔ)。如圖4-13為本新聞發(fā)布系統(tǒng)實(shí)體間的E-R圖。圖4-13實(shí)體之間關(guān)系的E-R圖84.5.3數(shù)據(jù)庫邏輯設(shè)計(jì)根據(jù)數(shù)據(jù)庫需求分析和數(shù)據(jù)庫概念設(shè)計(jì),設(shè)計(jì)如下所示的數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu):管理員表(用戶名,密碼),用戶名為主碼;欄目表(欄目編號(hào),欄目名稱),欄目編號(hào)為主碼;新聞表(新聞編號(hào),新聞標(biāo)題,新聞內(nèi)容,管理員名,所屬欄目,發(fā)布時(shí)間),新聞編號(hào)為主碼,管理員名和所屬欄

47、目為外碼;4.5.4數(shù)據(jù)庫表設(shè)計(jì)數(shù)據(jù)庫邏輯設(shè)計(jì)完畢后,現(xiàn)在可以將上面的數(shù)據(jù)庫概念結(jié)構(gòu)轉(zhuǎn)化為某種數(shù)據(jù)庫系統(tǒng)所支持的實(shí)際數(shù)據(jù)庫模型。本系統(tǒng)使用SQLServer2000數(shù)據(jù)庫。新聞發(fā)布系統(tǒng)的數(shù)據(jù)庫中各表的設(shè)計(jì)結(jié)果如下面幾個(gè)表所示。表4-7管理員Master表序號(hào)字段名字段含義類型寬度是否非空備注1UserName管理員用戶名char12YKey2Password管理員密碼char12Y無表4-8新聞News表序號(hào)字段名字段含義類型寬度是否非空備注1newsId新聞編號(hào)int4YKey2Title新聞標(biāo)題char50N無3Content新聞內(nèi)容char5000N無4UserName新聞作者char1

48、2Y外碼5Composedate新聞發(fā)布時(shí)間datetime8Y無6categoryId新聞欄目編號(hào)int4Y外碼表4-9欄目Category表序號(hào)字段名字段含義類型寬度是否非空備注1categoryId新聞欄目編號(hào)int4YKey2categoryName新聞欄目名稱char20Y無4.6數(shù)據(jù)庫連接池設(shè)計(jì)傳統(tǒng)的數(shù)據(jù)庫連接傳統(tǒng)的數(shù)據(jù)庫連接模式基本上是按以下步驟進(jìn)行:在主程序(如Servlet、Beans)中建立數(shù)據(jù)庫連接;進(jìn)行SQL操作,取出數(shù)據(jù);斷開數(shù)據(jù)庫連接9。數(shù)據(jù)庫連接池的必要性傳統(tǒng)的數(shù)據(jù)庫連接模式開發(fā),存在很多問題。首先,要為每次web請求(例如客戶瀏覽一件商品信息)建立一次數(shù)據(jù)庫連接

49、。當(dāng)有多個(gè)用戶連接系統(tǒng)的時(shí)候,在同一時(shí)間有可能會(huì)不止一個(gè)用戶需要數(shù)據(jù)庫連接,在這種情況下,系統(tǒng)開銷也是相當(dāng)大的。連接數(shù)據(jù)庫不僅要開銷一定的通訊和內(nèi)存資源,還必須完成用戶驗(yàn)證、安全上下文配置這類任務(wù);同時(shí)應(yīng)用程序還要管理每一個(gè)連接,確保這些連接在被使用完后能被正確關(guān)閉。這些操作往往成為最耗時(shí)的操作,很多時(shí)候,一個(gè)網(wǎng)站的速度瓶頸可能就在于此,因而對數(shù)據(jù)庫的連接的管理顯得特別重要。本系統(tǒng)是一個(gè)新聞發(fā)布和管理的系統(tǒng),新聞系統(tǒng)是面向廣大閱讀新聞的用戶的,用戶需要閱讀新聞時(shí),系統(tǒng)需要從新聞數(shù)據(jù)庫中調(diào)出用戶需要的新聞條目。如果采用傳統(tǒng)的數(shù)據(jù)庫鏈接模式,那么對于每一個(gè)閱讀新聞的用戶,當(dāng)他讀取新聞時(shí),系統(tǒng)都要為

50、他建立一次數(shù)據(jù)庫連接,而當(dāng)他退出新聞閱讀時(shí),系統(tǒng)釋放數(shù)據(jù)庫鏈接,那么,系統(tǒng)的數(shù)據(jù)庫連接是非常頻繁的。這樣也會(huì)產(chǎn)生上面提到的種種問題,但是,如果采用數(shù)據(jù)庫鏈接池就方便得多,本系統(tǒng)采用的便是數(shù)據(jù)庫鏈接池模式對數(shù)據(jù)庫進(jìn)行連接。4.6.3數(shù)據(jù)庫連接池工作原理數(shù)據(jù)庫連接池實(shí)際上是在一個(gè)容器對象中建立一定數(shù)目的數(shù)據(jù)庫連接對象。當(dāng)需要使用數(shù)據(jù)庫連接的時(shí)候,直接從連接池中取出空閑對象供用戶使用。當(dāng)用戶使用完后再把連接對象放回連接池中,以節(jié)省重新建立連接對象所花費(fèi)的時(shí)間。工作原理如圖4-14所示。初始化數(shù)據(jù)庫連接池Servlet、JavaBeanSQL操作接連回放接連個(gè)一取連接1連接2連接n從池中刪除該連接使用

51、完后放回池中連接池空閑連接?取出連接數(shù)據(jù)庫二二-1加入新連接到池中1r等待重試使用次數(shù)加1連接狀態(tài)設(shè)為忙池的上限?vN是否使用最大次數(shù)?使用連接圖4-14連接池工作原理圖10當(dāng)連接池工作時(shí),首先,在連接池中應(yīng)當(dāng)初始化內(nèi)含一定數(shù)量的連接對象;在使用過程中,如果池中的連接對象不夠,可根據(jù)需要逐漸加入新的連接對象,但池中的連接對象也不能是無限的,當(dāng)達(dá)到最大連接對象數(shù)量時(shí),便不能再往池中添加新的連接對象,如果此時(shí)連接對象數(shù)量仍然不夠,就只能等待別的連接對象釋放后再使用,即定義連接池中連接對象的上下界和連接超時(shí)時(shí)間。定義上下界可根據(jù)客戶端的情況動(dòng)態(tài)地使用資源,以提高系統(tǒng)的效率。另外,同一個(gè)連接對象如果被

52、使用的次數(shù)太多,可能會(huì)導(dǎo)致該連接對象的不穩(wěn)定。所以需要設(shè)定一個(gè)連接對象可使用的最大次數(shù)。當(dāng)使用次數(shù)達(dá)到最大次數(shù)后就將該連接對象關(guān)閉并從池中刪除。4.6.4具體設(shè)計(jì)根據(jù)連接池的工作原理,本文設(shè)計(jì)了一個(gè)的連接池組件。該連接池組件由兩個(gè)Java類ConnectionObject和ConnectionPool和一個(gè)數(shù)據(jù)庫連接配置文件(dbconfig.txt)構(gòu)成。其中:ConnectionObject稱為連接對象類,用來實(shí)現(xiàn)對一個(gè)連接對象狀態(tài)的管理,并為連接池管理類提供服務(wù);ConnectionPool稱為連接池管理類,用來實(shí)現(xiàn)對連接池的管理和調(diào)度;dbconfig.txt稱為數(shù)據(jù)庫連接配置文件,存

53、放數(shù)據(jù)庫連接所需要的配置信息,供連接池工作時(shí)使用。連接池內(nèi)部聯(lián)系類圖如圖4-15所示。ConnectionPool-driver:string-url:string-username:string-password:string-pool:Vector-connectionPoolSize:int-connectionPoolMaxSize:intconnectionMaxUseCount:inttimeoutintToadPropO:void-initPool():void+ConnectionPool()+finalize():void-findconnectionID():int+rea

54、lse():voidUseConnectionObiect+getFreeConnection():ConnectionObject+getConnection():Connection-connection:Connection-isUse:BooleanuseCount:int+ConnectionObject()+getConnection():+setConnection():vo+isIsUse():Boolean+setIsUse():void+setUseCount():void+getUseCount():int1-addUseCount():void圖4-15連接池內(nèi)部主件聯(lián)

55、系圖4.7小結(jié)本章首先進(jìn)行了系統(tǒng)總體設(shè)計(jì),接著按照MVC設(shè)計(jì)模式的三層結(jié)構(gòu)根據(jù)系統(tǒng)需求用例對新聞發(fā)布系統(tǒng)功能進(jìn)行設(shè)計(jì),最后設(shè)計(jì)出系統(tǒng)的數(shù)據(jù)庫并對數(shù)據(jù)庫連接進(jìn)行了相應(yīng)的設(shè)計(jì)。通過本章,系統(tǒng)設(shè)計(jì)出了用來完成系統(tǒng)用例的業(yè)務(wù)功能模型以及完成各個(gè)用例的類。第5章系統(tǒng)實(shí)現(xiàn)根據(jù)上一章的設(shè)計(jì)思路設(shè)計(jì)用來完成系統(tǒng)用例的業(yè)務(wù)功能,整個(gè)系統(tǒng)按照MVC模式的三個(gè)部分以及數(shù)據(jù)庫連接池進(jìn)行編碼實(shí)現(xiàn),分為視圖層、控制層、模型層和數(shù)據(jù)庫連接池。由于系統(tǒng)實(shí)現(xiàn)的代碼量較大限于篇幅,文中僅顯示部分代碼,具體實(shí)現(xiàn)代碼參見附件。5.1視圖層實(shí)現(xiàn)在系統(tǒng)其它視圖層部分實(shí)現(xiàn)之前,先對那些常用的公共頁面模塊部分實(shí)現(xiàn)。5.1.1公共頁面incl

56、ude.jsp是一個(gè)包含頁面,它包含了一些其它頁面可能經(jīng)常用到的JavaBean包以及一些在其它頁面中常用到的參數(shù)。具體代碼如下:!-開始導(dǎo)入packages-session.jsp的設(shè)置主要是方便系統(tǒng)對管理員權(quán)限的判定。因?yàn)椋绻粋€(gè)用戶登錄到系統(tǒng),系統(tǒng)便會(huì)給他設(shè)定一個(gè)session,這個(gè)session在他退出系統(tǒng)之前均有效。系統(tǒng)可以通過session來判定用戶是否登錄,并且,如果某個(gè)用戶要執(zhí)行系統(tǒng)某些功能時(shí),系統(tǒng)也可以通過一個(gè)session對其進(jìn)行操作權(quán)限的判定。具體代碼如下:foot.jsp中包含了其它頁面常用到的頁面尾部的設(shè)計(jì)。具體代碼如下:vTABLEbgColor=#eeeeeeb

57、order=0width=100%align=centervTBODY新聞管理系統(tǒng)Copyright(c)Elven2007新聞首頁本系統(tǒng)的CSS設(shè)計(jì)了一個(gè)CSS樣式表(css.css)它主要設(shè)置頁面中顯示的Body結(jié)構(gòu)的樣式、超鏈接A的樣式、頁面中表格Table樣式等的設(shè)置。CSS樣式表可以使系統(tǒng)整體風(fēng)格一致。5.1.2前臺(tái)實(shí)現(xiàn)系統(tǒng)前臺(tái)視圖層由index.jsp實(shí)現(xiàn)index.jsp僅負(fù)責(zé)顯示新聞欄目和系統(tǒng)已有新聞以及為管理員用戶提供一個(gè)登錄入口。index.jsp頁面顯示截圖如圖5-1。圖5-1index.jsp頁面實(shí)現(xiàn)截圖5.1.3后臺(tái)實(shí)現(xiàn)系統(tǒng)后臺(tái)視圖層主要由mian.jsp、addne

58、ws.jsp、classmanage.jsp和addclass.jsp組成。mian.jsp是系統(tǒng)后臺(tái)主頁面,是管理員登錄到系統(tǒng)所看到的第一個(gè)頁面。其實(shí)現(xiàn)顯示截圖如圖5-2。圖5-2main.jsp實(shí)現(xiàn)截圖addnews.jsp實(shí)現(xiàn)新聞的添加。當(dāng)用戶在后臺(tái)主頁面中選擇添加新聞按鈕時(shí),管理員便進(jìn)入此頁面。其實(shí)現(xiàn)截圖如圖5-3。圖5-3addnews.jsp實(shí)現(xiàn)截圖classmanage.jsp實(shí)現(xiàn)新聞欄目的管理,管理員可以在此對進(jìn)行新聞欄目的相關(guān)操作。其實(shí)現(xiàn)截圖如圖5-4。圖5-4classmanage.jsp實(shí)現(xiàn)截圖addclass.jsp是classmanage.jsp的一個(gè)子頁面,它實(shí)現(xiàn)欄

59、目的添加功能。其實(shí)現(xiàn)截圖如圖5-5。圖5-5addclass.jsp實(shí)現(xiàn)截圖5.2模型層實(shí)現(xiàn)模型層實(shí)現(xiàn)中主要給出了實(shí)現(xiàn)功能模塊中的各類的功能函數(shù),具體代碼見附件。5.2.1新聞顯示在前臺(tái)頁面中顯示系統(tǒng)已有新聞,需要新聞?lì)怤ews和新聞管理類NewsMgr。在此模塊中主要實(shí)現(xiàn)將新聞數(shù)據(jù)庫中的新聞顯示到前臺(tái)頁面中。實(shí)現(xiàn)新聞顯示的功能函數(shù)如下:publicCollectiongetAllNews()查詢所有的新聞;publicCollectiongetAllByCategory(intcategoryId)/根據(jù)CategoryId得到某欄目所有的新聞;publicNewsgetById(intid

60、)/根據(jù)ID得到新聞;publicintgetTotal()計(jì)算新聞的總數(shù);publicintgetTotalByCategoryId(intcategoryId)/計(jì)算某類別新聞的總數(shù)。5.2.2新聞管理新聞管理模塊是在系統(tǒng)后臺(tái)對已有新聞進(jìn)行編輯和刪除以及添加新聞。在新聞管理類中如此實(shí)現(xiàn)新聞管理:publicNewsgetById(intid)/根據(jù)ID得到新聞;publicvoidmodify(Newsnews)/修改新聞;publicvoiddelete(intid)/刪除新聞;publicvoidadd(Newsnews)/添加新聞。5.2.3欄目管理欄目管理模塊中,主要實(shí)現(xiàn)新聞欄目的

溫馨提示

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

最新文檔

評論

0/150

提交評論