2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩47頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  畢 業(yè) 論 文</b></p><p>  題 目 基于Java EE的個(gè)人數(shù)字圖書館</p><p>  的設(shè)計(jì)與實(shí)現(xiàn) </p><p>  英文題目 Personal Digital Library Design and Implementation Based on Ja

2、va EE </p><p>  院 系 信息科學(xué)與技術(shù)學(xué)院 </p><p>  專 業(yè) 計(jì)算機(jī)科學(xué)與技術(shù) </p><p>  姓 名 </p><p>  班級學(xué)號 &

3、lt;/p><p>  指導(dǎo)教師 </p><p><b>  二○一二年五月</b></p><p><b>  摘 要</b></p><p>  隨著信息時(shí)代的到來,大量的信息充斥著我們的眼球,然而,面對這么多豐富的信息,如果我們不能很好的管理

4、起來就,這些信息對我們來說就只是垃圾而沒有任何的價(jià)值,在這個(gè)知識經(jīng)濟(jì)飛速發(fā)展的時(shí)代里,個(gè)人的發(fā)展越來越依賴于個(gè)人的競爭力,而個(gè)人競爭力的源泉?jiǎng)t是個(gè)人知識的管理。在這種情況下,作為個(gè)人信息管理和知識組織的工具——個(gè)人數(shù)字圖書館迅速發(fā)展起來,個(gè)人數(shù)字圖書館是數(shù)字圖書館發(fā)展中的新鮮事物,反映了網(wǎng)絡(luò)環(huán)境下信息用戶的個(gè)性化需求,是網(wǎng)絡(luò)信息資源管理的客觀要求,也是知識管理發(fā)展的必然。</p><p>  本文主要結(jié)合個(gè)人數(shù)字

5、圖書館的具體特點(diǎn):圖書資料共享、互相發(fā)送信息等特點(diǎn)以及圖書管理的理論知識,采用面向?qū)ο蟮某绦蛟O(shè)計(jì)方法,基于目前Web開發(fā)中廣泛運(yùn)用的主流框架:Struts、Hibernate和Freemarker組件構(gòu)建一個(gè)屬于個(gè)人的數(shù)字圖書館系統(tǒng)。此系統(tǒng)主要分為前臺和后臺兩部分。前臺供注冊用戶使用,每個(gè)注冊用戶都有一個(gè)屬于個(gè)人的數(shù)字圖書館。該圖書館主要分為:我的圖書、我的收藏、備忘錄、信息、日志、資料搜索、圖書管理等幾大模塊。其中“我的圖書”是指用戶

6、上傳的所有文件;“我的收藏”是指用戶保存的一些網(wǎng)摘;“備忘錄”顧名思義是指用戶向系統(tǒng)中添加當(dāng)下沒有完成的事情或計(jì)劃做的事情;“信息”是指系統(tǒng)用戶間相互發(fā)送信息,交流思想;“日志”就是用戶在系統(tǒng)中發(fā)表日志;“資料搜索”這里只限本站搜索。后臺系統(tǒng)管理員的主要功能是查看和刪除系統(tǒng)用戶,查閱管理系統(tǒng)中的所有資料。</p><p>  關(guān)鍵詞:個(gè)人數(shù)字圖書館,知識共享,知識管理</p><p>&l

7、t;b>  Abstract</b></p><p>  With the advent of the information age, a large amount of information full of our eye, however, in the face of so much information, if we cannot very well manage it, whic

8、h for us is just rubbish and not of any value, In this age of rapid development of the knowledge economy, personal development relies more and more of their competitiveness.But a source of competitiveness is a personal k

9、nowledge management. In this case, as a tool for personal information management and knowledge organization - </p><p>  This article with specific characteristics of individual digital library, books and inf

10、ormation sharing, send each other information and library management theory knowledge, using object oriented programming method, and based on the current widely used in mainstream Web development framework: Struts, Hiber

11、nate, and Freemarker components build a digital library system of the individual. This system is mainly divided into the foreground and background in two parts. Front desk for registered users,</p><p>  Key

12、words: Personal Digital Library, Knowledge Sharing, Knowledge Management</p><p><b>  目 錄</b></p><p><b>  摘 要I</b></p><p>  AbstractII</p><p>

13、;<b>  1 緒論</b></p><p>  1.1 選題背景(1)</p><p>  1.2 國外研究狀況(1)</p><p>  1.3 國內(nèi)研究狀況(2)</p><p>  1.4 課題目標(biāo)(2)</p><p>  1.5 本文組織結(jié)構(gòu)(2)</p>

14、<p>  2 理論知識技術(shù)介紹</p><p>  2.1 UML建模語言(4)</p><p>  2.2 MVC簡介(4)</p><p>  2.3 Struts簡介(5)</p><p>  2.4 Hibernate簡介(6)</p><p>  2.5 Freemarker簡介(7)

15、</p><p>  2.6 本章小結(jié)(8)</p><p><b>  3 平臺需求分析</b></p><p>  3.1 系統(tǒng)總體結(jié)構(gòu)概述(9)</p><p>  3.2 系統(tǒng)參與者功能描述(10)</p><p>  3.3 系統(tǒng)UML用例圖(11)</p>&l

16、t;p>  3.4 本章小結(jié)(14)</p><p>  4 個(gè)人數(shù)字圖書館系統(tǒng)設(shè)計(jì)</p><p>  4.1 面向?qū)ο蟮脑O(shè)計(jì)原則(15)</p><p>  4.2 系統(tǒng)功能設(shè)計(jì)(16)</p><p>  4.3 數(shù)據(jù)庫設(shè)計(jì)(17)</p><p>  4.4 業(yè)務(wù)邏輯層設(shè)計(jì)(23)</p

17、><p>  4.5 Web層設(shè)計(jì)(25)</p><p>  4.6 本章小結(jié)(26)</p><p>  5 個(gè)人數(shù)字圖書館系統(tǒng)開發(fā)與實(shí)現(xiàn)</p><p>  5.1 系統(tǒng)開發(fā)環(huán)境與技術(shù)(27)</p><p>  5.2 功能模塊層實(shí)現(xiàn)(29)</p><p>  5.3 前臺頁面顯

18、示的實(shí)現(xiàn)(32)</p><p>  5.4 本章小結(jié)(33)</p><p>  6 個(gè)人數(shù)字圖書館功能測試</p><p>  6.1 用戶前臺功能測試(34)</p><p>  6.2 系統(tǒng)后臺功能測試(38)</p><p>  6.3 本章小結(jié)(38)</p><p>&

19、lt;b>  結(jié)束語(39)</b></p><p><b>  致 謝(40)</b></p><p><b>  參考文獻(xiàn)(41)</b></p><p><b>  1 緒論</b></p><p><b>  1.1 選題背景<

20、;/b></p><p>  知識經(jīng)濟(jì)時(shí)代的到來,大量和個(gè)人知識管理有關(guān)的計(jì)算機(jī)應(yīng)用軟件開始在個(gè)人電腦中使用,是個(gè)人知識管理效率有很大的提高。然而,目前大部分的個(gè)人知識管理工具只在個(gè)人電腦中使用,這些工具對于個(gè)人知識的積累確實(shí)發(fā)揮了很大的作用,便捷的檢索方式也提高了人們查閱知識的效率。但是,這些工具沒有與他人共享知識,沒有與他人交流思想的功能,人們在不經(jīng)意間發(fā)現(xiàn)自己習(xí)慣的知識管理方式已經(jīng)不再滿足個(gè)人知識管理

