版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 基于MVC模式的新聞發(fā)布系統(tǒng)的</p><p><b> 設(shè)計(jì)與實(shí)現(xiàn)</b></p><p> 摘 要:新聞發(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)對(duì)象建模的ICONIX項(xiàng)目管理方法,應(yīng)用MVC三層設(shè)計(jì)模
2、式,實(shí)現(xiàn)一個(gè)可以完成新聞欄目和新聞信息的添加、修改、刪除以及新聞查看功能的新聞發(fā)布系統(tǒng)。</p><p> 關(guān)鍵字:ICONIX;MVC;Servlet;JavaBean;新聞發(fā)布</p><p> Design and Implementation of the News Publishing System based on MVC model</p><p>
3、; Abstract: The news publishing system is the main application of Content Management System in a company, also it is an important approach of the companies’ information construction and the realization of E-Commerce. Th
4、e separation of the contents and views of information in the news is it is the basic idea, so as to advance the efficiency of the news. Through applying the project management methods of ICONIX, which is based on use cas
5、e driven object modeling with UML, and MVC design pattern, this</p><p> Keywords:ICONIX; MVC; Servlet; JavaBean; News Publishing</p><p><b> 目 錄</b></p><p><b>
6、第1章 前言1</b></p><p> 第2章 系統(tǒng)概述2</p><p> 2.1 項(xiàng)目管理方法2</p><p> 2.1.1 項(xiàng)目管理方法比較2</p><p> 2.1.2 項(xiàng)目管理方法選擇2</p><p> 2.2 設(shè)計(jì)模式3</p><p>
7、 2.2.2 MVC模式基本原理4</p><p> 2.2.3 MVC Model15</p><p> 2.2.4 MVC Model25</p><p><b> 2.3 小結(jié)6</b></p><p> 第3章 需求分析7</p><p> 3.1 需求描述7&l
8、t;/p><p> 3.2 角色識(shí)別8</p><p> 3.3 用例識(shí)別8</p><p> 3.4 用例文檔8</p><p> 3.5 用例驅(qū)動(dòng)分析10</p><p><b> 3.6 小結(jié)12</b></p><p> 第4章 系統(tǒng)設(shè)計(jì)13&
9、lt;/p><p> 4.1 系統(tǒng)總體設(shè)計(jì)13</p><p> 4.1.1 系統(tǒng)構(gòu)架13</p><p> 4.1.2 發(fā)現(xiàn)系統(tǒng)類(lèi)14</p><p> 4.2 視圖層設(shè)計(jì)15</p><p> 4.2.1 前臺(tái)設(shè)計(jì)15</p><p> 4.2.2 后臺(tái)設(shè)計(jì)16</
10、p><p> 4.3 模型層設(shè)計(jì)18</p><p> 4.3.1 前臺(tái)顯示和用戶(hù)登錄18</p><p> 4.3.2 新聞管理19</p><p> 4.3.3 欄目管理20</p><p> 4.4 控制層設(shè)計(jì)21</p><p> 4.4.1 用戶(hù)登錄21</p
11、><p> 4.4.2 新聞管理21</p><p> 4.4.3 欄目管理22</p><p> 4.5 數(shù)據(jù)庫(kù)設(shè)計(jì)23</p><p> 4.5.1 數(shù)據(jù)庫(kù)需求分析23</p><p> 4.5.2 數(shù)據(jù)庫(kù)概念設(shè)計(jì)23</p><p> 4.5.3 數(shù)據(jù)庫(kù)邏輯設(shè)計(jì)24&l
12、t;/p><p> 4.5.4 數(shù)據(jù)庫(kù)表設(shè)計(jì)24</p><p> 4.6 數(shù)據(jù)庫(kù)連接池設(shè)計(jì)25</p><p> 4.6.1 傳統(tǒng)的數(shù)據(jù)庫(kù)連接25</p><p> 4.6.2 數(shù)據(jù)庫(kù)連接池的必要性25</p><p> 4.6.3 數(shù)據(jù)庫(kù)連接池工作原理26</p><p>
13、 4.6.4 具體設(shè)計(jì)27</p><p><b> 4.7 小結(jié)27</b></p><p> 第5章 系統(tǒng)實(shí)現(xiàn)28</p><p> 5.1 視圖層實(shí)現(xiàn)28</p><p> 5.1.1 公共頁(yè)面28</p><p> 5.1.2 前臺(tái)實(shí)現(xiàn)29</p>&
14、lt;p> 5.1.3 后臺(tái)實(shí)現(xiàn)30</p><p> 5.2 模型層實(shí)現(xiàn)32</p><p> 5.2.1 新聞顯示32</p><p> 5.2.2 新聞管理32</p><p> 5.2.3 欄目管理32</p><p> 5.3 控制層實(shí)現(xiàn)32</p><p&g
15、t; 5.3.1 用戶(hù)登錄33</p><p> 5.3.2 新聞管理33</p><p> 5.3.3 欄目管理34</p><p> 5.4 數(shù)據(jù)庫(kù)實(shí)現(xiàn)34</p><p> 5.4.1 數(shù)據(jù)庫(kù)表實(shí)現(xiàn)34</p><p> 5.4.2 數(shù)據(jù)庫(kù)表關(guān)系35</p><p>
16、; 5.5 數(shù)據(jù)庫(kù)連接池實(shí)現(xiàn)36</p><p><b> 5.6 小結(jié)36</b></p><p> 第6章 系統(tǒng)運(yùn)行測(cè)試37</p><p> 6.1 系統(tǒng)測(cè)試環(huán)境37</p><p> 6.1.1 系統(tǒng)測(cè)試硬件環(huán)境37</p><p> 6.1.2 系統(tǒng)測(cè)試軟件環(huán)境3
17、7</p><p> 6.1.3 Tomcat的配置37</p><p> 6.2 系統(tǒng)測(cè)試37</p><p> 第7章 系統(tǒng)評(píng)價(jià)與改進(jìn)39</p><p> 7.1 系統(tǒng)評(píng)價(jià)39</p><p> 7.2 系統(tǒng)改進(jìn)39</p><p><b> 結(jié) 論40
18、</b></p><p><b> 致 謝41</b></p><p><b> 參考文獻(xiàn)42</b></p><p><b> 附件43</b></p><p><b> 第1章 前言</b></p><
19、p> 伴隨著網(wǎng)絡(luò)的出現(xiàn),網(wǎng)頁(yè)逐漸融入人們的生活。快速及時(shí)的新聞瀏覽,五彩繽紛的網(wǎng)上信息,使網(wǎng)絡(luò)與人們的生活息息相關(guān),于是世界上出現(xiàn)了第三媒體——Internet。它打破了地域限制,真正使信息得以共享,改變了人們的工作和生活方式。人們對(duì)信息的需求有了更新,更高的要求,而網(wǎng)頁(yè)由于本身所具有的信息量大,傳遞快速,沒(méi)有時(shí)空限制等特點(diǎn)恰好滿(mǎn)足這種要求。也正是由于網(wǎng)絡(luò)實(shí)現(xiàn)網(wǎng)站的數(shù)據(jù)信息能夠進(jìn)行實(shí)時(shí)交互,保證網(wǎng)站數(shù)據(jù)的實(shí)時(shí)性。</p&g
20、t;<p> 隨著Internet信息技術(shù)的高速發(fā)展,越來(lái)越多的企業(yè)想將自己企業(yè)的信息通過(guò)網(wǎng)絡(luò)與全世界分享并最終實(shí)現(xiàn)電子商務(wù),所以它們已經(jīng)建立或計(jì)劃建立自己的網(wǎng)站。但是,如果為了建立和維護(hù)自己的網(wǎng)站而聘請(qǐng)專(zhuān)職的網(wǎng)絡(luò)技術(shù)人員,其成本對(duì)于一個(gè)中小型企業(yè)來(lái)說(shuō)實(shí)在是太高了。對(duì)于上面這類(lèi)企業(yè)來(lái)說(shuō),他們最需要的就是一個(gè)現(xiàn)成的可以自動(dòng)發(fā)布信息的新聞發(fā)布系統(tǒng),這樣只要會(huì)打字,會(huì)上網(wǎng)就能利用新聞發(fā)布系統(tǒng)快速簡(jiǎn)潔地發(fā)布企業(yè)信息。</p
21、><p> 然而傳統(tǒng)的信息發(fā)布方式已經(jīng)不適應(yīng)這個(gè)快速變化的信息時(shí)代,需要一個(gè)更高效,更簡(jiǎn)潔的方式進(jìn)行信息發(fā)布。內(nèi)容管理系統(tǒng)正是基于這樣一個(gè)目的而誕生的,它是企業(yè)信息化建設(shè)和電子政務(wù)的新寵。它的基本思想是分離信息內(nèi)容和表現(xiàn)形式,內(nèi)容存儲(chǔ)在數(shù)據(jù)庫(kù)或獨(dú)立的文件中,而表現(xiàn)形式存儲(chǔ)在模版里。當(dāng)用戶(hù)請(qǐng)求頁(yè)面時(shí),各部分聯(lián)合生成一個(gè)標(biāo)準(zhǔn)的HTML頁(yè)面;當(dāng)信息修改時(shí),用戶(hù)只需在一個(gè)可視化的界面對(duì)信息內(nèi)容進(jìn)行修改。大大縮短了信息的更新
22、時(shí)間,提高了效率,并且簡(jiǎn)化了操作。</p><p> 本設(shè)計(jì)便是基于內(nèi)容管理思想的一個(gè)新聞發(fā)布系統(tǒng),以下各章從系統(tǒng)概述、需求分析、系統(tǒng)設(shè)計(jì)、系統(tǒng)實(shí)現(xiàn)、系統(tǒng)運(yùn)行測(cè)試和系統(tǒng)評(píng)價(jià)與改進(jìn)依次展現(xiàn)系統(tǒng)開(kāi)發(fā)過(guò)程。</p><p><b> 第2章 系統(tǒng)概述</b></p><p> 本章主要介紹在系統(tǒng)開(kāi)發(fā)過(guò)程中所采用的軟件項(xiàng)目管理方法和系統(tǒng)設(shè)計(jì)模式
23、。</p><p> 2.1 項(xiàng)目管理方法</p><p> 2.1.1 項(xiàng)目管理方法比較</p><p> 目前,面向?qū)ο筌浖_(kāi)發(fā)的項(xiàng)目管理方法主要有RUP、XP和ICONIX。</p><p> RUP(Rational Unified Process)統(tǒng)一軟件過(guò)程,是統(tǒng)一軟件開(kāi)發(fā)過(guò)程,強(qiáng)調(diào)文檔、設(shè)計(jì)和代碼的質(zhì)量,采用動(dòng)態(tài)適應(yīng)變化
24、的漸進(jìn)式迭代周期,依靠需求和測(cè)試驅(qū)動(dòng),并積極鼓勵(lì)客戶(hù)參與的開(kāi)發(fā)方法[1]。RUP是一個(gè)基于UML和構(gòu)件式構(gòu)架的迭代遞增型開(kāi)發(fā)過(guò)程,更適用于大、中型軟件開(kāi)發(fā)項(xiàng)目。</p><p> XP極限編程(Extreme Programming,XP)是一門(mén)針對(duì)業(yè)務(wù)和軟件開(kāi)發(fā)的規(guī)則,它將編碼和設(shè)計(jì)活動(dòng)融為一體,弱化了構(gòu)架的概念[1]。要求先開(kāi)發(fā)出系統(tǒng)中最重要的特性,迅速向客戶(hù)提供所需功能,然后隨著代碼的演進(jìn)通過(guò)重構(gòu)來(lái)滿(mǎn)足新
25、的要求,從而使整個(gè)項(xiàng)目的風(fēng)險(xiǎn)降到最小。XP是一種漸進(jìn)式的原型化開(kāi)發(fā)方法,反映的是以編程為中心,節(jié)省資源的觀(guān)念。它具有溝通高效,設(shè)計(jì)簡(jiǎn)單,反饋迅速等特點(diǎn),是一種針對(duì)某些特定環(huán)境(需求變化快的小型開(kāi)發(fā)團(tuán)隊(duì))的具體過(guò)程實(shí)施模型和方法論。</p><p> ICONIX的規(guī)模大概在重量級(jí)的Rational Unified Process(RUP)和輕量級(jí)的極限編程(XP)之間[2]。和RUP一樣,ICONIX過(guò)程也是用
26、例驅(qū)動(dòng)的,但不需要RUP使紀(jì)錄延續(xù)到表中帶來(lái)的大量開(kāi)銷(xiāo);和XP一樣,它相對(duì)較小,比較緊湊,但不像XP那樣摒棄了分析和設(shè)計(jì)過(guò)程。因此,有助于使用統(tǒng)一建模語(yǔ)言(UML),同時(shí)對(duì)需求進(jìn)行跟蹤。該過(guò)程遵循了Ivar Jacobson的“用例驅(qū)動(dòng)”的思想,能夠獲得有形、具體、易于理解的用例,可以使用這些用例來(lái)驅(qū)動(dòng)開(kāi)發(fā)工作。該過(guò)程的3個(gè)基本原則是:從用戶(hù)需求向內(nèi)進(jìn)行;從問(wèn)題域的關(guān)鍵抽象向外進(jìn)行;從高級(jí)模型向下挖掘到詳細(xì)設(shè)計(jì)[2]。</p>
27、;<p> 2.1.2 項(xiàng)目管理方法選擇</p><p> 本系統(tǒng)選擇的項(xiàng)目管理方法是ICONIX,也許它并不是用于本系統(tǒng)開(kāi)發(fā)最好的項(xiàng)目管理方法,當(dāng)然它也有很多缺點(diǎn)。本系統(tǒng)選擇它作為系統(tǒng)的軟件項(xiàng)目管理方法,第一是因?yàn)橄到y(tǒng)本身較簡(jiǎn)單,采用ICONIX足以滿(mǎn)足系統(tǒng)需求,并且由于時(shí)間限制,本人沒(méi)有太多精力去學(xué)習(xí)更好的項(xiàng)目管理方法;第二是因?yàn)楹蛣e的軟件方法不同的是,ICONIX更強(qiáng)調(diào)需求到設(shè)計(jì)之前的自然
28、、有章可循的,同時(shí)也適合迭代的過(guò)渡,并且按照它自己的軟件方法思想,它對(duì)UML符號(hào)集在可擴(kuò)充的前提下作了一定的取舍。</p><p> 本系統(tǒng)選擇ICONIX項(xiàng)目管理方法,在系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)過(guò)程中,根據(jù)系統(tǒng)需要,對(duì)其進(jìn)行了適當(dāng)?shù)娜∩帷D2-1是ICONIX項(xiàng)目管理方法過(guò)程的總圖。</p><p> 圖 2-1ICONIX總圖[2]</p><p><b>
29、; 2.2 設(shè)計(jì)模式</b></p><p> 隨著Web技術(shù)的發(fā)展,Web內(nèi)容從一些靜態(tài)頁(yè)面發(fā)展到內(nèi)容豐富的動(dòng)態(tài)頁(yè)面。目前,用于生成動(dòng)態(tài)網(wǎng)頁(yè)較為流行的技術(shù)有Microsoft的ASP、Tex的PHP和Sun的JSP。ASP只能工作在微軟的IIS(Internet Information Server)和PWS(Personal Web Server)上及PHP模式,一些天生缺陷使得它們的使用受到
30、了一定的制約。而JSP是一種完全與平臺(tái)無(wú)關(guān)的開(kāi)發(fā)新技術(shù),它集極高的運(yùn)行效率,較短的開(kāi)發(fā)周期,超強(qiáng)的擴(kuò)展能力,完全開(kāi)放的技術(shù)標(biāo)準(zhǔn),自由的開(kāi)發(fā)方式等眾多完美特性于一身。JSP+JavaBean+Servlet+JDBC+DBMS是一套能夠?qū)崿F(xiàn)動(dòng)態(tài)網(wǎng)站的開(kāi)發(fā)和維護(hù)的技術(shù)。DBMS數(shù)據(jù)庫(kù)用于數(shù)據(jù)存儲(chǔ),JDBC用于連接數(shù)據(jù)庫(kù)并對(duì)數(shù)據(jù)庫(kù)進(jìn)行存儲(chǔ),Servlet用于處理過(guò)程控制,JavaBean用于封裝業(yè)務(wù)邏輯,JSP用于頁(yè)面顯示部分。而MVC正是這
31、種設(shè)計(jì)模式代表。</p><p> 2.2.2 MVC模式基本原理</p><p> MVC (Model-View-Controller),即把一個(gè)應(yīng)用的輸入、處理、輸出流程按照Model, View, Controller的方式進(jìn)行分離,這樣一個(gè)應(yīng)用被分成三個(gè)層——模型層、視圖層、控制層,其三層之間的關(guān)系和功能如圖2-2“MVC組件類(lèi)型關(guān)系和功能圖”。</p><
32、;p> 圖2-2MVC組件類(lèi)型關(guān)系和功能圖[3]</p><p> MVC設(shè)計(jì)模式的典型流程[4]為:首先Controller接收用戶(hù)的請(qǐng)求,并決定應(yīng)該調(diào)用哪個(gè)Model來(lái)進(jìn)行處理,然后Model用業(yè)務(wù)邏輯來(lái)處理用戶(hù)的請(qǐng)求并返回?cái)?shù)據(jù),最后Controller用相應(yīng)的View格式化Model返回的數(shù)據(jù),并通過(guò)表示層呈現(xiàn)給用戶(hù)。</p><p> 控制層(Controller)可
33、以理解為從用戶(hù)接收請(qǐng)求,將模型與視圖匹配在一起,共同完成用戶(hù)的請(qǐng)求。劃分控制層的作用也很明顯,它清楚地告訴我們,它就是一個(gè)分發(fā)器,選擇什么樣的模型,選擇什么樣的視圖,可以完成什么樣的用戶(hù)請(qǐng)求??刂茖硬⒉蛔鋈魏蔚臄?shù)據(jù)處理。例如,用戶(hù)點(diǎn)擊一個(gè)鏈接,控制層接受請(qǐng)求后,并不處理業(yè)務(wù)信息,它只把用戶(hù)的信息傳遞給模型,告訴模型做什么,選擇符合要求的視圖返回給用戶(hù)。因此,一個(gè)模型可能對(duì)應(yīng)多個(gè)視圖,一個(gè)視圖可能對(duì)應(yīng)多個(gè)模型。</p>&l
34、t;p> 模型層(Model)就是業(yè)務(wù)流程/狀態(tài)的處理以及業(yè)務(wù)規(guī)則的制定。業(yè)務(wù)流程的處理過(guò)程對(duì)其它層來(lái)說(shuō)是黑箱操作,模型接受視圖請(qǐng)求的數(shù)據(jù),并返回最終的處理結(jié)果。業(yè)務(wù)模型的設(shè)計(jì)可以說(shuō)是MVC最主要的核心,必須能夠滿(mǎn)足大多數(shù)客戶(hù)的需求,包括保證應(yīng)用程序各組件的事務(wù)整合、維護(hù)并快速獲取應(yīng)用數(shù)據(jù),支持事務(wù)工作流的協(xié)調(diào)以及在已有應(yīng)用程序中集成新的應(yīng)用組件等。MVC并沒(méi)有提供模型的設(shè)計(jì)方法,而只告訴我們應(yīng)該組織管理這些模型,以便于模型的重
35、構(gòu)和提高重用性。</p><p> 視圖層(View)代表用戶(hù)交互界面,對(duì)于Web應(yīng)用來(lái)說(shuō),可以概括為HTML界面,但有可能為XHTML,XML和Applet。隨著應(yīng)用的復(fù)雜性和規(guī)模性,界面的處理也變得具有挑戰(zhàn)性。一個(gè)應(yīng)用可能有很多不同的視圖,MVC設(shè)計(jì)模式對(duì)于視圖的處理僅限于視圖上數(shù)據(jù)的采集和處理,以及用戶(hù)的請(qǐng)求,而不包括在視圖上的業(yè)務(wù)流程的處理。業(yè)務(wù)流程的處理交予模型(Model)處理。</p>
36、<p> 2.2.3 MVC Model1</p><p> 在MVC模式的Model1體系中,JSP頁(yè)面獨(dú)立響應(yīng)請(qǐng)求并將出理結(jié)果返回客戶(hù),所有的數(shù)據(jù)存取都是由JavaBean來(lái)完成。Model1體系十分適合簡(jiǎn)單應(yīng)用需要,卻不能滿(mǎn)足復(fù)雜的大型應(yīng)用程序的實(shí)現(xiàn)。MVC Model1的體系結(jié)構(gòu)如圖2-3所示。</p><p> 圖2-3MVC Model1體系結(jié)構(gòu)圖[5]&
37、lt;/p><p> 2.2.4 MVC Model2</p><p> MVC模式的Model2體系結(jié)構(gòu)是一種把JSP與Servlet聯(lián)合起來(lái)實(shí)現(xiàn)動(dòng)態(tài)內(nèi)容服務(wù)的方法。它吸取了兩種技術(shù)的優(yōu)點(diǎn),用JSP生成表達(dá)層的內(nèi)容,讓Servlet完成深層次的處理任務(wù)。這是一種有代表性的方法,它清晰地分離了表達(dá)和內(nèi)容,明確了角色的定義及開(kāi)發(fā)者與網(wǎng)頁(yè)設(shè)計(jì)者的分工。本系統(tǒng)的設(shè)計(jì)模式選擇的便是Model2。M
38、VC Model2的體系結(jié)構(gòu)如圖2-4所示。</p><p> 圖2-4MVC Model2體系結(jié)構(gòu)圖[5]</p><p><b> 2.3 小結(jié)</b></p><p> 本章首先介紹了目前面向?qū)ο蟮能浖_(kāi)發(fā)中所常用的幾種項(xiàng)目管理方法,并最終根據(jù)系統(tǒng)需要選擇了ICONIX作為系統(tǒng)項(xiàng)目管理方法。然后對(duì)MVC設(shè)計(jì)模式基本原理進(jìn)行了詳細(xì)闡
39、述,并介紹了MVC的兩種不同的模式Model1和Model2,并確定本系統(tǒng)的設(shè)計(jì)模式便是MVC Model2。</p><p><b> 第3章 需求分析</b></p><p> 需求分析在軟件開(kāi)發(fā)過(guò)程中,具有舉足輕重的地位,它具有決策性,方向性,策略性的作用。需求分析的任務(wù)就是要解決“做什么”的問(wèn)題,就是要全面地理解用戶(hù)的各項(xiàng)需求,并準(zhǔn)確地表達(dá)所接受的用戶(hù)需
40、求。</p><p><b> 3.1 需求描述</b></p><p> 新聞發(fā)布系統(tǒng)功能需求主要包括:前臺(tái)顯示功能和后臺(tái)管理功能。</p><p> 前臺(tái)顯示功能主要針對(duì)一般用戶(hù)的,當(dāng)一般用戶(hù)在瀏覽新聞系統(tǒng)時(shí),系統(tǒng)應(yīng)該對(duì)新聞欄目和新聞條目的顯示。另外,前臺(tái)顯示功能還應(yīng)包括一個(gè)提供給系統(tǒng)管理員登錄后臺(tái)的登錄入口。具體需求見(jiàn)表3-1系統(tǒng)前
41、臺(tái)顯示需求表。</p><p> 表3-1系統(tǒng)前臺(tái)顯示需求表</p><p> 后臺(tái)管理功能是針對(duì)系統(tǒng)管理員的,當(dāng)系統(tǒng)管理員登錄系統(tǒng)后臺(tái)時(shí),系統(tǒng)后臺(tái)提供給系統(tǒng)管理員的功能應(yīng)該有:對(duì)新聞欄目的瀏覽、添加、修改和刪除;對(duì)新聞條目的瀏覽、添加、修改和刪除。具體需求見(jiàn)表3-2系統(tǒng)后臺(tái)管理需求表。</p><p> 表3-2系統(tǒng)后臺(tái)管理需求表</p>
42、<p><b> 3.2 角色識(shí)別</b></p><p> 角色識(shí)別的任務(wù)是找到所有可能與系統(tǒng)發(fā)生交互行為的外部實(shí)體、對(duì)象和系統(tǒng)。他們的行為不受系統(tǒng)控制,但是可以提供輸入信息。</p><p> 從系統(tǒng)描述可知,在前臺(tái)顯示模塊中,系統(tǒng)主要對(duì)一般用戶(hù)的瀏覽需求和管理員的登錄需求做出響應(yīng);而在后臺(tái)管理系統(tǒng)中,系統(tǒng)管理員可以對(duì)新聞欄目及新聞進(jìn)行瀏覽、添加、
43、修改和刪除。所以本系統(tǒng)應(yīng)包括兩個(gè)角色:一般用戶(hù)和系統(tǒng)管理員用戶(hù)。而事實(shí)上這些人對(duì)于系統(tǒng)來(lái)說(shuō)都是用戶(hù),只是當(dāng)用戶(hù)登錄到后臺(tái)便成了管理員而已。因此,系統(tǒng)角色可以統(tǒng)一為:用戶(hù)。</p><p><b> 3.3 用例識(shí)別</b></p><p> 在UML文檔中,用例(即Use Case)的定義是:在不展現(xiàn)一個(gè)系統(tǒng)或子系統(tǒng)內(nèi)部結(jié)構(gòu)的情況下,對(duì)系統(tǒng)或子系統(tǒng)的某個(gè)連貫的功能
44、單元的定義和描述[6]。</p><p> 用例識(shí)別的目標(biāo)是在需求描述和系統(tǒng)角色識(shí)別的基礎(chǔ)上,識(shí)別出角色相映的用例,從而可以得出系統(tǒng)的用例模型,如圖3-1是“系統(tǒng)用例模型圖”。</p><p> 圖3-1系統(tǒng)用例模型圖</p><p><b> 3.4 用例文檔</b></p><p> 用例文檔主要為了描述出
45、用例的詳細(xì)業(yè)務(wù)流程,本系統(tǒng)主要包括以下用例文檔:</p><p> (1) 前臺(tái)顯示用例文檔:</p><p> 基本流程:當(dāng)用戶(hù)在前臺(tái)瀏覽新聞系統(tǒng)時(shí),系統(tǒng)默認(rèn)顯示給用戶(hù)的是所有欄目和所有新聞條目(每頁(yè)顯示8條新聞,一頁(yè)顯示不完可以分頁(yè)顯示)。當(dāng)用戶(hù)點(diǎn)擊某個(gè)欄目時(shí),系統(tǒng)顯示相應(yīng)的新聞條目。</p><p> 分支流程:如果某個(gè)欄目下沒(méi)有任何新聞,系統(tǒng)將顯示一條
46、信息,以指出該欄目沒(méi)有新聞可以顯示。</p><p> ?。?)登錄入口用例文檔:</p><p> 基本流程:用戶(hù)在前臺(tái)顯示頁(yè)面提供的登錄后臺(tái)系統(tǒng)的登錄入口中輸入用戶(hù)信息,系統(tǒng)根據(jù)用戶(hù)的登錄信息進(jìn)行檢驗(yàn),然后進(jìn)入系統(tǒng)后臺(tái)管理系統(tǒng)。</p><p> 分支流程:如果用戶(hù)取消登錄,則系統(tǒng)將信息重置,用戶(hù)回到前臺(tái)顯示頁(yè)面。</p><p>
47、 如果用戶(hù)輸入的信息不正確,系統(tǒng)將控制權(quán)交給“登錄錯(cuò)誤”頁(yè)面,用戶(hù)可以在此重新輸入用戶(hù)名和密碼進(jìn)行登錄。</p><p> ?。?)系統(tǒng)后臺(tái)管理用例文檔:</p><p> 基本流程:用戶(hù)在登錄系統(tǒng)后臺(tái)后,可以對(duì)新聞和欄目進(jìn)行操作,根據(jù)用戶(hù)的操作選擇,進(jìn)入擴(kuò)展用例。</p><p> (4)新聞管理用例文檔:</p><p> 基本流程
48、:用戶(hù)進(jìn)入系統(tǒng)后便可瀏覽到新聞條目,在瀏覽過(guò)程中,用戶(hù)可以修改和刪除新聞。用戶(hù)在進(jìn)行相應(yīng)的操作后,系統(tǒng)存儲(chǔ)新的信息,系統(tǒng)將控制權(quán)交給后臺(tái)管理用例。</p><p> 分支流程:如果用戶(hù)放棄對(duì)新聞的相應(yīng)操作,則系統(tǒng)直接將控制權(quán)交給后臺(tái)管理用例。</p><p> 如果用戶(hù)選擇添加新聞,系統(tǒng)將控制權(quán)交給添加新聞?dòng)美?lt;/p><p> ?。?)添加新聞?dòng)美臋n:&l
49、t;/p><p> 基本流程:用戶(hù)填寫(xiě)新聞相關(guān)信息,并確定添加新聞時(shí),系統(tǒng)將存儲(chǔ)此新聞,并將控制權(quán)交給新聞管理用例。</p><p> 分支流程:如果用戶(hù)放棄新聞添加,系統(tǒng)將直接將控制權(quán)交回給新聞管理用例。</p><p> (6)欄目管理用例文檔:</p><p> 基本流程:用戶(hù)在后臺(tái)管理中選擇欄目管理時(shí),用戶(hù)將瀏覽到系統(tǒng)已有欄目,并
50、可對(duì)其進(jìn)行修改刪除操作,用戶(hù)在進(jìn)行相應(yīng)操作后,系統(tǒng)會(huì)存儲(chǔ)新的信息,控制權(quán)將回到欄目管理用例。</p><p> 分支流程:如果用戶(hù)放棄相應(yīng)操作,控制權(quán)將直接回到欄目管理用例。</p><p> 如果用戶(hù)選擇添加欄目,控制權(quán)將交給添加欄目用例。</p><p> (7)添加欄目用例文檔:</p><p> 基本流程:用戶(hù)填寫(xiě)欄目相關(guān)信息
51、,并確定添加欄目,系統(tǒng)將存儲(chǔ)此欄目,并將控制權(quán)交給欄目管理用例。</p><p> 分支流程:如果用戶(hù)放棄欄目添加,控制權(quán)將直接交回到欄目管理用例。</p><p> 3.5 用例驅(qū)動(dòng)分析</p><p> 通過(guò)以上對(duì)系統(tǒng)需求的分析已經(jīng)定義了系統(tǒng)的角色和系統(tǒng)用例。系統(tǒng)根據(jù)用例模型可以對(duì)用例進(jìn)行細(xì)化,從而展現(xiàn)整個(gè)用例的活動(dòng)順序。序列圖則反映了用例各個(gè)類(lèi)之間的具體
52、調(diào)用過(guò)程[7],如圖便是根據(jù)系統(tǒng)的角色分析和系統(tǒng)用例模型而得出的相應(yīng)活動(dòng)的順序圖如圖3-2至圖3-7。</p><p> 圖3-2前臺(tái)活動(dòng)順序圖</p><p> 圖3-3用戶(hù)登錄活動(dòng)順序圖</p><p> 圖3-4后臺(tái)新聞管理活動(dòng)順序圖</p><p> 圖3-5添加新聞活動(dòng)順序圖</p><p>
53、 圖3-6 欄目管理活動(dòng)順序圖</p><p> 圖3-7 添加欄目活動(dòng)順序圖</p><p><b> 3.6 小結(jié)</b></p><p> 本章從用戶(hù)的角度,分析了系統(tǒng)的需求用例,畫(huà)出了系統(tǒng)用例模型圖,并得出了相應(yīng)的用例文檔;做出了用例驅(qū)動(dòng)分析,并得出了相應(yīng)的順序圖。本章的工作為系統(tǒng)的設(shè)計(jì)打下基礎(chǔ)。</p><p
54、><b> 第4章 系統(tǒng)設(shè)計(jì)</b></p><p> 根據(jù)上一章的需求用例分析,本章從先總體構(gòu)架的角度對(duì)系統(tǒng)進(jìn)行總體設(shè)計(jì),然后根據(jù)MVC三層模式對(duì)系統(tǒng)進(jìn)行詳細(xì)設(shè)計(jì),最后對(duì)系統(tǒng)數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)連接池進(jìn)行了設(shè)計(jì)。</p><p> 4.1 系統(tǒng)總體設(shè)計(jì)</p><p> 4.1.1 系統(tǒng)構(gòu)架</p><p>
55、 系統(tǒng)基于MVC Model2設(shè)計(jì)模式,設(shè)計(jì)出本系統(tǒng)自己的設(shè)計(jì)模式,在MVC Model2基礎(chǔ)上加入數(shù)據(jù)庫(kù)連接池模塊層對(duì)數(shù)據(jù)庫(kù)操作進(jìn)行封裝。具體模式圖如圖4-1。</p><p> 圖4-1系統(tǒng)設(shè)計(jì)模式圖</p><p> 對(duì)于MVC設(shè)計(jì)模式,在本系統(tǒng)中具體實(shí)現(xiàn)方式是:Model由JavaBean完成,View由JSP完成,Controller由Servlet完成,再加上數(shù)據(jù)庫(kù)連接
56、池專(zhuān)門(mén)負(fù)責(zé)數(shù)據(jù)庫(kù)連接和管理。本系統(tǒng)具體構(gòu)架如圖4-2。</p><p> 圖4-2系統(tǒng)構(gòu)架圖</p><p> 4.1.2 發(fā)現(xiàn)系統(tǒng)類(lèi)</p><p> 發(fā)現(xiàn)系統(tǒng)類(lèi)是域建模的工作,其主要目的是根據(jù)系統(tǒng)需求用例及描述,找到代表與本新聞系統(tǒng)將要解決的問(wèn)題有關(guān)的事務(wù)和概念的“對(duì)象”,即類(lèi)[1]。</p><p> 在本系統(tǒng)中,根據(jù)第3章中
57、對(duì)系統(tǒng)需求用例的分析,可以總結(jié)出如下的需求集: </p><p> ?。?)系統(tǒng)應(yīng)該分為前臺(tái)和后臺(tái);</p><p> ?。?)系統(tǒng)前臺(tái)應(yīng)該可以顯示新聞欄目和新聞以及用于管理員登錄系統(tǒng)后臺(tái)的登錄界面;</p><p> ?。?)一般用戶(hù)應(yīng)該可以在前臺(tái)自由瀏覽新聞,包括選擇性地瀏覽新聞即先選擇新聞欄目再瀏覽新聞欄目下的新聞條目;用戶(hù)在瀏覽新聞時(shí),系統(tǒng)應(yīng)該可以將顯示給用
58、戶(hù)一個(gè)包含新聞具體內(nèi)容的HTML文件;</p><p> ?。?)系統(tǒng)管理員應(yīng)該可以登錄到系統(tǒng)后臺(tái);</p><p> (5)系統(tǒng)管理員應(yīng)該可以對(duì)新聞欄目和新聞進(jìn)行查看、修改、刪除和添加操作。系統(tǒng)在添加新聞時(shí),應(yīng)該可以將添加的新聞保存為一個(gè)HTML文件。</p><p> 由以上需求集進(jìn)一步分析可知:</p><p> ?。?)詞“系統(tǒng)”
59、太模糊,不能成為一個(gè)對(duì)象的名稱(chēng);同樣,“前臺(tái)”和“后臺(tái)”為系統(tǒng)的兩個(gè)不同的區(qū)域,亦不能成為對(duì)象名稱(chēng);</p><p> ?。?)“新聞欄目”和“新聞”為系統(tǒng)的兩個(gè)主要內(nèi)容,所以應(yīng)該分別作為一個(gè)類(lèi),而新聞欄目和新聞的顯示需要管理類(lèi)進(jìn)行管理,系統(tǒng)管理員要對(duì)欄目和新聞進(jìn)行查看、添加、修改和刪除,也需要相應(yīng)的管理類(lèi)進(jìn)行管理,所以,系統(tǒng)對(duì)于新聞欄目和新聞分別需要“欄目管理類(lèi)”和 “新聞管理類(lèi)”;</p>&l
60、t;p> ?。?)要將添加的新聞保存為一個(gè)HTML文件,需要一個(gè)從表單中收集信息并將其轉(zhuǎn)換為一個(gè)HTML文件的類(lèi);</p><p> (4)系統(tǒng)要保存信息,必須用到數(shù)據(jù)庫(kù),所以需要一個(gè)數(shù)據(jù)庫(kù)連接的類(lèi);</p><p> ?。?)要將系統(tǒng)的各個(gè)功能執(zhí)行成功,少不了相應(yīng)的控制類(lèi)。</p><p> 因此,識(shí)別出系統(tǒng)主要的類(lèi):新聞?lì)悾∟ews)和新聞管理類(lèi)(Ne
61、wsMgr),欄目類(lèi)(Category)和欄目管理類(lèi)(CategoryMgr),數(shù)據(jù)庫(kù)連接池的連接對(duì)象類(lèi)(ConnectionObject)和連接池管理類(lèi)(ConnectionPool)以及各個(gè)Servlet類(lèi)。</p><p><b> 4.2 視圖層設(shè)計(jì)</b></p><p> 4.2.1 前臺(tái)設(shè)計(jì)</p><p> 當(dāng)一個(gè)用戶(hù)瀏覽
62、新聞系統(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ì)得比較簡(jiǎn)潔,方便。前臺(tái)界面設(shè)計(jì)如圖4-3所示。</p><p> 圖4-3前臺(tái)界面設(shè)計(jì)圖</p><p> 首先,在本系統(tǒng)的前臺(tái)界面的頂部用戶(hù)可以看到一個(gè)專(zhuān)為系統(tǒng)管理員用戶(hù)提供的登錄入口,為系統(tǒng)管理員提供了方便。而對(duì)于一般用戶(hù)來(lái)說(shuō),他們
63、也不會(huì)感覺(jué)這有何不妥,因?yàn)榇说卿浗缑姹容^簡(jiǎn)潔,并不會(huì)影響用戶(hù)正常地閱讀新聞。</p><p> 其次,在登錄界面的下方是新聞欄目的顯示,顯示系統(tǒng)新聞欄目數(shù)據(jù)庫(kù)中已有的新聞欄目,一目了然,用戶(hù)可以方便地找到自己喜歡和關(guān)心的新聞所在的欄目。</p><p> 再次,在新聞欄目的下方則是新聞條目的顯示,默認(rèn)的新聞條目的顯示方式是以表格的形式將系統(tǒng)新聞數(shù)據(jù)表中的新聞按發(fā)布時(shí)間進(jìn)行列表(發(fā)布較早
64、的新聞被放在列表的后面,而發(fā)布較遲的新聞被放在列表的前面,體現(xiàn)了新聞的“新”,即“時(shí)效性”)。新聞列表中僅顯示新聞的標(biāo)題,發(fā)布時(shí)間和新聞作者,如果想瀏覽整篇新聞,用戶(hù)可以點(diǎn)擊新聞標(biāo)題(超鏈接),這時(shí)系統(tǒng)會(huì)將用戶(hù)引導(dǎo)向一個(gè)包含新聞具體內(nèi)容的HTML文件。</p><p> 然后,用戶(hù)可以對(duì)自己比較關(guān)心和感興趣的新聞進(jìn)行有選擇性地瀏覽,這時(shí)新聞欄目便起作用了。當(dāng)用戶(hù)點(diǎn)擊新聞所在的欄目時(shí),系統(tǒng)在新聞列表中只顯示本欄目
65、的新聞條目。用戶(hù)可以在此瀏覽自己關(guān)心和感興趣的新聞。</p><p> 4.2.2 后臺(tái)設(shè)計(jì)</p><p> 4.2.2.1 后臺(tái)主頁(yè)面設(shè)計(jì)</p><p> 當(dāng)用戶(hù)登錄到系統(tǒng)后臺(tái)時(shí),他便成為系統(tǒng)管理員,可以執(zhí)行對(duì)新聞和欄目的查看、修改、刪除和添加。此界面主要是面向管理員的,界面要設(shè)計(jì)得簡(jiǎn)潔方便,使得系統(tǒng)管理員在管理系統(tǒng)時(shí)容易操作。后臺(tái)界面設(shè)計(jì)如圖4-4所示
66、。</p><p> 圖4-4后臺(tái)管理系統(tǒng)主界面設(shè)計(jì)圖</p><p> 當(dāng)管理員用戶(hù)登錄到系統(tǒng)后臺(tái)時(shí),呈現(xiàn)到他眼前的是系統(tǒng)后臺(tái)管理的主頁(yè)面:</p><p> 首先,系統(tǒng)后臺(tái)主頁(yè)面左上角是歡迎詞(Welcome+管理員名),對(duì)于管理員,他可以感覺(jué)到系統(tǒng)的人性化;對(duì)于系統(tǒng)本身,系統(tǒng)可以識(shí)別此時(shí)登錄的是哪個(gè)管理員,可以分配管理員的權(quán)限。</p>
67、<p> 其次,歡迎詞下方是系統(tǒng)管理的功能選擇,一目了然,管理員可以在此選擇要操作的模塊進(jìn)入,然后執(zhí)行相應(yīng)的操作。</p><p> 再次,再往下就是系統(tǒng)新聞列表,與前臺(tái)新聞顯示類(lèi)似,只是多了對(duì)新聞的操作(修改和刪除)。管理員可以在此對(duì)系統(tǒng)已有的新聞進(jìn)行修改和刪除操作。</p><p> 4.2.2.2 添加新聞設(shè)計(jì)</p><p> 如果系統(tǒng)管理
68、員在系統(tǒng)后臺(tái)主頁(yè)面中選擇“添加新聞”,管理員會(huì)進(jìn)入下圖這樣一個(gè)頁(yè)面進(jìn)行新聞的添加,添加完新聞標(biāo)題和新聞?wù)膬?nèi)容后,還必須選擇所添加新聞所屬的新聞欄目。確認(rèn)所有內(nèi)容均已填好,點(diǎn)擊“發(fā)表”按鈕,新聞發(fā)布工作完成,如果點(diǎn)擊“清除”按鈕,則系統(tǒng)清除管理員剛才的所有輸入,讓管理員重新填寫(xiě)新聞的各項(xiàng)內(nèi)容。管理員可以在系統(tǒng)后臺(tái)主頁(yè)面中看到剛剛發(fā)表的新聞,可以對(duì)其進(jìn)行相關(guān)操作,如圖4-5。</p><p> 圖4-5發(fā)布新聞
69、頁(yè)面設(shè)計(jì)圖</p><p> 4.2.2.3 欄目管理設(shè)計(jì)</p><p> 如果系統(tǒng)管理員在系統(tǒng)后臺(tái)主頁(yè)面中選擇“欄目管理”,系統(tǒng)將鏈接到新聞欄目管理頁(yè)面。欄目管理頁(yè)面上有一些鏈接按鈕,可以讓管理員鏈接到其他頁(yè)面。鏈接按鈕下面是系統(tǒng)已有新聞欄目的列表,在此,管理員可以對(duì)新聞發(fā)布系統(tǒng)的欄目進(jìn)行操作(編輯和刪除欄目)。</p><p> 如果管理員想要添加新聞欄
70、目,只需點(diǎn)擊“添加欄目”,就可以被鏈接到添加新聞欄目頁(yè)面(因?yàn)榇隧?yè)面比較簡(jiǎn)單,所以并未給出具體設(shè)計(jì)圖),添加欄目完成后,管理員可以在欄目管理主頁(yè)面的欄目列表中找到新添加的欄目,并對(duì)其進(jìn)行相關(guān)操作,如圖4-6。</p><p> 圖4-6欄目管理頁(yè)面設(shè)計(jì)圖</p><p><b> 4.3 模型層設(shè)計(jì)</b></p><p> 本系統(tǒng)模型
71、層由JavaBean完成,模型層設(shè)計(jì)主要設(shè)計(jì)出完成各個(gè)功能模塊中模型層的JavaBean類(lèi)。模型層的類(lèi)主要有新聞?lì)怤ews和新聞管理類(lèi)NewsMgr以及欄目類(lèi)Category和欄目管理類(lèi)CategoryMgr。</p><p> 4.3.1 前臺(tái)顯示和用戶(hù)登錄</p><p> 在前臺(tái)顯示和用戶(hù)登錄模塊中,充當(dāng)模型層的是News和NewsMgr根據(jù)系統(tǒng)分析中的系統(tǒng)前臺(tái)需求用例分析和上述
72、的前臺(tái)界面功能描述,對(duì)系統(tǒng)的前臺(tái)的每一個(gè)流程、每一個(gè)模塊進(jìn)行詳細(xì)功能設(shè)計(jì)。其相應(yīng)的功能模型如下圖4-7。</p><p> 圖4-7系統(tǒng)前臺(tái)顯示和用戶(hù)登錄靜態(tài)模型圖</p><p> 根據(jù)上面的系統(tǒng)前臺(tái)模型,我們可以來(lái)說(shuō)明各個(gè)類(lèi)的責(zé)任和功能。</p><p> 表4-1前臺(tái)類(lèi)責(zé)任表</p><p> 4.3.2 新聞管理</
73、p><p> 管理員在系統(tǒng)后臺(tái)主界面中可以對(duì)已有新聞進(jìn)行管理(修改、刪除和添加),新聞管理模塊中充當(dāng)模型層的仍然是News和NewsMgr。其靜態(tài)模型如圖4-8。</p><p> 圖4-8新聞管理靜態(tài)模型圖</p><p> 根據(jù)上面的新聞管理模型,我們可以對(duì)各個(gè)類(lèi)的責(zé)任和功能進(jìn)行說(shuō)明。</p><p> 表4-2新聞管理類(lèi)責(zé)任表&
74、lt;/p><p> 表4-2新聞管理類(lèi)責(zé)任表(續(xù))</p><p> 4.3.3 欄目管理</p><p> 欄目管理中可以對(duì)已有欄目的編輯、刪除以及添加新欄目,欄目管理靜態(tài)模型如圖4-9。</p><p> 圖4-9欄目管理靜態(tài)模型圖</p><p> 根據(jù)上面的欄目管理靜態(tài)模型設(shè)計(jì),我們可以對(duì)各個(gè)類(lèi)的責(zé)
75、任和功能進(jìn)行說(shuō)明。</p><p> 表4-3欄目管理類(lèi)責(zé)任表</p><p> 表4-3欄目管理類(lèi)責(zé)任表(續(xù))</p><p><b> 4.4 控制層設(shè)計(jì)</b></p><p> 4.4.1 用戶(hù)登錄</p><p> 當(dāng)用戶(hù)通過(guò)系統(tǒng)前臺(tái)提供的登錄入口登錄后臺(tái)系統(tǒng)時(shí),系統(tǒng)將用戶(hù)
76、的登錄信息提交給登錄控制層處理。所以登錄控制器必須對(duì)用戶(hù)登錄信息進(jìn)行識(shí)別,判斷其是否有權(quán)限登錄到后臺(tái)系統(tǒng)。用戶(hù)登錄控制器由LoginServlet完成,實(shí)現(xiàn)登錄控制的靜態(tài)類(lèi)圖如圖4-10。</p><p> 圖4-10登錄控制靜態(tài)模型圖</p><p> 根據(jù)圖4-10登錄控制靜態(tài)模型設(shè)計(jì),對(duì)各個(gè)類(lèi)的責(zé)任和功能進(jìn)行說(shuō)明。</p><p> 表4-4用戶(hù)等錄
77、控制類(lèi)責(zé)任表</p><p> 4.4.2 新聞管理</p><p> 新聞管理中主要涉及到新聞信息的添加、刪除和修改,所以其控制層由AddNewsServlet、DeleteServlet和EditServlet完成。新聞管理靜態(tài)類(lèi)圖如圖4-11。</p><p> 圖4-11新聞管理靜態(tài)模型圖</p><p> 根據(jù)圖4-11新
78、聞管理靜態(tài)模型設(shè)計(jì),對(duì)各個(gè)類(lèi)的責(zé)任和功能進(jìn)行說(shuō)明。</p><p> 表4-5新聞管理控制層靜態(tài)類(lèi)責(zé)任表</p><p> 4.4.3 欄目管理</p><p> 欄目管理模塊主要對(duì)新聞欄目進(jìn)行修改、刪除和添加,此功能模塊控制層由EditCategoryServlet、DeleteCategoryServlet和AddCategoryServlet完成。欄目
79、管理靜態(tài)類(lèi)圖設(shè)計(jì)如圖4-12。</p><p> 圖4-12欄目管理靜態(tài)模型圖</p><p> 根據(jù)圖4-12欄目管理靜態(tài)模型設(shè)計(jì),對(duì)各個(gè)類(lèi)的責(zé)任和功能進(jìn)行說(shuō)明。</p><p> 表4-6欄目管理控制層靜態(tài)類(lèi)責(zé)任表</p><p><b> 4.5 數(shù)據(jù)庫(kù)設(shè)計(jì)</b></p><p&g
80、t; 4.5.1 數(shù)據(jù)庫(kù)需求分析</p><p> 由于本系統(tǒng)面向的對(duì)象有兩個(gè):一般用戶(hù)和系統(tǒng)管理員。所以,數(shù)據(jù)庫(kù)需求分析中就要考慮兩方面因素。</p><p> 對(duì)于一般用戶(hù)來(lái)說(shuō),他們所關(guān)心的是新聞的瀏覽。通過(guò)系統(tǒng)功能分析,針對(duì)一般新聞?dòng)脩?hù)的需求,總結(jié)出如下需求信息:</p><p> (1)每個(gè)新聞對(duì)應(yīng)一個(gè)HTML文件;</p><p
81、> ?。?)每個(gè)新聞只能對(duì)應(yīng)一個(gè)新聞欄目;</p><p> (3)每個(gè)欄目下可以有多個(gè)新聞。</p><p> (4)每個(gè)新聞除了包含新聞的基本信息之外,還得包含新聞所對(duì)應(yīng)的HTML路徑信息。</p><p> 對(duì)于系統(tǒng)管理員來(lái)說(shuō),他們所關(guān)心的是如何對(duì)新聞欄目和新聞的添加、修改和刪除。通過(guò)分析,針對(duì)系統(tǒng)管理員,總結(jié)出如下需求信息:</p>
82、<p> ?。?)管理員可以對(duì)新聞欄目進(jìn)行增、刪、改;</p><p> ?。?)管理員可以對(duì)新聞條目進(jìn)行增、刪、改。</p><p> 4.5.2 數(shù)據(jù)庫(kù)概念設(shè)計(jì)</p><p> 根據(jù)上面的數(shù)據(jù)庫(kù)需求分析,就可以構(gòu)造出各種實(shí)體,以及并根據(jù)它們的關(guān)系繪制出實(shí)體間的E-R圖[8],為以后的邏輯設(shè)計(jì)打下基礎(chǔ)。如圖4-13為本新聞發(fā)布系統(tǒng)實(shí)體間的E-R圖
83、。</p><p> 圖4-13實(shí)體之間關(guān)系的E-R圖[8]</p><p> 4.5.3 數(shù)據(jù)庫(kù)邏輯設(shè)計(jì)</p><p> 根據(jù)數(shù)據(jù)庫(kù)需求分析和數(shù)據(jù)庫(kù)概念設(shè)計(jì),設(shè)計(jì)如下所示的數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu):</p><p> 管理員表(用戶(hù)名,密碼),用戶(hù)名為主碼;</p><p> 欄目表(欄目編號(hào),欄目名稱(chēng)),欄目
84、編號(hào)為主碼;</p><p> 新聞表(新聞編號(hào),新聞標(biāo)題,新聞內(nèi)容,管理員名,所屬欄目,發(fā)布時(shí)間),新聞編號(hào)為主碼,管理員名和所屬欄目為外碼;</p><p> 4.5.4 數(shù)據(jù)庫(kù)表設(shè)計(jì)</p><p> 數(shù)據(jù)庫(kù)邏輯設(shè)計(jì)完畢后,現(xiàn)在可以將上面的數(shù)據(jù)庫(kù)概念結(jié)構(gòu)轉(zhuǎn)化為某種數(shù)據(jù)庫(kù)系統(tǒng)所支持的實(shí)際數(shù)據(jù)庫(kù)模型。本系統(tǒng)使用SQL Server2000數(shù)據(jù)庫(kù)。</p
85、><p> 新聞發(fā)布系統(tǒng)的數(shù)據(jù)庫(kù)中各表的設(shè)計(jì)結(jié)果如下面幾個(gè)表所示。</p><p> 表4-7管理員Master表</p><p> 表4-8新聞News表</p><p> 表4-9欄目Category表</p><p> 4.6 數(shù)據(jù)庫(kù)連接池設(shè)計(jì)</p><p> 4.6.1
86、傳統(tǒng)的數(shù)據(jù)庫(kù)連接</p><p> 傳統(tǒng)的數(shù)據(jù)庫(kù)連接模式基本上是按以下步驟進(jìn)行:①在主程序(如Servlet、Beans)中建立數(shù)據(jù)庫(kù)連接;②進(jìn)行SQL操作,取出數(shù)據(jù);③斷開(kāi)數(shù)據(jù)庫(kù)連接[9]。</p><p> 4.6.2 數(shù)據(jù)庫(kù)連接池的必要性</p><p> 傳統(tǒng)的數(shù)據(jù)庫(kù)連接模式開(kāi)發(fā),存在很多問(wèn)題。首先,要為每次web請(qǐng)求(例如客戶(hù)瀏覽一件商品信息)建立一
87、次數(shù)據(jù)庫(kù)連接。當(dāng)有多個(gè)用戶(hù)連接系統(tǒng)的時(shí)候,在同一時(shí)間有可能會(huì)不止一個(gè)用戶(hù)需要數(shù)據(jù)庫(kù)連接,在這種情況下,系統(tǒng)開(kāi)銷(xiāo)也是相當(dāng)大的。連接數(shù)據(jù)庫(kù)不僅要開(kāi)銷(xiāo)一定的通訊和內(nèi)存資源,還必須完成用戶(hù)驗(yàn)證、安全上下文配置這類(lèi)任務(wù);同時(shí)應(yīng)用程序還要管理每一個(gè)連接,確保這些連接在被使用完后能被正確關(guān)閉。這些操作往往成為最耗時(shí)的操作,很多時(shí)候,一個(gè)網(wǎng)站的速度瓶頸可能就在于此,因而對(duì)數(shù)據(jù)庫(kù)的連接的管理顯得特別重要。</p><p> 本系
88、統(tǒng)是一個(gè)新聞發(fā)布和管理的系統(tǒng),新聞系統(tǒng)是面向廣大閱讀新聞的用戶(hù)的,用戶(hù)需要閱讀新聞時(shí),系統(tǒng)需要從新聞數(shù)據(jù)庫(kù)中調(diào)出用戶(hù)需要的新聞條目。如果采用傳統(tǒng)的數(shù)據(jù)庫(kù)鏈接模式,那么對(duì)于每一個(gè)閱讀新聞的用戶(hù),當(dāng)他讀取新聞時(shí),系統(tǒng)都要為他建立一次數(shù)據(jù)庫(kù)連接,而當(dāng)他退出新聞閱讀時(shí),系統(tǒng)釋放數(shù)據(jù)庫(kù)鏈接,那么,系統(tǒng)的數(shù)據(jù)庫(kù)連接是非常頻繁的。這樣也會(huì)產(chǎn)生上面提到的種種問(wèn)題,但是,如果采用數(shù)據(jù)庫(kù)鏈接池就方便得多,本系統(tǒng)采用的便是數(shù)據(jù)庫(kù)鏈接池模式對(duì)數(shù)據(jù)庫(kù)進(jìn)行連接。&
89、lt;/p><p> 4.6.3 數(shù)據(jù)庫(kù)連接池工作原理</p><p> 數(shù)據(jù)庫(kù)連接池實(shí)際上是在一個(gè)容器對(duì)象中建立一定數(shù)目的數(shù)據(jù)庫(kù)連接對(duì)象。當(dāng)需要使用數(shù)據(jù)庫(kù)連接的時(shí)候,直接從連接池中取出空閑對(duì)象供用戶(hù)使用。當(dāng)用戶(hù)使用完后再把連接對(duì)象放回連接池中,以節(jié)省重新建立連接對(duì)象所花費(fèi)的時(shí)間。工作原理如圖4-14所示。</p><p> 圖4-14連接池工作原理圖[10]&
90、lt;/p><p> 當(dāng)連接池工作時(shí),首先,在連接池中應(yīng)當(dāng)初始化內(nèi)含一定數(shù)量的連接對(duì)象;在使用過(guò)程中,如果池中的連接對(duì)象不夠,可根據(jù)需要逐漸加入新的連接對(duì)象,但池中的連接對(duì)象也不能是無(wú)限的,當(dāng)達(dá)到最大連接對(duì)象數(shù)量時(shí),便不能再往池中添加新的連接對(duì)象,如果此時(shí)連接對(duì)象數(shù)量仍然不夠,就只能等待別的連接對(duì)象釋放后再使用,即定義連接池中連接對(duì)象的上下界和連接超時(shí)時(shí)間。定義上下界可根據(jù)客戶(hù)端的情況動(dòng)態(tài)地使用資源,以提高系統(tǒng)的效
91、率。另外,同一個(gè)連接對(duì)象如果被使用的次數(shù)太多,可能會(huì)導(dǎo)致該連接對(duì)象的不穩(wěn)定。所以需要設(shè)定一個(gè)連接對(duì)象可使用的最大次數(shù)。當(dāng)使用次數(shù)達(dá)到最大次數(shù)后就將該連接對(duì)象關(guān)閉并從池中刪除。</p><p> 4.6.4 具體設(shè)計(jì)</p><p> 根據(jù)連接池的工作原理,本文設(shè)計(jì)了一個(gè)的連接池組件。該連接池組件由兩個(gè)Java類(lèi)——ConnectionObject和ConnectionPool和一個(gè)數(shù)據(jù)
92、庫(kù)連接配置文件(dbconfig.txt)構(gòu)成。其中:ConnectionObject稱(chēng)為連接對(duì)象類(lèi),用來(lái)實(shí)現(xiàn)對(duì)一個(gè)連接對(duì)象狀態(tài)的管理,并為連接池管理類(lèi)提供服務(wù);ConnectionPool稱(chēng)為連接池管理類(lèi),用來(lái)實(shí)現(xiàn)對(duì)連接池的管理和調(diào)度;dbconfig.txt稱(chēng)為數(shù)據(jù)庫(kù)連接配置文件,存放數(shù)據(jù)庫(kù)連接所需要的配置信息,供連接池工作時(shí)使用。連接池內(nèi)部聯(lián)系類(lèi)圖如圖4-15所示。</p><p> 圖4-15連接池內(nèi)
93、部主件聯(lián)系圖</p><p><b> 4.7 小結(jié)</b></p><p> 本章首先進(jìn)行了系統(tǒng)總體設(shè)計(jì),接著按照MVC設(shè)計(jì)模式的三層結(jié)構(gòu)根據(jù)系統(tǒng)需求用例對(duì)新聞發(fā)布系統(tǒng)功能進(jìn)行設(shè)計(jì),最后設(shè)計(jì)出系統(tǒng)的數(shù)據(jù)庫(kù)并對(duì)數(shù)據(jù)庫(kù)連接進(jìn)行了相應(yīng)的設(shè)計(jì)。通過(guò)本章,系統(tǒng)設(shè)計(jì)出了用來(lái)完成系統(tǒng)用例的業(yè)務(wù)功能模型以及完成各個(gè)用例的類(lèi)。</p><p><b&
94、gt; 第5章 系統(tǒng)實(shí)現(xiàn)</b></p><p> 根據(jù)上一章的設(shè)計(jì)思路設(shè)計(jì)用來(lái)完成系統(tǒng)用例的業(yè)務(wù)功能,整個(gè)系統(tǒng)按照MVC模式的三個(gè)部分以及數(shù)據(jù)庫(kù)連接池進(jìn)行編碼實(shí)現(xiàn),分為視圖層、控制層、模型層和數(shù)據(jù)庫(kù)連接池。由于系統(tǒng)實(shí)現(xiàn)的代碼量較大限于篇幅,文中僅顯示部分代碼,具體實(shí)現(xiàn)代碼參見(jiàn)附件。</p><p><b> 5.1 視圖層實(shí)現(xiàn)</b></p
95、><p> 在系統(tǒng)其它視圖層部分實(shí)現(xiàn)之前,先對(duì)那些常用的公共頁(yè)面模塊部分實(shí)現(xiàn)。</p><p> 5.1.1 公共頁(yè)面</p><p> include.jsp是一個(gè)包含頁(yè)面,它包含了一些其它頁(yè)面可能經(jīng)常用到的JavaBean包以及一些在其它頁(yè)面中常用到的參數(shù)。具體代碼如下:</p><p> <%@ page contentTyp
96、e="text/html;charset=UTF-8"%></p><p> <!--開(kāi)始導(dǎo)入packages--></p><p> <%@ page import="java.io.*,java.util.*,java.sql.*"%></p><p> <%@ page impo
97、rt="mybean.*"%></p><p> <!--導(dǎo)入結(jié)束--></p><p><b> <%</b></p><p> String title = "筱筱新聞管理系統(tǒng)";</p><p> String placebgcolor = &
98、quot;#EEEEEE";</p><p> String tablebgcolor = "#336699";</p><p> String trbgcolor = "#336699";</p><p> String tdbgcolor = "#FFFFFF";</p>
99、<p> String tablebgcolor2 = "#6699CC";</p><p> String trbgcolor2 = "#EEEEEE";</p><p> String trbgcolor3 = "#FFFFFF";</p><p> String tdbgcolor2
100、 = "#6699CC";</p><p> String tdbgcolor3 = "#DDDDDD";</p><p> String tdbgcolor4 = "#EEEEEE";</p><p> String tablewidth = "100%";</p>
101、<p> String tablewidth2 = "100%";</p><p><b> %></b></p><p> session.jsp的設(shè)置主要是方便系統(tǒng)對(duì)管理員權(quán)限的判定。因?yàn)?,如果一個(gè)用戶(hù)登錄到系統(tǒng),系統(tǒng)便會(huì)給他設(shè)定一個(gè)session,這個(gè)session在他退出系統(tǒng)之前均有效。系統(tǒng)可以通過(guò)session來(lái)判
102、定用戶(hù)是否登錄,并且,如果某個(gè)用戶(hù)要執(zhí)行系統(tǒng)某些功能時(shí),系統(tǒng)也可以通過(guò)一個(gè)session對(duì)其進(jìn)行操作權(quán)限的判定。具體代碼如下:</p><p><b> <%</b></p><p> String userName = (String) session.getAttribute("username");</p><p
103、> if (userName==null){ </p><p> response.sendRedirect("error.jsp");</p><p><b> }</b></p><p><b> %></b></p><p> foot.jsp中包含了
104、其它頁(yè)面常用到的頁(yè)面尾部的設(shè)計(jì)。具體代碼如下:</p><p> <%@ page contentType="text/html;charset=UTF-8"%></p><p> <TABLE bgColor=#eeeeee border=0 width=100% align=center></p><p><
105、b> <TBODY></b></p><p><b> <TR></b></p><p> <TD align=center><BR>新聞管理系統(tǒng) Copyright(c)Elven 2007 &
106、lt;A HREF="../index.jsp">新聞首頁(yè)</A></TD></p><p><b> </TR></b></p><p><b> </TBODY></b></p><p><b> </TABLE>&l
107、t;/b></p><p><b> </BODY></b></p><p><b> </HTML></b></p><p> 本系統(tǒng)的CSS設(shè)計(jì)了一個(gè)CSS樣式表(css.css)它主要設(shè)置頁(yè)面中顯示的Body結(jié)構(gòu)的樣式、超鏈接A的樣式、頁(yè)面中表格Table樣式等的設(shè)置。CSS樣式表
108、可以使系統(tǒng)整體風(fēng)格一致。</p><p> 5.1.2 前臺(tái)實(shí)現(xiàn)</p><p> 系統(tǒng)前臺(tái)視圖層由index.jsp實(shí)現(xiàn)。index.jsp僅負(fù)責(zé)顯示新聞欄目和系統(tǒng)已有新聞以及為管理員用戶(hù)提供一個(gè)登錄入口。index.jsp頁(yè)面顯示截圖如圖5-1。</p><p> 圖5-1index.jsp頁(yè)面實(shí)現(xiàn)截圖</p><p> 5.1
109、.3 后臺(tái)實(shí)現(xiàn)</p><p> 系統(tǒng)后臺(tái)視圖層主要由mian.jsp、addnews.jsp、classmanage.jsp和addclass.jsp組成。</p><p> mian.jsp是系統(tǒng)后臺(tái)主頁(yè)面,是管理員登錄到系統(tǒng)所看到的第一個(gè)頁(yè)面。其實(shí)現(xiàn)顯示截圖如圖5-2。</p><p> 圖5-2main.jsp實(shí)現(xiàn)截圖</p><
110、p> addnews.jsp實(shí)現(xiàn)新聞的添加。當(dāng)用戶(hù)在后臺(tái)主頁(yè)面中選擇添加新聞按鈕時(shí),管理員便進(jìn)入此頁(yè)面。其實(shí)現(xiàn)截圖如圖5-3。</p><p> 圖5-3addnews.jsp實(shí)現(xiàn)截圖</p><p> classmanage.jsp實(shí)現(xiàn)新聞欄目的管理,管理員可以在此對(duì)進(jìn)行新聞欄目的相關(guān)操作。其實(shí)現(xiàn)截圖如圖5-4。</p><p> 圖5-4cla
111、ssmanage.jsp實(shí)現(xiàn)截圖</p><p> addclass.jsp是classmanage.jsp的一個(gè)子頁(yè)面,它實(shí)現(xiàn)欄目的添加功能。其實(shí)現(xiàn)截圖如圖5-5。</p><p> 圖5-5addclass.jsp實(shí)現(xiàn)截圖</p><p><b> 5.2 模型層實(shí)現(xiàn)</b></p><p> 模型層實(shí)現(xiàn)中
112、主要給出了實(shí)現(xiàn)功能模塊中的各類(lèi)的功能函數(shù),具體代碼見(jiàn)附件。</p><p> 5.2.1 新聞顯示</p><p> 在前臺(tái)頁(yè)面中顯示系統(tǒng)已有新聞,需要新聞?lì)怤ews和新聞管理類(lèi)NewsMgr。在此模塊中主要實(shí)現(xiàn)將新聞數(shù)據(jù)庫(kù)中的新聞顯示到前臺(tái)頁(yè)面中。實(shí)現(xiàn)新聞顯示的功能函數(shù)如下:</p><p> public Collection getAllNews()//
113、查詢(xún)所有的新聞;</p><p> public Collection getAllByCategory(int categoryId)// 根據(jù)CategoryId得到某欄目所有的新聞;</p><p> public News getById(int id)// 根據(jù)ID得到新聞;</p><p> public int getTotal()//計(jì)算新聞的
114、總數(shù);</p><p> public int getTotalByCategoryId(int categoryId)// 計(jì)算某類(lèi)別新聞的總數(shù)。</p><p> 5.2.2 新聞管理</p><p> 新聞管理模塊是在系統(tǒng)后臺(tái)對(duì)已有新聞進(jìn)行編輯和刪除以及添加新聞。在新聞管理類(lèi)中如此實(shí)現(xiàn)新聞管理:</p><p> public
115、News getById(int id)// 根據(jù)ID得到新聞;</p><p> public void modify(News news)// 修改新聞;</p><p> public void delete(int id)// 刪除新聞;</p><p> public void add(News news)// 添加新聞。</p>&l
116、t;p> 5.2.3 欄目管理</p><p> 欄目管理模塊中,主要實(shí)現(xiàn)新聞欄目的添加、編輯和刪除。欄目類(lèi)Category和欄目管理類(lèi)CategoryMgr如下實(shí)現(xiàn)欄目管理功能:</p><p> public Category getById(int id)// 根據(jù)ID得到欄目;</p><p> public void add(Category
117、 category)// 添加新的欄目;</p><p> public void modify(Category category)// 修改欄目名稱(chēng);</p><p> public void delete(int id)// 刪除欄目。</p><p><b> 5.3 控制層實(shí)現(xiàn)</b></p><p>
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 新聞發(fā)布系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文
- 基于web新聞發(fā)布系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文
- 新聞發(fā)布系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文
- 基于MVC的新聞發(fā)布系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 畢業(yè)論文——校園新聞發(fā)布系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 畢業(yè)論文---基于jsp綜合新聞發(fā)布系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
- 新聞發(fā)布系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)──新聞管理、類(lèi)目管理【畢業(yè)論文】
- 畢業(yè)論文---基于php+mysql的新聞發(fā)布系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 54266.基于mvc框架的新聞信息發(fā)布系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
- 畢業(yè)論文(設(shè)計(jì))-基于web的學(xué)校新聞發(fā)布系統(tǒng)
- 畢業(yè)論文(設(shè)計(jì))基于web的學(xué)校新聞發(fā)布系統(tǒng)
- 畢業(yè)論文(設(shè)計(jì))基于web的校園新聞發(fā)布系統(tǒng)
- 基于MVC模式的新聞采編系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 畢業(yè)設(shè)計(jì)(論文)新聞發(fā)布系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 畢業(yè)論文---基于java新聞發(fā)布系統(tǒng)
- 畢業(yè)論文——基于web的學(xué)校新聞發(fā)布系統(tǒng)
- 畢業(yè)論文——基于web的學(xué)校新聞發(fā)布系統(tǒng)
- 結(jié)業(yè)畢業(yè)論文新聞發(fā)布系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)分析方案結(jié)業(yè)畢業(yè)論文
- 基于web的校園新聞發(fā)布系統(tǒng)畢業(yè)論文
- 新聞發(fā)布系統(tǒng)畢業(yè)論文
評(píng)論
0/150
提交評(píng)論