21、日益?zhèn)€性化、社會(huì)化的趨勢[1]。</p><p>  個(gè)人數(shù)字圖書館是數(shù)字圖書館發(fā)展中的新鮮事物,反映了網(wǎng)絡(luò)環(huán)境下信息用戶的個(gè)性化需求,是網(wǎng)絡(luò)信息資源管理的客觀要求,也是知識管理發(fā)展的必然。在這個(gè)知識經(jīng)濟(jì)飛速發(fā)展的時(shí)代里,個(gè)人發(fā)展越來越依賴于個(gè)人競爭力。而個(gè)人競爭力的源泉來源于個(gè)人知識的管理、個(gè)人知識的學(xué)習(xí)、保存、使用、共享。然而隨著網(wǎng)絡(luò)信息的爆炸和數(shù)字圖書館的迅猛發(fā)展,無限的信息沖刺著我們的眼球和大腦,而這很多

22、信息對我們來說只是垃圾信息。相信很多人都有過這樣的體驗(yàn),前幾天在網(wǎng)上看到一篇很適合自己的文章,現(xiàn)在需要拿來用,可卻怎么也找不到,用搜索引擎去搜索時(shí)又沒有記住準(zhǔn)確的題目,而搜出一大批不相符的內(nèi)容。在這種情況下,作為個(gè)人信息管理和知識組織的工具——個(gè)人數(shù)字圖書館迅速發(fā)展起來[2]。</p><p>  1.2 國外研究狀況</p><p>  個(gè)人數(shù)字圖書館的提出最早開始于美國學(xué)者舒曼(Pat

23、ricia Glass Schuman)于1979年提出的“圖書館和信息提供者應(yīng)該提供迎合個(gè)人需求的新服務(wù)”觀點(diǎn),由圖書館個(gè)性化信息服務(wù)的思想演變而來。個(gè)人數(shù)字圖書館的真正研究開始于20世紀(jì)90年代初,1999 年美國圖書館與信息技術(shù)聯(lián)合會(huì)(LATA)幾位著名的數(shù)字圖書館專家在一次研討會(huì)上,把個(gè)性化服務(wù)列為數(shù)字圖書館發(fā)展的7大趨勢之首,同年,美國康奈爾大學(xué)圖書館開發(fā)了網(wǎng)絡(luò)個(gè)性化服務(wù)平臺 MyLibrary 系統(tǒng)[3]。</p>

24、;<p>  1.3 國內(nèi)研究狀況</p><p>  大連交通大學(xué)圖書館孔繁勝等作者認(rèn)為現(xiàn)有觀念中,個(gè)人圖書館建設(shè)要么是個(gè)人的行為,要么是某個(gè)機(jī)構(gòu)提供一個(gè)平臺,為資源建設(shè)服務(wù),最后形成私有財(cái)產(chǎn),沒有形成在個(gè)人資源建設(shè)的同時(shí)提供資源的共享、知識的互動(dòng)、思想的交流,也就是沒有進(jìn)行知識的再增值[4]。張犬銀、朱慶華在《個(gè)人數(shù)字圖書館研究探討》[5]與《網(wǎng)絡(luò)環(huán)境下個(gè)人數(shù)字圖書館信息檢索策略》[6]對個(gè)人數(shù)

25、字圖書館的本質(zhì)及功能進(jìn)行了論述說明,認(rèn)為個(gè)人數(shù)字圖書館本質(zhì)上是個(gè)性化的數(shù)字圖書館,可以為個(gè)人在生活上、學(xué)習(xí)上、工作上提供便利的服務(wù),同時(shí),還可以與他人共享知識。</p><p><b>  1.4 課題目標(biāo)</b></p><p>  課題的最終目標(biāo)是構(gòu)建一個(gè)個(gè)人數(shù)字圖書館系統(tǒng),在此系統(tǒng)上每個(gè)注冊用戶都有個(gè)一屬于自己的知識管理平臺,每個(gè)注冊用戶都可以通過查看共享資料獲

26、得此資料的共享用戶,并且可以下載系統(tǒng)所有用戶的共享資料,還可以通過此平臺聯(lián)系這些注冊用戶,達(dá)到知識共享,思想交流的目的。還可以在此平臺上發(fā)布日志、添加備忘錄、收藏網(wǎng)摘等。</p><p>  1.5 本文組織結(jié)構(gòu)</p><p>  本論文主要是介紹了一個(gè)基于JAVA EE技術(shù)中使用廣泛應(yīng)用的Struts、Hibernate框架和FreeMarker Java組件實(shí)現(xiàn)個(gè)人數(shù)字圖書館平臺的過

27、程:當(dāng)中包括相關(guān)技術(shù)的理論介紹、 需求獲取、系統(tǒng)設(shè)計(jì)、系統(tǒng)實(shí)現(xiàn)、 系統(tǒng)測試和調(diào)試。同時(shí),也給出了部分功能核心代碼。全文共分六章。</p><p> ?。?)緒論:介紹了選題背景、國內(nèi)外研究現(xiàn)狀分析和論文的最終實(shí)現(xiàn)目標(biāo)。</p><p> ?。?)理論知識技術(shù)介紹:簡單介紹系統(tǒng)中采用的MVC模式和使用到的UML建模語言及主流技術(shù):Struts、Hibernate和Freemarker。<

28、;/p><p>  (3)平臺需求分析:分析獲取平臺系統(tǒng)需要實(shí)現(xiàn)的主要功能,以及系統(tǒng)中的主要參與者和用例。</p><p> ?。?)系統(tǒng)設(shè)計(jì):面向?qū)ο蟮脑O(shè)計(jì)原則,系統(tǒng)功能的設(shè)計(jì)、數(shù)據(jù)庫的設(shè)計(jì)、業(yè)務(wù)邏輯和Web層的設(shè)計(jì)。</p><p> ?。?)系統(tǒng)實(shí)現(xiàn):講述開發(fā)環(huán)境的部署,實(shí)現(xiàn)系統(tǒng)中的各個(gè)功能模塊;同時(shí),展示一些核心的配置和代碼。</p><p&

29、gt; ?。?)系統(tǒng)功能測試:通過設(shè)計(jì)測試用例等對系統(tǒng)的相關(guān)模塊進(jìn)行測試。</p><p>  2 理論知識技術(shù)介紹</p><p>  近年來UML建模語言得到廣泛的使用和設(shè)計(jì)師的追捧,Web技術(shù)日新月異,本章將對論文中使用到的UML建模語言和應(yīng)用到的幾大主流技術(shù)MVC模式、Struts2框架、Hibernate框架和Freemarker組件做一簡單介紹,方便讀者更好的了解論文。<

30、;/p><p>  2.1 UML建模語言</p><p>  統(tǒng)一建模語言(UML,Unified Modeling Language)是非專利的第三代建模和規(guī)約語言。UML是一種開放的方法,用于說明、可視化、構(gòu)建和編寫一個(gè)正在開發(fā)的、面向?qū)ο蟮拈_放方法。UML展現(xiàn)了一系列最佳工程實(shí)踐,這些最佳實(shí)踐在對大規(guī)模,復(fù)雜系統(tǒng)進(jìn)行建模方面,特別是在軟件架構(gòu)層次已經(jīng)被驗(yàn)證有效[7]。</p>

31、;<p>  UML設(shè)計(jì)的目標(biāo)有以下幾點(diǎn):</p><p> ?。?)運(yùn)用面向?qū)ο蟮母拍顏斫ㄔ煜到y(tǒng)模型。</p><p> ?。?)建立概念模型和現(xiàn)實(shí)實(shí)體間明顯的對應(yīng)關(guān)系。</p><p> ?。?)創(chuàng)建一種對人和機(jī)器都適應(yīng)的建模語言。</p><p>  UML建模語言由五類圖來定義:用例圖、靜態(tài)圖、行為圖、交互圖、實(shí)現(xiàn)圖。&

32、lt;/p><p> ?。?)用例圖:從用戶角度描述系統(tǒng)功能,并指出各功能的操作者。</p><p>  (2)靜態(tài)圖:包括類圖、對象圖和包圖。類圖描述系統(tǒng)中類的靜態(tài)結(jié)構(gòu);對象圖是類圖的實(shí)例,使用標(biāo)志與類圖基本相同;包圖描述系統(tǒng)的分層結(jié)構(gòu),由類和包組成,表示包與包之間的關(guān)系。</p><p> ?。?)行為圖:描述系統(tǒng)的動(dòng)態(tài)模型和組成對象間的交互關(guān)系。</p>

33、;<p> ?。?)交互圖:描述對象間的交互關(guān)系。</p><p>  (5)實(shí)現(xiàn)圖:描述代碼部件的物理結(jié)構(gòu)及部件間的依賴關(guān)系。</p><p><b>  2.2 MVC簡介</b></p><p>  MVC模式最早由Trygve Reenskaug在1974年提出,是施樂帕羅奧多研究中心(Xerox PARC)在20世紀(jì)80

34、年代為程序語言Smalltalk發(fā)明的一種軟件設(shè)計(jì)模式。MVC模式(Model-View-Controller)是軟件工程中的一種軟件架構(gòu)模式,把軟件系統(tǒng)分為三個(gè)基本部分:模型(Model)、視圖(View)和控制器(Controller)。MVC模式的目的是實(shí)現(xiàn)一種動(dòng)態(tài)的程序設(shè)計(jì),使后續(xù)對程序的修改和擴(kuò)展簡化,并且使程序某一部分的重復(fù)利用成為可能。此外,此模式通過對復(fù)雜度的簡化,使程序結(jié)構(gòu)更加直觀。軟件系統(tǒng)通過對自身基本部份分離的同時(shí)

35、也賦予了各個(gè)基本部分應(yīng)有的功能。</p><p>  MVC設(shè)計(jì)思想是把一個(gè)應(yīng)用的輸入、處理、輸出流程按照Model、View、Controller的方式進(jìn)行分離,這樣一個(gè)應(yīng)用被分成三個(gè)層——模型層、視圖層、控制層。視圖(View)代表用戶交互界面,可以為HTML界面,也可以為XHTML、XML和 Applet。隨著應(yīng)用的復(fù)雜性和規(guī)模性,界面的處理也變得具有挑戰(zhàn)性。一個(gè)應(yīng)用可能有很多不同的視圖,MVC設(shè)計(jì)模式對于

36、視圖的處理僅限于視圖上數(shù)據(jù)的采集和處理,以及用戶的請求,而不包括在視圖上的業(yè)務(wù)流程的處理。業(yè)務(wù)流程的處理交予模型(Model)處理。模型(Model):就是業(yè)務(wù)流程狀態(tài)的處理以及業(yè)務(wù)規(guī)則的制定。業(yè)務(wù)模型的設(shè)計(jì)是MVC最主要的核心。MVC并沒有提供模型的設(shè)計(jì)方法,而只告訴你應(yīng)該組織管理這些模型,以便于模型的重構(gòu)和提高重用性。用對象編程來比喻,MVC定義了一個(gè)頂級類,告訴它的子類你只能做這些,但沒法限制你能做這些。模型、視圖與控制器的分離,

37、使得一個(gè)模型可以具有多個(gè)顯示視圖。如果用戶通過某個(gè)視圖的控制器改變了模型的數(shù)據(jù),所有其它依賴于這些數(shù)據(jù)的視圖都應(yīng)反映到這些變化。因此,無論何時(shí)發(fā)生了何種數(shù)據(jù)變化,控制器都會(huì)將變化通知所有的視圖,導(dǎo)致</p><p>  2.3 Struts簡介</p><p>  Struts 是 Apache軟件基金會(huì)(ASF)贊助的一個(gè)開源項(xiàng)目。由于本系統(tǒng)開發(fā)過程中使用的是Struts 2,這里就只對

38、Struts 2做簡單的介紹。</p><p>  Struts 2號稱是一個(gè)全新的框架,但這僅僅是相對Struts 1而言。Struts 2 與Struts 1相比,確實(shí)有很多革命性的改進(jìn),但它并不是新發(fā)布的新框架,而是在另一個(gè)家喻戶曉的框架——WebWork基礎(chǔ)上發(fā)展起來的。從某種程度上來講,Struts2沒有繼承Struts 1的血統(tǒng),而是繼承WebWork的血統(tǒng)。 因?yàn)镾truts2是WebWork的升級

39、,而不是一個(gè)全新的框架,因此穩(wěn)定性、性能等各方面都有很好的保證:而且吸收了Struts 1和WebWork兩者的優(yōu)勢。因此,Struts 2是一個(gè)非常優(yōu)秀的框架,其具有組件的模塊化,靈活性和重用性的優(yōu)點(diǎn),同時(shí)簡化了基于MVC的web應(yīng)用程序的開發(fā),還可以清晰地區(qū)分控制、事務(wù)邏輯和外觀,從而簡化了開發(fā)應(yīng)用程序的過程。</p><p>  Struts 2對Model,View和Controller都提供了對應(yīng)的組件

40、。ActionServlet,這個(gè)類是Struts 2的核心控制器,負(fù)責(zé)攔截來自用戶的請求。Action,這個(gè)類通常由用戶提供,該控制器負(fù)責(zé)接收來自ActionServlet的請求,并根據(jù)該請求調(diào)用模型的業(yè)務(wù)邏輯方法處理請求,并將處理結(jié)果返回給頁面顯示。Model由JavaBean組成,ActionForm用于封裝用戶的請求參數(shù),封裝成ActionForm對象,該對象被ActionServlet轉(zhuǎn)發(fā)給Action,Action根據(jù)Act

41、ionForm里面的請求參數(shù)處理用戶的請求。JavaBean則封裝了底層的業(yè)務(wù)邏輯,包括數(shù)據(jù)庫訪問等。View部分Struts 2推薦采用Freemarker模版技術(shù)實(shí)現(xiàn)。Struts 2提供了豐富的標(biāo)簽庫,通過標(biāo)簽庫可以減少腳本的使用,自定義的標(biāo)簽庫可以實(shí)現(xiàn)與Model的有效交互,并增加了現(xiàn)實(shí)功能。Controller組件由兩個(gè)部分組成——系統(tǒng)核心控制器,業(yè)務(wù)邏輯控制器。系統(tǒng)核心控制器由Struts 2框架提供,繼承HttpServl

42、et類,因此可以配置成標(biāo)注的Servlet</p><p>  2.4 Hibernate簡介</p><p>  Hibernate是一個(gè)開放源代碼的對象關(guān)系映射框架,它對JDBC進(jìn)行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數(shù)據(jù)庫。Hibernate可以應(yīng)用在任何使用JDBC的場合,既可以在Java的客戶端程序使用,也可以在Servlet/JSP的W

43、eb應(yīng)用中使用,最具革命意義的是,Hibernate可以在應(yīng)用EJB的JAVA EE架構(gòu)中取代CMP完成數(shù)據(jù)持久化的重任。Hibernate的核心接口一共有6個(gè)分別為:Session、SessionFactory、Configuration、Transaction、Query和Criteria。這6個(gè)核心接口在任何開發(fā)中都會(huì)用到。通過這些接口,不僅可以對持久化對象進(jìn)行存取,還能夠進(jìn)行事務(wù)控制。</p><p> 

44、 Session接口負(fù)責(zé)執(zhí)行被持久化對象的CRUD操作(CRUD的任務(wù)是完成與數(shù)據(jù)庫的交流,包含了很多常見的SQL語句)。不過需要注意的是Session對象是非線程安全的。同時(shí),Hibernate的Session不同于JSP應(yīng)用中的HttpSession。此處當(dāng)使用Session這個(gè)術(shù)語時(shí),其實(shí)就是指Hibernate中的Session,而將HttpSession對象稱為用戶Session。 </p><p> 

45、 SessionFactory接口負(fù)責(zé)初始化Hibernate。它充當(dāng)數(shù)據(jù)存儲(chǔ)源的代理,并負(fù)責(zé)創(chuàng)建Session對象。這里用到了工廠模式。需要注意的是SessionFactory并不是輕量級的,因?yàn)橐话闱闆r下,一個(gè)項(xiàng)目通常只需要一個(gè)SessionFactory就足夠了,當(dāng)需要操作多個(gè)數(shù)據(jù)庫時(shí),可以為每個(gè)數(shù)據(jù)庫指定一個(gè)SessionFactory。 </p><p>  Configuration接口負(fù)責(zé)配置并啟動(dòng)

46、Hibernate,創(chuàng)建SessionFactory對象。在Hibernate的啟動(dòng)的過程中,Configuration類的實(shí)例首先定位映射文檔位置、讀取配置,然后創(chuàng)建SessionFactory對象[9]。 </p><p>  Transaction接口負(fù)責(zé)事務(wù)相關(guān)的操作。它是可選的,開發(fā)人員也可以設(shè)計(jì)編寫自己的底層事務(wù)處理代碼。 </p><p>  Query和Criteria接口

47、負(fù)責(zé)執(zhí)行各種數(shù)據(jù)庫查詢。它可以使用HQL語言或SQL語句兩種表達(dá)方式。</p><p>  2.5 Freemarker簡介</p><p>  簡單的說,F(xiàn)reemarker就是一種用Java編寫的模版引擎,它的工作原理是:模版+數(shù)據(jù) = 輸出,它根據(jù)模板輸出多種規(guī)格的文本如:HTML、XML、Java等。Freemarker不是一個(gè)Web應(yīng)用框架,而適合作為Web應(yīng)用框架,其與容器無關(guān)

48、,因?yàn)樗⒉恢繦TTP或Servlet。Freemarker同樣可以在非Web應(yīng)用程序環(huán)境中使用;不過,F(xiàn)reeMarker更適合作為Model2框架如(Struts 2)的視圖組件;同時(shí),你也可以在模板中使用JSP標(biāo)記庫[10]。</p><p>  FreeMarker允許Java servlet保持圖形設(shè)計(jì)同應(yīng)用程序邏輯的分離,這是通過在模板中密封HTML完成的。模板用Servlet提供的數(shù)據(jù)動(dòng)態(tài)地生成

49、HTML。模板語言是強(qiáng)大的直觀的,編譯器速度快,輸出接近靜態(tài)HTML頁面的速度。FreeMarker被設(shè)計(jì)用來生成HTML Web頁面,特別是基于MVC模式的應(yīng)用程序。雖然FreeMarker具有一些編程的能力,但通常由Java程序準(zhǔn)備要顯示的數(shù)據(jù),由FreeMarker生成頁面,通過模板顯示準(zhǔn)備的數(shù)據(jù)。</p><p><b>  2.6 本章小結(jié)</b></p><p

50、>  本章主要對系統(tǒng)中使用到的技術(shù)作了簡單的介紹,首先介紹了UML建模語言中不同圖列表示的含義;其次介紹了MVC的三層結(jié)構(gòu)模式;然后對Struts、Hibernate、Freemarker簡單的介紹了它們的來源、發(fā)展、技術(shù)核心和應(yīng)用。通過本章的閱讀,讀者對本文中使用到的技術(shù)有了基本的了解和認(rèn)識,對于下午的理解有一定的幫助。</p><p><b>  3 平臺需求分析</b><

51、/p><p>  需求分析是收集需求、編寫需求文檔、審核需求文檔、編寫需求規(guī)格說明的過程,其處于開發(fā)周期中的開始階段。</p><p>  需求分析的方法有面向?qū)ο蟮姆治龇椒?、面向功能的分析方法和面向?shù)據(jù)的分析方法。需求分析的成功與否直接決定著項(xiàng)目能否成功的進(jìn)行下去,因此需求分析在整個(gè)項(xiàng)目中起決定性的作用,非常重要。本章將結(jié)合本次開發(fā)的具體情況,對目標(biāo)系統(tǒng)的功能性需求、非功能性需求進(jìn)行分析獲取

52、。</p><p>  3.1 系統(tǒng)總體結(jié)構(gòu)概述</p><p>  此次開發(fā)的主要目標(biāo)是構(gòu)建一個(gè)屬于個(gè)人的知識管理工具——個(gè)人數(shù)字圖書館,此個(gè)人數(shù)字圖書館的主要功能是在線注冊過的用戶都能夠通過此平臺最終達(dá)到個(gè)人知識的組織和管理并能和該平臺上和的其他注冊用戶交流和共享資料的目的。其系統(tǒng)總體結(jié)構(gòu)框圖如圖3-1所示。</p><p>  圖3-1 系統(tǒng)總體結(jié)構(gòu)框圖<

53、;/p><p>  由圖3-1可以看出,系統(tǒng)主要由前臺和后臺兩部分構(gòu)成,前臺主要是提供給系統(tǒng)的注冊用戶使用。后臺主要用于管理員對整個(gè)系統(tǒng)的管理,后臺管理中,前臺系統(tǒng)的所有用戶,和用戶的所有資料文件都能在后臺完全顯示,管理員可以刪除用戶的每一個(gè)文件,也可以刪除每一個(gè)系統(tǒng)注冊用戶。</p><p>  在該系統(tǒng)上每個(gè)注冊用戶可以上傳自己認(rèn)為有價(jià)值的資料并可以共享給其他注冊用戶供其下載使用,如果不想

54、讓其他用戶看到自己的資料,可以將文件設(shè)為私有,也可以在系統(tǒng)上搜索自己想要的資料(搜素范圍僅限在本站)。為了加深用戶之間的交流,每個(gè)注冊用戶間都可以互相發(fā)送信息(結(jié)構(gòu)圖上的信息項(xiàng)),互相問候或索要對方的資料。作為個(gè)人數(shù)字圖書館平臺,系統(tǒng)提供了我的收藏功能,用戶可以將自己感興趣的網(wǎng)頁文章保存為網(wǎng)摘,同時(shí)可以為網(wǎng)摘添加簡要描述。作為個(gè)人自學(xué)自冶的平臺,此系統(tǒng)為用戶添加了備忘錄功能,用戶可以將今天沒有完成的工作,添加到備忘錄項(xiàng),備忘錄按時(shí)間順序

55、排列顯示,最早添加的備忘錄顯示在最前面,這樣有利于促使用戶查看所有的備忘錄。</p><p>  3.2 系統(tǒng)參與者功能描述</p><p>  參與者(Actor)是系統(tǒng)外部的一個(gè)實(shí)體,可以是一個(gè)人、各種軟件系統(tǒng)或應(yīng)用,它與某種方式參與用例的執(zhí)行過程。參與者通過向系統(tǒng)輸入或請求向系統(tǒng)輸入某些事件來觸發(fā)系統(tǒng)的執(zhí)行。參與者由參與用例時(shí)所擔(dān)當(dāng)?shù)慕巧珌肀硎?,一個(gè)參與者可以參與一個(gè)或多個(gè)用例。參與

56、者有三大類:系統(tǒng)用戶、與所建造的系統(tǒng)交互的其他系統(tǒng)和一些可以運(yùn)行的進(jìn)程。本文中涉及到的參與者是系統(tǒng)用戶,所以,在此只對系統(tǒng)用戶的功能進(jìn)行描述。</p><p>  從上一節(jié)的分析得到了系統(tǒng)結(jié)構(gòu)圖,由圖3-1可知系統(tǒng)的主要參與者有兩種:注冊用戶和系統(tǒng)管理員。到此,系統(tǒng)的參與者已經(jīng)很明了。兩類參與者的相關(guān)人員和在此系統(tǒng)中擁有的功能分別是:注冊用戶登錄個(gè)人數(shù)字圖書館系統(tǒng)后,可以進(jìn)行站內(nèi)的圖書搜索,我的圖書管理(可見權(quán)限

57、的設(shè)置、刪除、上傳等),查看系統(tǒng)的共享圖書,收藏和下載自己感興趣的圖書,書寫發(fā)表日志,與系統(tǒng)中的用戶互相發(fā)送信息等;管理員登錄系統(tǒng)后可以查看系統(tǒng)的所有用戶,查看系統(tǒng)的所有圖書,刪除系統(tǒng)每個(gè)注冊用戶,刪除各種圖書及其他用戶資料等?,F(xiàn)在已經(jīng)明確了系統(tǒng)參與者的具體功能,下面就可以對其功能進(jìn)行細(xì)致的分析和實(shí)現(xiàn)。</p><p>  3.3 系統(tǒng)UML用例圖</p><p>  用例圖是需求分析到最

58、終實(shí)現(xiàn)的第一步,它描述了待開發(fā)系統(tǒng)的功能需求,從外部參與者的角度理解系統(tǒng)的所有功能。用例圖包含6個(gè)元素,分別是:參與者(Actor)、用例(Use Case)、關(guān)聯(lián)關(guān)系(Association)、包含關(guān)系(Include)、擴(kuò)展關(guān)系(Extend)以及泛化關(guān)系(Generalization)。</p><p>  個(gè)人數(shù)字圖書館注冊用戶的總用例圖如圖3-2所示。</p><p>  圖3-

59、2 注冊用戶總用例圖</p><p>  圖例說明:在UML語法中,圖形化的小人表示參與者,橢圓圖形表示用例,一個(gè)用例針對著一個(gè)具體的功能模塊?!啊北硎緟⑴c者和用例之間的執(zhí)行關(guān)系;</p><p>  “ ”表示用例和用例之間的包含關(guān)系,即在執(zhí)行此用例之前必須先執(zhí)行箭頭端的用例。如上圖要執(zhí)行“搜索圖書” 、“備忘錄管理”等用例必須行執(zhí)行“登錄”這個(gè)用例。由上圖可知用戶的功能模塊有

60、:日志管理、圖書管理、搜索站內(nèi)圖書、信息管理、收藏管理和備忘錄管理,由于系統(tǒng)名稱為個(gè)人數(shù)字圖書館系統(tǒng),所以在此就拿“圖書管理”這個(gè)用例的子用例作進(jìn)一步的說明。</p><p>  個(gè)人數(shù)字圖書館注冊用戶的圖書管理子用例圖如圖3-3所示。</p><p>  圖3-3 注冊用戶圖書管理子用例圖</p><p>  由以上的說明分析和圖3-2及圖3-3可知系統(tǒng)需要實(shí)現(xiàn)注

61、冊用戶的功能模塊是:日志管理、圖書管理、搜索站內(nèi)圖書、信息管理、收藏管理和備忘錄管理,由于系統(tǒng)名稱為個(gè)人數(shù)字圖書館系統(tǒng),下面還是拿“圖書管理”用例模塊作分析說明:</p><p><b> ?。?)用例名稱:</b></p><p><b>  圖書管理</b></p><p><b> ?。?)事件流:<

62、/b></p><p> ?、?用戶進(jìn)入登陸界面,輸入用戶名和密碼并提交,登錄系統(tǒng);</p><p> ?、?登錄成功后直接進(jìn)入我的圖書頁面;</p><p> ?、?對自己上傳的圖書的可見權(quán)限進(jìn)行修改設(shè)置或刪除;</p><p> ?、?點(diǎn)擊上傳按鈕選擇需要上傳的圖書;</p><p> ?、?點(diǎn)擊下載排行查

63、看圖書下載次數(shù),收藏或下載自己感興趣的圖書;</p><p> ?、?點(diǎn)擊共享圖書查看系統(tǒng)注冊用戶的所有共享圖書,收藏或下載自己感興的圖書。</p><p><b>  (3)前置條件:</b></p><p>  用戶已登錄個(gè)人數(shù)字圖書館系統(tǒng)</p><p>  此圖書管理模塊的活動(dòng)圖如圖3-4所示。</p>

64、;<p>  圖3-4 注冊用戶圖書管理活動(dòng)圖</p><p>  以上圖書管理模塊的活動(dòng)圖意思已經(jīng)很明確了,在此不作說明。</p><p>  個(gè)人數(shù)字圖書館信息管理的用例圖如圖3-5所示。</p><p>  信息管理用例圖說明:</p><p><b> ?。?)用例名稱:</b></p>

65、<p><b>  信息管理</b></p><p><b> ?。?)事件流:</b></p><p> ?、?用戶進(jìn)入登陸界面,輸入用戶名和密碼并提交,登錄系統(tǒng);</p><p> ?、?登錄成功后選擇進(jìn)入常用先選卡選擇信息模塊;</p><p> ?、?查看其它用戶發(fā)過來的信息

66、;</p><p><b> ?、?回復(fù)信息;</b></p><p><b>  ⑤ 刪除信息。</b></p><p><b>  (3)前置條件:</b></p><p>  用戶已登錄個(gè)人數(shù)字圖書館系統(tǒng)。</p><p>  圖3-5 信息管理用

67、例圖</p><p>  其他模塊的用例圖與以上展示類似,限于篇幅在此不再不作演示。</p><p><b>  3.4 本章小結(jié)</b></p><p>  本章主要對系統(tǒng)的功能性需求進(jìn)行詳細(xì)的分析和獲取,到此,個(gè)人數(shù)字圖書館系統(tǒng)所應(yīng)該有的功能已清晰地呈現(xiàn)出來。然而,系統(tǒng)的非功能需求也是異常重要的一個(gè)方面。軟件產(chǎn)品的非功能性需求是指產(chǎn)品為了滿

68、足用戶業(yè)務(wù)需求外還必須具備可靠性性能、響應(yīng)時(shí)間、容錯(cuò)性、擴(kuò)展性等等。這些需求將在系統(tǒng)實(shí)現(xiàn)初步功能后逐步進(jìn)行完善。</p><p>  4 個(gè)人數(shù)字圖書館系統(tǒng)設(shè)計(jì)</p><p>  在分析清楚知識、知識管理、個(gè)人知識管理概念的前提下,尤其是在分析清楚個(gè)人數(shù)字圖書館系統(tǒng)功能的基礎(chǔ)之上,就可以進(jìn)行下步的工作——系統(tǒng)的設(shè)計(jì)。系統(tǒng)設(shè)計(jì)在軟件工程項(xiàng)目中是至關(guān)重要的一個(gè)階段,其目的是讓開發(fā)者對整個(gè)系

69、統(tǒng)的框架有所把握,系統(tǒng)設(shè)計(jì)的到位以否決定著后期編碼開發(fā)實(shí)現(xiàn)的成敗[11],由此可見系統(tǒng)設(shè)計(jì)在項(xiàng)目實(shí)現(xiàn)過程中的重要性。</p><p>  本章節(jié)將闡述設(shè)計(jì)原則,系統(tǒng)功能設(shè)計(jì)、數(shù)據(jù)庫設(shè)計(jì)、邏輯層設(shè)計(jì)、表示層設(shè)計(jì)等內(nèi)容。</p><p>  4.1 面向?qū)ο蟮脑O(shè)計(jì)原則</p><p>  面向?qū)ο蟮脑O(shè)計(jì)應(yīng)具備三個(gè)特性:可擴(kuò)展性、靈活性、可插入性。這三個(gè)特性都是圍繞面向?qū)?/p>

70、象設(shè)計(jì)的目的——實(shí)現(xiàn)支持可維護(hù)性的復(fù)用,同時(shí),可維護(hù)性復(fù)用都是以面向?qū)ο笤O(shè)計(jì)原則為基礎(chǔ)的。常用的面向?qū)ο笤O(shè)計(jì)原則包括七個(gè),這些原則并不是孤立存在,它們相互依賴相互補(bǔ)充[12]。</p><p>  面向?qū)ο笤O(shè)計(jì)的七個(gè)原則:</p><p>  單一職責(zé)原則:類的職責(zé)要單一,不能將太多的職責(zé)放在一個(gè)類中。本系統(tǒng)類的設(shè)計(jì)都符合單一職責(zé)原則,每一個(gè)類只有一個(gè)職責(zé)。如備忘錄類:Memo只具有添加備

71、忘錄的職責(zé)。</p><p>  開閉原則:軟件實(shí)體對擴(kuò)展是開放的,但對修改是關(guān)閉的,即在不修改一個(gè)軟件實(shí)體的基礎(chǔ)上去擴(kuò)展其功能。本系統(tǒng)的的設(shè)計(jì)也符合開閉原則,隨著個(gè)人數(shù)字圖書館的不斷發(fā)展,要求越來越高,后期肯定需要再加強(qiáng)功能,由于類的設(shè)計(jì)都是單一職責(zé)的,所以再添加功能的時(shí)候,不需要改動(dòng)原來的軟件實(shí)體。</p><p>  里氏代換原則:在軟件系統(tǒng)中,一個(gè)可以接受基類對象的地方必然可以接受

72、一個(gè)子類對象。</p><p>  依賴倒轉(zhuǎn)原則:要針對抽象層編程,而不要針對具體類編程。</p><p>  接口隔離原則:使用多個(gè)專門的接口來取代一個(gè)統(tǒng)一的接口。</p><p>  合成復(fù)用原則:在系統(tǒng)中應(yīng)該盡量多使用組合和聚合的關(guān)聯(lián)關(guān)系,盡量少使用甚至不使用繼承關(guān)系。</p><p>  迪米特法則:一個(gè)軟件實(shí)體對其他實(shí)體的引用越少越

73、好,或者說如果兩個(gè)類不必彼此互相通信,那么這兩個(gè)類就不應(yīng)當(dāng)發(fā)生直接的相互作用,而是通過引入第三者發(fā)生間接的交互。</p><p>  4.2 系統(tǒng)功能設(shè)計(jì)</p><p>  由第三章的需求分析知系統(tǒng)的總體功能結(jié)構(gòu)圖如上章圖3-1所示。下面再對其中的功能模塊作詳細(xì)的設(shè)計(jì)。</p><p>  圖書功能模塊的功能設(shè)計(jì)如圖4-1所示。</p><p&

74、gt;  圖4-1 圖書模塊功能圖</p><p>  由上圖可知功能模塊“圖書”下面的功能有查看下載排行、共享的圖書、自己私有的圖書和收藏圖書,這其中當(dāng)然都是具備可下載性的。</p><p>  信息功能模塊的功能設(shè)計(jì)如圖4-2所示。</p><p>  圖4-2 信息模塊功能圖</p><p>  由上圖可知功能模塊“信息”下面的功能有發(fā)

75、送信息、接收信息、查看信息和刪除信息。</p><p><b>  4.3 數(shù)據(jù)庫設(shè)計(jì)</b></p><p>  在進(jìn)行數(shù)據(jù)庫的設(shè)計(jì)之前,先要明確系統(tǒng)的實(shí)體對象。個(gè)人數(shù)字圖書館的實(shí)體對象主要包含以下實(shí)體:</p><p>  用戶:上面所提及的注冊用戶,該系統(tǒng)的用戶可以是任何人,用戶實(shí)現(xiàn)數(shù)字資料的管理等。</p><p&g

76、t;  我的資料:每個(gè)注冊用戶都可以上傳自己的資料。</p><p>  信息:每個(gè)注冊用戶都可以給系統(tǒng)其他用戶發(fā)送信息。</p><p>  日志:每個(gè)注冊用戶可以發(fā)表日志。</p><p>  備忘錄:每個(gè)注冊用戶都可以添加備忘錄。</p><p>  空間:每個(gè)注冊用戶系統(tǒng)都分配了1GB容量的空間。</p><p&g

77、t;  我的收藏:注冊用戶可以根據(jù)自己的需要,添加收藏。</p><p>  共享資料:注冊用戶共享的資料,所有用戶可見。</p><p>  以上部分實(shí)體對應(yīng)的E-R圖如圖4-3所示。</p><p>  圖4-3 實(shí)體E-R圖</p><p>  以上E-R圖中實(shí)體對應(yīng)的數(shù)據(jù)庫表如下列4-1,4-2,4-3表所示。</p>

78、<p><b>  表4-1 用戶表</b></p><p><b>  表4-2 文件表</b></p><p><b>  表4-3 空間表</b></p><p>  用戶表的字段有userID(主鍵)、username(用戶名)、nickname(昵稱)、sex(性別,因?yàn)橹挥袃煞N性

79、別,所以長度設(shè)為4)等字段。這是系統(tǒng)中的主要實(shí)體和它們想對應(yīng)的E-R圖及數(shù)據(jù)表。下面再給出系統(tǒng)中其它實(shí)體的E-R圖和數(shù)據(jù)表。</p><p>  用戶實(shí)體與日志實(shí)體的E-R圖如圖4-4所示。</p><p>  圖4-4 用戶日志E-R圖</p><p>  日志的數(shù)據(jù)表如表4-4所示。</p><p>  表4-4 日志數(shù)據(jù)表</p&

80、gt;<p>  用戶實(shí)體與信息實(shí)體的E-R圖如圖4-5所示。</p><p>  圖4-5用戶信息E-R圖</p><p>  信息的數(shù)據(jù)表如表4-5所示。</p><p>  表4-5 信息數(shù)據(jù)表</p><p>  由于其它實(shí)體與用戶實(shí)體的關(guān)聯(lián)關(guān)系與上面展示的實(shí)體基本類似,所以在此就不在給出其它實(shí)體與用戶實(shí)體的E-R圖演示

81、了。備忘錄的數(shù)據(jù)表如表4-6所示。</p><p>  表4-6 備忘錄數(shù)據(jù)表</p><p>  收藏夾數(shù)據(jù)表如表4-7所示。</p><p>  表4-7 收藏夾數(shù)據(jù)表</p><p>  由于系統(tǒng)中與數(shù)據(jù)庫的交互都是通過Hibernate框架來實(shí)現(xiàn)的,所以系統(tǒng)中的每一個(gè)實(shí)體都要在Hibernate中進(jìn)行相對應(yīng)的設(shè)計(jì),如圖4-6所示。&l

82、t;/p><p>  其中實(shí)現(xiàn)與數(shù)據(jù)庫交互的文件是hibernate.ctf.xml配置文件,其他實(shí)體類都要在此類中配置相對應(yīng)的映射路徑,如:</p><p>  <mapping resource="/model/EFile.hbm.xml" /></p><p>  <mapping resource="/model/

83、User.hbm.xml" /></p><p>  <mapping resource="/model/Space.hbm.xml" /></p><p>  圖4-6 Hibernate中實(shí)體類的設(shè)計(jì)</p><p>  <mapping resource="/model/Memo.hbm.xml&

84、quot; /></p><p>  <mapping resource="/model/Message.hbm.xml" /></p><p>  <mapping resource="/model/Admin.hbm.xml" /></p><p>  <mapping resource

85、="/model/Favorite.hbm.xml" /></p><p>  其中實(shí)體類的設(shè)計(jì)都是定義了數(shù)據(jù)類型和對應(yīng)的get、set方法,這樣就提高了實(shí)體類的可復(fù)用性。</p><p>  4.4 業(yè)務(wù)邏輯層設(shè)計(jì)</p><p>  業(yè)務(wù)邏輯層主要用于做一些有效性驗(yàn)證的工作,以便更好地保證程序運(yùn)行的健壯性。如完成數(shù)據(jù)添加、刪除和查詢業(yè)務(wù)

86、等;不允許指定的文本框中輸入空字符串,數(shù)據(jù)格式是否正確及數(shù)據(jù)類型驗(yàn)證;用戶資料權(quán)限的判斷等等,通過以上的諸多判斷以決定是否將操作繼續(xù)向后傳遞,盡量保證程序的正常運(yùn)行。 </p><p>  如本系統(tǒng)在用戶注冊的時(shí)候,就添加了數(shù)據(jù)格式的驗(yàn)證,驗(yàn)證用戶輸入的郵件是否是合法的郵件,這需要向系統(tǒng)添加一個(gè)配置文件:RegisterAction-validation.xml同時(shí)在編寫Action的時(shí)候要繼承ActionSup

87、port這個(gè)類,這樣就可以使用Struts自帶的檢驗(yàn)功能對客戶端請求進(jìn)行校驗(yàn)了。</p><p>  業(yè)務(wù)邏輯層Action包內(nèi)類的設(shè)計(jì)如圖4-7所示。</p><p>  圖4-7Action包類的設(shè)計(jì)</p><p>  由上圖可知Action包內(nèi)類的設(shè)計(jì)是按照它要實(shí)現(xiàn)的功能來設(shè)計(jì)的,一個(gè)類只有一個(gè)職責(zé)功能,這也正符合了面向?qū)ο笤O(shè)計(jì)的單一職責(zé)原則。</p&

88、gt;<p>  業(yè)務(wù)邏輯層Model包內(nèi)類的設(shè)計(jì)如圖4-8所示。</p><p>  圖4-8 Model包類的設(shè)計(jì)</p><p>  由上圖知Model包內(nèi)類的設(shè)計(jì)是按照系統(tǒng)實(shí)體來設(shè)計(jì)的以其相對應(yīng)的Hibernate中的設(shè)計(jì)如圖4-13所示,此包中的類都只是定義了數(shù)據(jù)類型和其對應(yīng)的get、set方法。前臺頁面的請求就是通過它來實(shí)現(xiàn)和業(yè)務(wù)功能的間接交互的。</p&g

89、t;<p>  系統(tǒng)中用戶和發(fā)送信息的類圖如圖4-9所示。</p><p>  圖4-9 發(fā)送信息類圖</p><p>  4.5 Web層設(shè)計(jì)</p><p>  Web層可以形象的描述為一個(gè)傳遞者、中間者的角色,它在系統(tǒng)中的任務(wù)是簡單的處理瀏覽器端的請求,如驗(yàn)證輸入數(shù)據(jù)的合法性等;通過驗(yàn)證后再與服務(wù)器交互,最后將處理的請求結(jié)果返回給瀏覽器端。本項(xiàng)目

90、中采用Struts 2作為系統(tǒng)中MVC的框架。在控制器層都由Struts 2的Action充當(dāng),這些Action通過調(diào)用業(yè)務(wù)邏輯層的業(yè)務(wù)邏輯方法來處理用戶請求,并將處理結(jié)果存入系統(tǒng)中,同時(shí)在Freemarker頁面中通過Struts 2的標(biāo)簽庫輸出這些處理結(jié)果[13]。</p><p>  Struts 2的處理流程如下圖4-10所示。</p><p>  圖4-10 Struts 2處理

91、過程</p><p>  結(jié)合上圖說明Struts2的大致處理流程為客戶端初始化一個(gè)指向Servlet容器,本系統(tǒng)是指Tomcat容器,這個(gè)請求經(jīng)過一系列的過濾器Filters接著調(diào)用FilterDispatcher詢問ActionMapper來決定是否需要調(diào)用某個(gè)功能Action來處理請求,在調(diào)用此Action的前后還涉及到調(diào)用相關(guān)的攔截器Intercepter,當(dāng)Action執(zhí)行完畢后,ActionInvoc

92、ation會(huì)根據(jù)系統(tǒng)中Struts.xml配置文件找到對應(yīng)的返回結(jié)果。本系統(tǒng)的返回結(jié)果是需要被表示成Freemarker模板頁面。</p><p><b>  4.6 本章小結(jié)</b></p><p>  本章主要講述了面向?qū)ο笤O(shè)計(jì)的原則、系統(tǒng)功能模塊的詳細(xì)設(shè)計(jì)、數(shù)據(jù)庫設(shè)計(jì)、業(yè)務(wù)邏輯層的設(shè)計(jì)和Web層的設(shè)計(jì),通過本章的閱讀相信讀者不但對面向?qū)ο笤O(shè)計(jì)的原則有所了解,同時(shí)

93、,也對個(gè)人數(shù)字圖書館系統(tǒng)的功能、系統(tǒng)整體框架結(jié)構(gòu)有了清晰的認(rèn)識。</p><p>  5 個(gè)人數(shù)字圖書館系統(tǒng)開發(fā)與實(shí)現(xiàn)</p><p>  本系統(tǒng)采用瀏覽器/服務(wù)器B/S(Browser/Server)架構(gòu)模式,這一章將闡述開發(fā)環(huán)境、數(shù)據(jù)庫的實(shí)現(xiàn)、前臺頁面的顯示、功能控制模塊及關(guān)鍵技術(shù)代碼。</p><p>  5.1 系統(tǒng)開發(fā)環(huán)境與技術(shù)</p>&

94、lt;p>  本系統(tǒng)開發(fā)模式為瀏覽器/服務(wù)器B/S(Browser/Server)架構(gòu)模式,采用主流框架SSH中的Struts2和Hibernate,Tomcat 6.0為服務(wù)器支持,客戶端運(yùn)行環(huán)境為Windows/2000/XP+IE6.0以上版本,采用Freemarker實(shí)現(xiàn)前臺頁面的顯示,MYSQL做后臺數(shù)據(jù)庫,Myeclipse IDE作為開發(fā)工具。在進(jìn)行項(xiàng)目開發(fā)前需要將相關(guān)的Struts 2和Hibernate的核心ja

95、r包導(dǎo)入的項(xiàng)目中,由于前臺頁面的顯示由Freemarker實(shí)現(xiàn)所以也需將其對應(yīng)的jar包:添加到項(xiàng)目中。添加完相關(guān)的jar包后,還需對其作出相應(yīng)的配置。</p><p>  Hibernate的配置文件hibernate.cfg.xm中對SessionFactory配置片段如下:</p><p>  <session-factory></p><p> 

96、 <!-- 數(shù)據(jù)庫的連接及編碼配置 --></p><p>  <property name="connection.driver_class">com.mysql.jdbc.Driver</p><p>  </property></p><p>  <property name="con

97、nection.url">jdbc:mysql://localhost:3306/pdl? useUnicode=true&amp;characterEncoding=GB2312</p><p>  </property></p><p>  <property name="connection.username">ro

98、ot</property></p><p>  <property name="connection.password">2947114</property></p><p>  <!-- 數(shù)據(jù)庫方言配置 --></p><p>  <property name="dialect

99、">org.hibernate.dialect.MySQLDialect</p><p>  </property></p><p>  <!-- 控制臺打印Hibenate持久化操作生成的SQL語句 --></p><p>  <property name="show_sql">true

100、</property></p><p>  <!-- Hibernate將Session綁定到當(dāng)前線程,事務(wù)結(jié)束后,Hibernate將Session從當(dāng)前線程中釋放,并且關(guān)閉Session --></p><p>  <property name="current_session_context_class">thread<

101、/p><p>  </property></p><p>  <!-- 全部映射文件 --></p><p>  <mapping resource="/model/EFile.hbm.xml"/></p><p>  ………………………………….其他實(shí)體類映射省略</p&

102、gt;<p>  <mapping resource="/model/Favorite.hbm.xml"/></p><p>  </session-factory></p><p>  Struts的配置文件struts.xml中的主要配置如下:</p><p>  <!-- 將開發(fā)模式的值設(shè)為:tr

103、ue,便于后期開發(fā) --></p><p>  <constant name="struts.devMode" value="true" /></p><p>  <!-- 一次上傳的最大容量為1G --></p><p>  <constant name="struts.mult

104、ipart.maxSize" value="1073741824" /></p><p>  <!-- namespace的配置將頁面所在文件夾置為其值 --></p><p>  <package name="default" namespace="/pages" extends="s

105、truts-default"></p><p>  <!-- 上傳文件 --></p><p>  <action name="doUp" class="action.UpfileAction"></p><p>  <!-- 文件上傳必需包含的兩個(gè)攔截器棧 --></

106、p><p>  <interceptor-ref name="fileUpload" > </p><p>  </interceptor-ref></p><p>  <interceptor-ref name="defaultStack"/></p><p

107、>  <result name="success" type="freemarker">/pages/upfile.ftl</result></p><p>  <result name="input" type="freemarker">/pages/upfile.ftl</resul

108、t></p><p><b>  </action></b></p><p>  其他action的配置類似在此不再展示,到此,完成了前期開發(fā)環(huán)境的部署。</p><p>  5.2 功能模塊層實(shí)現(xiàn)</p><p>  功能模塊層主要是針對系統(tǒng)中的具體功能的實(shí)現(xiàn),該層實(shí)現(xiàn)是通過面向?qū)ο缶幊虒?shí)現(xiàn),其實(shí)現(xiàn)包

109、括在包 、、中,在包中定義模型類實(shí)現(xiàn)前臺與數(shù)據(jù)庫的連接,在包中進(jìn)行具體功能的實(shí)現(xiàn),包主要起到一個(gè)引導(dǎo)跳轉(zhuǎn)的作用。在此以互相發(fā)送信息實(shí)現(xiàn)為例,其中信息的類Message.java在包model中,此類包含的數(shù)據(jù)屬性如下:</p><p>  private int messageID; //信息的主鍵ID號</p><p>  private String username;

110、 //收信人名稱</p><p>  private String sendname; //發(fā)信人名稱</p><p>  private String theme; //信息主題</p><p>  private String messcont; //信息詳細(xì)內(nèi)容</p><p>  private Date sendtim

111、e; //信息的發(fā)送時(shí)間</p><p>  其中實(shí)現(xiàn)發(fā)送功能的Action為:MessSendAction.java其核心代碼如下:</p><p>  public class MessSendAction extends ActionSupport{</p><p>  private String receivename; //收件人</p>

112、<p>  private String theme; //信息主題</p><p>  private String messcont; //信息內(nèi)容</p><p>  //省略對應(yīng)的get和set方法</p><p>  public String execute() {</p><p>  HttpServletR

113、equest request = ServletActionContext.getRequest();</p><p>  if (receivename.equals(null)) {</p><p>  this.addFieldError("receivename_null", "收件人不能為空!");</p><p>

114、  return ERROR;</p><p><b>  }</b></p><p>  if (theme.equals(null)) {</p><p>  this.addFieldError("theme_null", "主題不能為空!");</p><p>  retu

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲(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

提交評論