基于J2EE多層架構(gòu)的web應(yīng)用研究分析網(wǎng)絡(luò)工程管理專業(yè)

上傳人:文*** 文檔編號:242741282 上傳時間:2024-09-02 格式:DOC 頁數(shù):30 大?。?.06MB
收藏 版權(quán)申訴 舉報 下載
基于J2EE多層架構(gòu)的web應(yīng)用研究分析網(wǎng)絡(luò)工程管理專業(yè)_第1頁
第1頁 / 共30頁
基于J2EE多層架構(gòu)的web應(yīng)用研究分析網(wǎng)絡(luò)工程管理專業(yè)_第2頁
第2頁 / 共30頁
基于J2EE多層架構(gòu)的web應(yīng)用研究分析網(wǎng)絡(luò)工程管理專業(yè)_第3頁
第3頁 / 共30頁

下載文檔到電腦,查找使用更方便

20 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《基于J2EE多層架構(gòu)的web應(yīng)用研究分析網(wǎng)絡(luò)工程管理專業(yè)》由會員分享,可在線閱讀,更多相關(guān)《基于J2EE多層架構(gòu)的web應(yīng)用研究分析網(wǎng)絡(luò)工程管理專業(yè)(30頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、 內(nèi)容摘要 當(dāng)前基于J2EE平臺的Web應(yīng)用在邏輯上一般被分為四層:域模型層、表示層、業(yè)務(wù)層、數(shù)據(jù)層。本文主要針對表示層、業(yè)務(wù)層和持久層的實現(xiàn)提出了基于Webwork+Spring+Hibernate的解決方案。WebWork是一個致力于組件化和代碼重用的拉出式MVC模式實現(xiàn)框架,以其靈活、強大的功能為Web應(yīng)用的構(gòu)建減輕了負(fù)擔(dān)。Spring是一種輕量級的容器,Spring使系統(tǒng)各組件間達(dá)到松散耦合并且能和各種框架很好的兼容。Hibernate是一個開源的持久層框架技術(shù),全面減輕了維護(hù)數(shù)據(jù)的復(fù)雜度,使系統(tǒng)具有良好的性能和移植性。 本文以港航系統(tǒng)中局辦公系統(tǒng)下的個人先進(jìn)申請為案例,采用基于U

2、ML的系統(tǒng)分析方法,通過建立泳道圖、用例圖、類圖對其進(jìn)行了詳細(xì)的分析,并在此基礎(chǔ)上分別對Web表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)持久層進(jìn)行了詳細(xì)設(shè)計。針對項目特點,整合WebWork、Spring、Hibernate三種框架技術(shù),提出了一個具有通用模式的J2EE架構(gòu):WebWork實現(xiàn)MVC模式完成Web表示層功能,其業(yè)務(wù)邏輯交由Spring來管理;Spring負(fù)責(zé)管理表現(xiàn)層控制器與數(shù)據(jù)訪問對象間關(guān)系,完成業(yè)務(wù)邏輯層功能;Hibernate負(fù)責(zé)數(shù)據(jù)的持久化工作。三種架構(gòu)的應(yīng)用能夠有效地解決傳統(tǒng)Web應(yīng)用開發(fā)中存在的問題,而且采用分層及模塊化設(shè)計使系統(tǒng)具有很高的可維護(hù)性、擴(kuò)展性、移植性和組件的復(fù)用性。

3、 關(guān)鍵詞:J2EE,WebWork,Spring,Hibernate ABSTRACT At present according to the Web application of J2EE terrace at logical is been divided into 4 F generally: Domain Model Layer, Presentation Layer, Business layer and Database layer. This text mainly aims at to mean a layer, business layer with held ou

4、t for long time the realization of layer to put forward according to the WebWork+Spring+Hibernate solution. WebWork is a pull-out framework of implementing MVC pattern and strives for reusing module and code, it relieves burden for constructing Web application by its flexible and powerful function.

5、Differentiating strong invasion of EJB, Spring which is a lightweight container is designed with dependency injection and can make component loose coupling dynamically and compatible with other framework. Hibernate is an open source persistence framework, which entirely reduces the complexity of mai

6、ntaining data and make system have higher performance and portable. This paper takes the project as example. to detailed design for each layer such as Web layer, business logic layer and data persistence layer based on requirements analysis completely. As for the characteristic of project, the auth

7、or integrated with WebWork, Spring and Hibernate and put forward a general model of J2EE architecture, what is that WebWork which implemented MVC pattern play the role of Web presentation layer and hand over its business logic to Spring, manage objects’ relation of between controller and data access

8、 object through Spring and make data persistence by Hibernate. The application of frameworks is not only resolve traditional issues in Web design but also enhance the system’s maintainability, expansibility, compatibility and reusability through adopting delamination and modularization. KeyWord:

9、J2EE, WebWork, Spring, Hibernate 目 錄 1 緒論 1 1.1 問題的提出 1 1.2 研究現(xiàn)狀與意義 1 1.3 研究內(nèi)容 2 2 J2EE平臺和MVC架構(gòu)的介紹 3 2.1 J2EE架構(gòu)的介紹 3 2.2 MVC模式介紹 4 2.3 MVC與J2EE架構(gòu)之間的關(guān)系 5 3 應(yīng)用架構(gòu)介紹 6 3.1 Webwork框架 6 3.2 Spring框架 7 3.3 Hibernate架構(gòu) 8 3.4 三種架構(gòu)整合的優(yōu)勢 9 4 先進(jìn)個人申請分析與設(shè)計 11 4.1 系統(tǒng)分析階段 11 4.1.1港

10、航信息系統(tǒng)實施背景及目標(biāo) 11 4.1.2局辦管理系統(tǒng)需求分析 11 4.1.3 先進(jìn)個人申請需求分析 12 4.2 系統(tǒng)設(shè)計階段 14 4.2.1 系統(tǒng)設(shè)計原則 14 4.2.2軟件基本架構(gòu)的搭建 15 4.2.3 類圖設(shè)計 17 4.2.4 數(shù)據(jù)庫設(shè)計 18 第五章 先進(jìn)個人申請與管理的系統(tǒng)實現(xiàn) 20 5.1 開發(fā)軟件的介紹 20 5.1.1 Eclipse 開發(fā)平臺 20 5.1.2 Apache Tomcat應(yīng)用服務(wù)器 21 5.1.3 Oracle 10g數(shù)據(jù)庫 21 5.2 表示層的實現(xiàn) 22 5.2.1 用戶界面設(shè)計 22 5.2.2 WebWor

11、k的配置文件xwork.xml 23 5.2.3 實現(xiàn)保存功能Action的介紹 23 5.3 業(yè)務(wù)層的實現(xiàn) 23 5.3.1 配置service.xml 24 5.3.2 Service接口的實現(xiàn) 24 5.4 持久層的實現(xiàn) 25 5.4.1 域模型的建立 25 5.4.2 映射文件的定義 25 5.4.3 Dao的定義和接口實現(xiàn) 26 5.5 成果演示 26 6 總結(jié)與展望 30 參考文獻(xiàn) 31 基于J2EE多層架構(gòu)的web應(yīng)用研究 1 緒論 1.1 問題的提出 隨著互聯(lián)網(wǎng)技術(shù)突飛猛進(jìn)地發(fā)展,Web應(yīng)用系統(tǒng)在Internet上的應(yīng)用越來越廣泛。We

12、b應(yīng)用系統(tǒng)不再僅僅是具有靜態(tài)信息發(fā)布的簡單功能,而且被要求具有實時動態(tài)處理交互和辦公的能力。由Sun公司推出的J2EE平臺,不僅完全繼承了Java安全性好、可移植性強的優(yōu)點,同時它是真正面向?qū)ο蟮木幊陶Z言,J2EE平臺的廣泛應(yīng)用使基于B/S的多層Web體系結(jié)構(gòu)逐漸發(fā)展成熟起來,多層Web應(yīng)用的開發(fā)己成為主流。但是,在多層Web體系結(jié)構(gòu)的設(shè)計中,仍然存在程序可重用程度低、維護(hù)工作繁瑣、擴(kuò)展能力較差等不足。同時,多層Web應(yīng)用系統(tǒng)需要面對復(fù)雜的網(wǎng)絡(luò)環(huán)境、多樣化的用戶需求、靈活的業(yè)務(wù)模式、復(fù)雜的業(yè)務(wù)流程、眾多的組織機(jī)構(gòu)及層次和角色分工等問題,在業(yè)務(wù)和技術(shù)上也是復(fù)雜多變的。因此,如何組織應(yīng)用程序以實現(xiàn)

13、簡單高效的程序編寫、升級、維護(hù)和擴(kuò)展,是當(dāng)前Internet技術(shù)發(fā)展的熱點之一,也是一個很值得探討的研究課題。 傳統(tǒng)的模式是基于典型的客戶/服務(wù)器C/S(Client/Server)結(jié)構(gòu),即大家熟知的客戶機(jī)和服務(wù)器結(jié)構(gòu)。它是軟件系統(tǒng)體系結(jié)構(gòu),通過可以充分利用兩端硬件環(huán)境的優(yōu)勢,將任務(wù)合理分配到Client端和Server端來實現(xiàn),降低了系統(tǒng)的通訊開銷。但C/S體系結(jié)構(gòu)只在系統(tǒng)開發(fā)一級的層面上體現(xiàn)了開放性,在特定的應(yīng)用中無論是Client端還是Server端都需要特定的軟件支持。由于沒能提供用戶真正期望的開放環(huán)境,C/S結(jié)構(gòu)的軟件需要針對不同的操作系統(tǒng)系統(tǒng)開發(fā)不同版本的軟件。加之產(chǎn)品的更新?lián)Q代

14、十分快,已經(jīng)很難適應(yīng)百臺電腦以上局域網(wǎng)用戶同時使用,而且代價高、效率低。 因此,B/S(Brower/server)結(jié)構(gòu)即瀏覽器和服務(wù)器結(jié)構(gòu),很大程度上彌補了C/S結(jié)構(gòu)的缺陷,更為廣泛的被開發(fā)人員加以應(yīng)用。B/S結(jié)構(gòu)就是我們所說的Web應(yīng)用。它是隨著Internet技術(shù)的興起,對C/S結(jié)構(gòu)的一種變化或者改進(jìn)的結(jié)構(gòu)。在這種結(jié)構(gòu)下,用戶工作界面是通過WWW瀏覽器來實現(xiàn),極少部分事務(wù)邏輯在前端(Brower)實現(xiàn),但是主要事務(wù)邏輯在服務(wù)器端實現(xiàn),形成所謂三層結(jié)構(gòu)。這樣就大大簡化了客戶端電腦載荷,減輕了系統(tǒng)維護(hù)與升級的成本和工作量,降低了用戶的總體成本。在JAVA這樣的跨平臺語言出現(xiàn)之后,B/S架構(gòu)

15、的企業(yè)級軟件更充分的體現(xiàn)出方便、快捷、高效的優(yōu)勢。 1.2 研究現(xiàn)狀與意義 Web應(yīng)用的廣泛性推動了軟件技術(shù)的發(fā)展,同樣軟件技術(shù)發(fā)展促進(jìn)Web應(yīng)用更加廣泛。今天的軟件,規(guī)模不斷擴(kuò)大,復(fù)雜度日漸升級、開發(fā)人員面臨的問題越來越多、解決方案也百花齊放。如何設(shè)計應(yīng)用軟件使紛雜的應(yīng)用需求和多樣化的客觀環(huán)境能夠彼此盡量少的受到對方的干擾和牽制,以及我們曾經(jīng)的成功案例能否再次使用?分層結(jié)構(gòu)和組件復(fù)用給眾多開發(fā)人員提供了選擇。分層結(jié)構(gòu)讓系統(tǒng)的功能更加明確,減少了各層次之間的關(guān)聯(lián)和依賴,讓開發(fā)人員可以同步工作而不會受到其他人的影響。組件復(fù)用是在分層的基礎(chǔ)上,由于層間的耦合性低,獨立性強,在成熟組件的基礎(chǔ)上開

16、發(fā)極大的提高了軟件的開發(fā)效率、縮短了開發(fā)周期,使軟件產(chǎn)品的穩(wěn)定性、兼容性、擴(kuò)展性都得到了提高。因此,人們越來越意識到軟件重用技術(shù)的重要性,設(shè)計模式和框架技術(shù)應(yīng)運而生。 設(shè)計模式和框架技術(shù)在整個系統(tǒng)開發(fā)中發(fā)揮了重要的作用,但從更廣泛的角度說,它們只是在更小的顆粒度上發(fā)揮功用。如何組織各個層次、如何合理選擇使用模式和框架技術(shù)又將開發(fā)人員的關(guān)注點提高到整個系統(tǒng)層面上來。架構(gòu)技術(shù)為這一問題提供了解決方案。架構(gòu)是軟件系統(tǒng)從整體到部分的最高層次的劃分,一般由多個不同領(lǐng)域的框架組成。一個成功的軟件需要有一個成功的架構(gòu),它將各個框架技術(shù)有機(jī)的組織起來,相互關(guān)聯(lián)但又不失其獨立性。軟件架構(gòu)的建立是一個復(fù)雜而又持

17、續(xù)改進(jìn)的過程,開發(fā)人員不可能對每個項目做不同的架構(gòu),而總是盡量重用以前的架構(gòu),或開發(fā)出盡量通用的架構(gòu)方案。如何在眾多的框架中選擇建立適合企業(yè)應(yīng)用的架構(gòu),并且怎樣讓各個應(yīng)用層無縫連接?如何整合框架以便讓各個層以一種松散耦合的方式彼此作用而不用管底層的技術(shù)細(xì)節(jié)?這給軟件人員提出了挑戰(zhàn)。 1.3 研究內(nèi)容 現(xiàn)在各種框架數(shù)目繁多,每一種框架都有其特定的應(yīng)用范圍,沒有一種框架能夠很好的解決web應(yīng)用中的所有問題。因此如何根據(jù)所要開發(fā)的系統(tǒng)選擇合適的框架組合起來,并且使系統(tǒng)中的各個層次以一種松散藕合的方式彼此作用而不用管理底層的技術(shù)實現(xiàn)細(xì)節(jié),成為我們面臨的主要問題。 為了解決以上問題,本課題主要對以

18、下內(nèi)容展開研究:J2EE平臺框架和MVC模式的介紹;在對WebWork,Spring和Hibernate等架構(gòu)進(jìn)行深入分析的基礎(chǔ)上,提出了集成WebWork,Spring和Hibernate的架構(gòu)設(shè)計方案,為Web應(yīng)用實現(xiàn)提供選擇性參考;以港航系統(tǒng)中局辦公系統(tǒng)下的個人先進(jìn)申請為案例,采用基于UML的系統(tǒng)分析方法,通過建立泳道圖、用例圖、類圖對其進(jìn)行了詳細(xì)的分析,并在此基礎(chǔ)上分別對Web表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)持久層進(jìn)行了詳細(xì)設(shè)計,提煉出了系統(tǒng)的結(jié)構(gòu)模型以及各模型之間的關(guān)系,確定整個系統(tǒng)采用WebWork,Spring和Hibernate體系結(jié)構(gòu)進(jìn)行分層及模塊化設(shè)計,并利用Eclipse,tom

19、cat5.0和Oracle 10g數(shù)據(jù)庫等技術(shù),實現(xiàn)先進(jìn)個人申請和管理的簡單程序,從而體現(xiàn)出多層架構(gòu)開發(fā)的優(yōu)越性。 2 J2EE平臺和MVC架構(gòu)的介紹 2.1 J2EE架構(gòu)的介紹 J2EE(Java 2 Platform Enterprise Edition,簡稱J2EE)是Java2平臺的企業(yè)版,適用于企業(yè)級體系結(jié)構(gòu)的開發(fā)、部署和管理等,為開發(fā)多層次分布式、針對服務(wù)器的應(yīng)用系統(tǒng)提供了統(tǒng)一的技術(shù)平臺。J2EE平臺己經(jīng)成為使用最廣泛的web應(yīng)用程序設(shè)計技術(shù),主要支持兩類軟件的開發(fā)和應(yīng)用:做高級信息系統(tǒng)的Web應(yīng)用服務(wù)器;Web應(yīng)用服務(wù)器上運行的Web應(yīng)用程序。 J2EE體系結(jié)構(gòu)擴(kuò)展

20、了標(biāo)準(zhǔn)的兩層結(jié)構(gòu),提供中間層來滿足經(jīng)濟(jì)、高可用性、高可靠性、可擴(kuò)展性的需求。這種結(jié)構(gòu)簡化了客戶端,主要程序都運行在能保證正常運行的服務(wù)器端,系統(tǒng)更加安全可靠,也更容易擴(kuò)充和移植。在J2EE的應(yīng)用中,軟件體系架構(gòu)模式(如層模式、MVC模式、多層分布模式等)和設(shè)計模式(如截取過濾器、視圖幫助器、前端控制器、值對象等)得到廣泛使用。 通過提供統(tǒng)一開發(fā)平臺,J2EE降低了開發(fā)多層應(yīng)用的費用和復(fù)雜性,同時提供對現(xiàn)有應(yīng)用程序集成強有力支持,完全支持Enterprise JavaBeans,有良好的向?qū)еС执虬筒渴饝?yīng)用,添加目錄支持,增強了安全機(jī)制,提高了性能,是傳統(tǒng)的互聯(lián)網(wǎng)應(yīng)用程序模型無法比擬的。

21、J2EE是多層的分布式應(yīng)用模型,應(yīng)用邏輯按功能劃分為組件,各個應(yīng)用組件根據(jù)他們所在的層分布在不同的機(jī)器上(也可以放在同一臺機(jī)器上)。它可以解決兩層模式(Client/Server)的弊端,在傳統(tǒng)模式中,客戶端擔(dān)當(dāng)了過多的角色而顯得臃腫,在這種模式中,第一次部署的時候比較容易,但難于升級或改進(jìn),可伸展性也不理想,而且經(jīng)?;谀撤N專有的協(xié)議(通常是某種數(shù)據(jù)庫協(xié)議)。它使得重用業(yè)務(wù)邏輯和界面邏輯非常困難?,F(xiàn)在J2EE的多層企業(yè)級應(yīng)用模型將兩層化模型中的不同層面切分成許多層。一個多層化應(yīng)用能夠為不同的每種服務(wù)提供一個獨立的層,圖2.1是J2EE典型的四層結(jié)構(gòu): 圖2.1 J2EE的層次結(jié)構(gòu)

22、 ①客戶層 客戶層是用來實現(xiàn)企業(yè)級應(yīng)用系統(tǒng)的操作界面和顯示層,并且某些客戶端程序也可通過它實現(xiàn)業(yè)務(wù)邏輯??煞譃榛赪eb和非基于Web的客戶端兩種情況?;赪eb的情況下主要作為企業(yè)Web服務(wù)器的瀏覽器,非基于Web的客戶層則是獨立的應(yīng)用程序,可以完成瘦客戶機(jī)無法完成的任務(wù)。 ②Web層 J2EE的Web層組件可以是JSP頁面或Servlets。按照J(rèn)2EE規(guī)范靜態(tài)的HTML頁面和Applets不算是Web層組件。Web層可能包含某些JavaBeans對象來處理用戶輸入,并把輸入發(fā)送給運行在業(yè)務(wù)層上的Enterprise Bean來進(jìn)行處理。 ③業(yè)務(wù)層邏輯層 業(yè)務(wù)邏輯層也叫EJB層

23、,它由EJB服務(wù)器和EJB組件組成。一般情況下許多開發(fā)商把Web服務(wù)器和EJB服務(wù)器結(jié)合在一起發(fā)布稱為應(yīng)用服務(wù)器。EJB層用來實現(xiàn)企業(yè)級信息系統(tǒng)的業(yè)務(wù)邏輯,是企業(yè)級應(yīng)用的核心,由運行在業(yè)務(wù)層中的EJB來處理,業(yè)務(wù)層中的EJB要運行在容器中。一個Bean從客戶端接收數(shù)據(jù),處理后把數(shù)據(jù)送到企業(yè)信息系統(tǒng)層存儲起來。同樣,一個Bean也可以從企業(yè)信息系統(tǒng)取出數(shù)據(jù),發(fā)送到客戶端程序。 ④EIS(Enterprise Information System企業(yè)信息系統(tǒng))層 企業(yè)信息系統(tǒng)層處理企業(yè)信息系統(tǒng)軟件,包括企業(yè)基礎(chǔ)建設(shè)系統(tǒng),企業(yè)資源計劃(ERP)、大型機(jī)事務(wù)處理、數(shù)據(jù)庫系統(tǒng)和其它的遺留信息系統(tǒng)。例

24、如J2EE應(yīng)用組件可能為了數(shù)據(jù)庫連接需要訪問企業(yè)信息系統(tǒng)。[1] 2.2 MVC模式介紹 MVC(Model-View-Controller)模式是現(xiàn)在世界上非常流行的一種設(shè)計模式。MVC包括三類對象,Model是應(yīng)用對象,View是它在屏幕上的表示,Controller定義用戶界面對用戶輸入的響應(yīng)方式。MVC模式是一種高層次上的架構(gòu)模式,主要是由合成模式、策略模式、觀察者模式和工廠方法模式組成。MVC設(shè)計模式是設(shè)計模式中很重要的一種。Model模型,即相關(guān)的數(shù)據(jù),是對象的內(nèi)在屬性,它提供業(yè)務(wù)邏輯;視圖是模型的外在表現(xiàn)形式,是模型在屏幕上的顯示,1個模型可以對應(yīng)1個或多個視圖,視圖還具

25、有與外界交互的功能;控制器是模型與視圖的聯(lián)系紐帶,用于管理用戶與視圖發(fā)生的交互,控制器提取通過視圖傳輸進(jìn)來的外部信息并轉(zhuǎn)化成相應(yīng)事件,然后由對應(yīng)的控制器對模型進(jìn)行更新,相應(yīng)的模型的更新與修改將通過控制器通知視圖,保持視圖與模型的一致性。[2] MVC模式從概念上定義了基于Web應(yīng)用的框架技術(shù),同時支持MVC模式的框架技術(shù)也是種類繁多,目前比較主流的有Struts,Webwork,SpringMVC,JSF等。對于各種框架技術(shù),不存在絕對的好與不好,而是各有所長,針對不同的應(yīng)用需求選擇合適的框架技術(shù)才是上策。以webwork架構(gòu)為例,WebWork的優(yōu)點是:結(jié)構(gòu)簡單易于擴(kuò)展、標(biāo)簽庫易于定制、攔

26、截器非常出色,支持廣泛的模板語言(Velociy和FreeMarker),完整的tag支持,模塊寫好后容易插入,一個jar包就可以包括所有的action和view(得益于ftl的classpath支持),和其他工具兼容性好。但其只要的缺點是文檔示例較少、具有較多的配置。 2.3 MVC與J2EE架構(gòu)之間的關(guān)系 理解MVC三個部分在J2EE架構(gòu)中處于什么位置,有助于我們理解MVC模式的實現(xiàn)。前面提到并提供了一個J2EE體系層次結(jié)構(gòu)圖,MVC與J2EE架構(gòu)間對應(yīng)關(guān)系是: (1)View處于Web層或者說是客戶端層,通常是JSP/Servlets。 (2)Controller也處于Web

27、層,通常用Servlets實現(xiàn)。 (3)Model處于業(yè)務(wù)邏輯層,通常用服務(wù)器端JavaBean或者EJB實現(xiàn)。 3 應(yīng)用架構(gòu)介紹 3.1 Webwork框架 正如前文所提到的,在MVC模式的實現(xiàn)技術(shù)中,Struts是一種流行的Web框架,擁有大量的用戶群體,但在構(gòu)建大規(guī)模Web應(yīng)用的時候,它并不能提供通常所需的創(chuàng)造力發(fā)揮空間。WebWork的創(chuàng)造者和JBoss的創(chuàng)始人之一的Rickard Oberg曾經(jīng)說:“框架的強大之處不是源自于它能讓你做什么,而是它不能讓你做什么”。Rickard所說的話解釋了什么是框架:框架使混亂的東西變得結(jié)構(gòu)化。然而,從另一個角度說,限制嚴(yán)格的架構(gòu)束縛

28、了開發(fā)人員的手腳,開發(fā)人員的創(chuàng)造力空間收縮了,甚至有些任務(wù)無法完成。很明顯,一種完美的中間狀態(tài)存在于無框架和嚴(yán)格框架之間,這種夢寐以求的中間狀態(tài)就是WebWork的終極目標(biāo)。 WebWork是由OpenSymphony組織開發(fā)的,致力于組件化和代碼重用的拉出式MVC模式J2EE Web框架。WebWork目前最新版本是2.2,其前身是Rickard Oberg開發(fā)的WebWork,但現(xiàn)在WebWork已經(jīng)被拆分成了Xwork1和WebWork2兩個項目,如圖3.1所示: 圖3.1 WebWork功能結(jié)構(gòu)圖 Xwork簡潔、靈活功能強大,它是一個標(biāo)準(zhǔn)的Command模式實現(xiàn),并且

29、完全從web層脫離出來。Xwork提供了很多核心功能:前端攔截機(jī)、運行時表單屬性驗證、類型轉(zhuǎn)換、強大的表達(dá)式語言(OGNL–the Object Graph Notation Language)、IoC(Inversion of Control反轉(zhuǎn)控制)容器等。 WebWork2建立在Xwork之上,處理HTTP的響應(yīng)和請求。WebWork2使用Filter Dispatcher(過濾器),將HTTP請求變成Action(業(yè)務(wù)層Action類)、session(會話)、application(應(yīng)用程序)、request請求范圍的參數(shù)映射。WebWork2支持多視圖表示,視圖部分可以使用JSP

30、, Velocity, FreeMarker,XML等。[3] WebWork主要包含了下面幾個部分: (1)Action(動作) 一般一個Action代表一次請求或調(diào)用。在WebWork中,一般Action類需要實現(xiàn)Action接口,或者直接繼承基礎(chǔ)類ActionSupport。這是它要實現(xiàn)默認(rèn)的execute方法,并返回一個在配置文件中定義的Result(也就是一個自定義的字符串而已)。當(dāng)然,Action也可以只是一個Pojo(Plain Object Java Object),不用繼承任何類也不用實現(xiàn)任何接口。Action是一次請求的控制器,同時也充當(dāng)數(shù)據(jù)模型的角色。 WebWo

31、rk的關(guān)鍵特性之一是:它并不會要求你使用特定的類來支持Web頁面上的表單字段。相反,這些屬性會出現(xiàn)在Action中,并且可以包含擁有復(fù)雜對象的子屬性。這是相當(dāng)有價值的,因為不再需要編寫FormBean類這種更加形式化的代碼了??傊?,Action(負(fù)責(zé)處理表單數(shù)據(jù))和FormBean(負(fù)責(zé)保存表單數(shù)據(jù))綁定如此緊密,合并它們是相當(dāng)有意義的。 (2)通過ActionContext訪問數(shù)據(jù) ActionContext是Action執(zhí)行時的上下文,本質(zhì)上是ThreadLocal Map,它存放的是Action在執(zhí)行時需要用到的對象,如:在使用WebWork時,上下文存有請求的參數(shù)、會話、Servl

32、et上下文、本地化信息等。在Web應(yīng)用程序開發(fā)中,除了將請求參數(shù)自動設(shè)置到Action的字段中,往往也需要在Action里直接獲取請求Request或會話(session)的一些信息,甚至需要直接對JavaSevrlet Http的請求(HttpSevrlet Request)、響應(yīng)(HttpSevrlet Response)操作。當(dāng)有這方面的需要時,可以通過使用ActionContext來操作這些對象, (3)Interceptor Interceptor(攔截器)將Action共用的行為獨立出來,在Action執(zhí)行前后運行。Interceptor將很多功能從Action中獨立出來,大

33、量減少了Action的代碼,獨立出來的行為具有很好的重用性。WebWork的許多功能都是有Interceptor實現(xiàn),可以在配置文件中組裝Action用到的Interceptor,它會按照指定的順序,在Action執(zhí)行前后運行。WebWork框架的很多功能都是以攔截器的形式提供出來。例如:參數(shù)組裝,驗證,國際化,文件上傳等等。 (4)驗證框架 WebWork提供了在Action執(zhí)行之前,對輸入數(shù)據(jù)的驗證功能,它使用了其核心XWork的驗證框架。提供了如下功能:可配置的驗證文件。它的驗證文件是一個獨立的XML配置文件,對驗證的添加、修改只需更改配置文件,無需編譯任何的Class;驗證文件和被

34、驗證的對象完全解耦;多種不同的驗證方式,強大的表達(dá)式驗證;同時支持服務(wù)器端和客戶端驗證。 當(dāng)然,Webwork還包含像FilterDispatcher(過濾器)、表達(dá)式語言EL和OGNL、Result Type(返回類型)等主要內(nèi)容,他們共同構(gòu)成了Webwork強大的功能。 3.2 Spring框架 Spring是一種多層的J2EE應(yīng)用程序框架,它是以Rod Johnson編著的Expert One-on-One J2EE Design and Development一書的代碼為基礎(chǔ)發(fā)展而來。Spring追求的就是一種輕量級的目標(biāo),旨在簡化J2EE的開發(fā),降低J2EE項目的實施的難度Sp

35、ring框架是一個松耦合的框架,其耦合度被設(shè)計為最小,在各個層次上具體選用那個框架取決于實際項目的需要和開發(fā)者的意愿。[4] 簡單來說,Spring是一個輕量級的控制反轉(zhuǎn)(IoC)和面向切面(AOP)的容器框架。 輕量——從大小與開銷兩方面而言Spring都是輕量的。完整的Spring框架可以在一個大小只有1MB多的JAR文件里發(fā)布。并且Spring所需的處理開銷也是微不足道的。此外,Spring是非侵入式的:典型地,Spring應(yīng)用中的對象不依賴于Spring的特定類。 控制反轉(zhuǎn)——Spring通過一種稱作控制反轉(zhuǎn)(IoC)的技術(shù)促進(jìn)了松耦合。當(dāng)應(yīng)用了IoC,一個對象依賴的其它對象會通

36、過被動的方式傳遞進(jìn)來,而不是這個對象自己創(chuàng)建或者查找依賴對象。你可以認(rèn)為IoC與JNDI相反,不是對象從容器中查找依賴,而是容器在對象初始化時不等對象請求就主動將依賴傳遞給它。 面向切面——Spring提供了面向切面編程的豐富支持,允許通過分離應(yīng)用的業(yè)務(wù)邏輯與系統(tǒng)級服務(wù)(例如審計(auditing)和事務(wù)管理)進(jìn)行內(nèi)聚性的開發(fā)。應(yīng)用對象只實現(xiàn)它們應(yīng)該做的——完成業(yè)務(wù)邏輯——僅此而已。它們并不負(fù)責(zé)(甚至是意識)其它的系統(tǒng)級關(guān)注點,例如日志或事務(wù)支持。 容器——Spring包含并管理應(yīng)用對象的配置和生命周期,在這個意義上它是一種容器,你可以配置你的每個bean如何被創(chuàng)建——基于一個可配置原型(

37、prototype),你的bean可以創(chuàng)建一個單獨的實例或者每次需要時都生成一個新的實例——以及它們是如何相互關(guān)聯(lián)的。然而,Spring不應(yīng)該被混同于傳統(tǒng)的重量級的EJB容器,它們經(jīng)常是龐大與笨重的,難以使用。 框架——Spring可以將簡單的組件配置、組合成為復(fù)雜的應(yīng)用。在Spring中,應(yīng)用對象被聲明式地組合,典型地是在一個XML文件里。Spring也提供了很多基礎(chǔ)功能(事務(wù)管理、持久化框架集成等等),將應(yīng)用邏輯的開發(fā)留給了你。 所有Spring的這些特征使你能夠編寫更干凈、更可管理、并且更易于測試的代碼。它們也為Spring中的各種模塊提供了基礎(chǔ)支持。[13] 3.3 Hibern

38、ate架構(gòu) Hibernate是一個面向Java環(huán)境的對象/關(guān)系數(shù)據(jù)庫映射工具,它的目標(biāo)是成為Java中管理持續(xù)性數(shù)據(jù)問題的一種完整的解決方案。它協(xié)調(diào)應(yīng)用與關(guān)系數(shù)據(jù)庫的交互,讓開發(fā)者解放出來專注于手中的業(yè)務(wù)問題。Hibernate是一種非強迫性的解決方案,我們可以利用Hibernate提供的查詢和獲取數(shù)據(jù)的方法,當(dāng)然也可以使用傳統(tǒng)的JDBC來實現(xiàn)數(shù)據(jù)庫的操作。 Hibernate 不僅僅管理Java 類到數(shù)據(jù)庫表的映射,還提供數(shù)據(jù)查詢和獲取數(shù)據(jù)的方法,可以大幅度減少開發(fā)時人工使用SQL 和JDBC 處理數(shù)據(jù)的時間。Hibernate 的目標(biāo)是對于開發(fā)者通常的數(shù)據(jù)持久化相關(guān)的編程任務(wù),解放其

39、中的95%。同時,它是一個開放源代碼的對象關(guān)系映射框架,它對JDBC進(jìn)行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數(shù)據(jù)庫。 Hibernate可以應(yīng)用在任何使用JDBC的場合,既可以在Java的客戶端程序?qū)嵱?,也可以在Servlet/JSP的Web應(yīng)用中使用,最具革命意義的是,Hibernate可以在應(yīng)用EJB的J2EE架構(gòu)中取代CMP,完成數(shù)據(jù)持久化的重任。[5] 3.4 三種架構(gòu)整合的優(yōu)勢 以上對WebWork、Spring和Hibernate三種框架技術(shù),進(jìn)行了詳細(xì)的討論,從中可以看出,對于各個框架技術(shù)就個體而言不存在優(yōu)與劣,而只是應(yīng)用領(lǐng)域不同而已

40、。而和其他技術(shù)整合使用時,所表現(xiàn)出來的差異則大不相同。如何針對某一具體領(lǐng)域,選擇合適的框架技術(shù)來相互彌補應(yīng)用中的不足,則是很值得討論的。 開發(fā)過程中,三種框架技術(shù)的集成非常方便,作為開源框架中的佼佼者,三種技術(shù)顧及到了和其他框架的接口,而且開發(fā)者對于具體的應(yīng)用需求,可以修改源代碼,定制客戶化服務(wù)。在項目實現(xiàn)中通過對以上三種框架的集成,使不同框架的局限性達(dá)到最小,而且充分利用了每個框架的優(yōu)勢,達(dá)到了良好的效果。Webwork+Spring+Hibernate架構(gòu)具有以下特點: (1)合理的設(shè)計思想。WebWork是基于MVC的框架,它很好地把業(yè)務(wù)邏輯和表示層分離。由于WebWork在對象持久

41、化和業(yè)務(wù)對象管理方面尚存在一定的不足,基于WebWork的良好兼容性,采用Spring和Hibernate框架予以補充。Spring是一種輕量級容器,利用依賴注入方式實現(xiàn)對象的初始化,使得開發(fā)人員減輕了初始化對象的負(fù)擔(dān);同時利用AOP機(jī)制進(jìn)行事務(wù)管理,全面降低了構(gòu)建企業(yè)應(yīng)用的復(fù)雜度。Hibernate是一個輕量級的對象持久化工具,它能很好地將實體對象與數(shù)據(jù)庫表的記錄相對應(yīng),而且通過統(tǒng)一接口屏蔽具體數(shù)據(jù)庫的差異。 (2)快速協(xié)作開發(fā)。本架構(gòu)使用分層技術(shù)實現(xiàn),分為表現(xiàn)層,業(yè)務(wù)層,持久層和領(lǐng)域模型層。各層次之間的關(guān)系通過三種框架解耦與層之間邊界清晰、功能盡量獨立,對于同一層次的不同的業(yè)務(wù)邏輯基于模

42、塊劃分,使得整個系統(tǒng)既可以橫向分工,也能縱向分工,能充分發(fā)揮團(tuán)隊化協(xié)作能力,使開發(fā)人員充分發(fā)揮各自的特長。 (3)良好的兼容性。本架構(gòu)所使用的三種框架技術(shù)都是開源技術(shù),它們?nèi)咧g以及和其它框架之間能夠很好的兼容。WebWork的表現(xiàn)層除了使用jsp之外還可以使用Freemarker, Velocity等模板技術(shù)作為表現(xiàn)技術(shù)。Spring作為輕量級管理容器,可以和Acegi安全框架無縫兼容,滿足了在安全控制方面的不足;同時它和Hibernate框架的兼容,使對象的持久化操作更加便捷。 (4)重用和模板化設(shè)計。WSH框架技術(shù)是基于模塊化設(shè)計的。相互分離的各層之間互不影響,某一層的改動不會影響

43、另一層,這樣為業(yè)務(wù)邏輯的重用提供了可能。在設(shè)計中抽象出功能相同的部分作為通用模塊使用,充分利用己有的工具集加速開發(fā)進(jìn)度。 (5)高效的性能和開發(fā)效率。Spring使開發(fā)人員直接使用類對象,而不用考慮具體的生成方式,集中精力關(guān)注于業(yè)務(wù)對象的處理。Hibernate技術(shù)規(guī)范對底層數(shù)據(jù)庫操作進(jìn)行了大量的優(yōu)化,提高了系統(tǒng)性能,其O/R設(shè)計,使開發(fā)人員可以隨心所欲的使用面向?qū)ο缶幊趟枷雭聿倏v數(shù)據(jù)庫,無須關(guān)心對象本身及其關(guān)系如何在數(shù)據(jù)庫中存儲。相對于使用JDBC和SQL語句來手工操作數(shù)據(jù)庫,大大減少了開發(fā)數(shù)據(jù)庫的工作量。 (6)可擴(kuò)展性和移植性。WSH架構(gòu)是基于J2EE平臺的,Java的天性就是平臺無

44、關(guān)性。Hibernate作為持久化框架向上屏蔽了不同數(shù)據(jù)庫間的差異,可以很容易移植到不同的數(shù)據(jù)庫。Spring的Bean對象通過配置文件使得開發(fā)人員可以不用書寫任何代碼,不經(jīng)改動的情況下,就可以移植到另一個IoC容器。架構(gòu)各層次之間是獨立的,通過接口進(jìn)行交互,對于系統(tǒng)擴(kuò)展而言,只要實現(xiàn)同一接口,可以方便的對系統(tǒng)功能進(jìn)行擴(kuò)充和維護(hù)。[6] 4 先進(jìn)個人申請分析與設(shè)計 信息系統(tǒng)分析是在總體規(guī)劃的指導(dǎo)下,對某個或若干個子系統(tǒng)進(jìn)行仔細(xì)、深入地調(diào)查研究,確定新系統(tǒng)邏輯結(jié)構(gòu)的過程。信息系統(tǒng)分析與總體規(guī)劃相比這個階段所作的工作是更詳細(xì)更細(xì)致的工作。在系統(tǒng)分析階段,分析設(shè)計人員要詳細(xì)了解每一個業(yè)務(wù)過

45、程和業(yè)務(wù)活動的工作流程及信息處理流程,理解用戶對信息系統(tǒng)的需求,然后運用各種信息系統(tǒng)開發(fā)理論、開發(fā)方法和開發(fā)技術(shù)確定系統(tǒng)應(yīng)該具有的邏輯功能,再用適當(dāng)?shù)姆椒ū磉_(dá)出來,形成系統(tǒng)的邏輯方案。 信息系統(tǒng)分析的工作步驟:第一、對現(xiàn)行系統(tǒng)進(jìn)行詳細(xì)的業(yè)務(wù)調(diào)查分析了解各項需求;第二、進(jìn)行數(shù)據(jù)分析,建立數(shù)據(jù)庫邏輯模型;第三、進(jìn)行功能分析,確定新系統(tǒng)邏輯結(jié)構(gòu)。[7] 在Web應(yīng)用系統(tǒng)架構(gòu)分析的基礎(chǔ)上,本章以項目實例“港航局辦公室系統(tǒng)3期的精神文明建設(shè)”為背景,詳細(xì)闡述了系統(tǒng)分析階段的各個步驟,并結(jié)合Webwork+Spring+Hibernate架構(gòu)的特點,進(jìn)行分析設(shè)計工作。 4.1 系統(tǒng)分析階段 4.1

46、.1港航信息系統(tǒng)實施背景及目標(biāo) 目前,港航部門面臨著管理范圍廣、難度大、成本高、效果小的現(xiàn)狀,原有的思路、模式和管理方法無法有效地面對“工作點多、面廣、人少”的發(fā)展?fàn)顩r,必須積極探索新的管理模式以應(yīng)對時代發(fā)展的要求。打造以辦公網(wǎng)絡(luò)化、管理科學(xué)化、監(jiān)管信息化、服務(wù)自動化、決策智能化為特征的數(shù)字港航,全面推進(jìn)港航管理系統(tǒng)“依法行政、高效管理、便民利民、安全保障、公正廉潔”等效能建設(shè)要求,實現(xiàn)以信息化手段管人、管事。 港航信息化建設(shè)要想發(fā)揮其整體效益,必須對業(yè)務(wù)系統(tǒng)進(jìn)行徹底整合,以提高信息資源的高度共享和各個應(yīng)用系統(tǒng)的整體協(xié)同能力,資源整合,優(yōu)勢互補,形成一個結(jié)構(gòu)完整、技術(shù)先進(jìn)的信息網(wǎng)絡(luò)。從確定

47、信息網(wǎng)的框架到方案論證和組織實施等各個環(huán)節(jié),都需要各級部門發(fā)揮作用,確保信息網(wǎng)工程有序地進(jìn)行。通過充分開發(fā)利用通信網(wǎng)絡(luò)資源、信息技術(shù)和信息資源,整合分散的資源,較好地發(fā)揮出應(yīng)有的效能,并最終達(dá)到整體協(xié)同。 局辦管理系統(tǒng)是港航開發(fā)中七大系統(tǒng)之一,其主要功能包括港航部門基本信息和日常事務(wù)的管理。其開發(fā)的價值在于,可以大大提高辦公室管理者日常辦公效率,促進(jìn)整個港航部門信息化的發(fā)展,同時可以節(jié)省資源,為整個系統(tǒng)的建設(shè)提供有力保障。 4.1.2局辦管理系統(tǒng)需求分析 局辦公室主要業(yè)務(wù)包括:(1)政務(wù)管理,由日程管理、規(guī)章制度、綜合信息、組織及人員結(jié)構(gòu)、電話號碼管理、老干部管理組成;(2)行政管理:由

48、固定資產(chǎn)管理、車輛管理組成;(3)執(zhí)法隊伍建設(shè);(4)會議管理;(5)電子公告;(6)港航信息;(7)精神文明建設(shè)。其中精神文明建設(shè)包括:先進(jìn)個人申請管理和先進(jìn)集體申請管理。 局辦管理系統(tǒng)的整體結(jié)構(gòu)如圖4.1所示: 圖4.1 局辦管理系統(tǒng)整體結(jié)構(gòu)圖 先進(jìn)個人申請管理隸屬于港航局辦公系統(tǒng)下的精神文明建設(shè)模塊,同時與先進(jìn)集體申請管理具有相類似的流程與功能,下面僅以先進(jìn)個人申請管理為例,進(jìn)行業(yè)務(wù)描述與需求提取。 4.1.3 先進(jìn)個人申請需求分析 (1)業(yè)務(wù)需求 根據(jù)用戶的描述以及實際調(diào)查,可以確定先進(jìn)個人申請子系統(tǒng)的業(yè)務(wù)需求為以下幾點: l 進(jìn)行網(wǎng)上先進(jìn)個人申請錄入; l 推

49、薦單位和市級部門對先進(jìn)個人申請的的審核; l 進(jìn)行先進(jìn)個人申請的管理,包括查詢,刪除,修改,查看詳情和打印功能; l 不同等級的用戶擁有不同的查詢和使用權(quán)限,保證不同辦事機(jī)構(gòu)在自身權(quán)限內(nèi)獲得有用的業(yè)務(wù)處理信息,保證信息的安全性。 (2)用戶及權(quán)限的劃分 根據(jù)與用戶的溝通和實地考查,將用戶分為:地方管理用戶、市級推薦單位用戶、省級管理用戶等若干等級,其權(quán)限與相關(guān)的職責(zé)如下: l 地方管理用戶:主要是辦公室系統(tǒng)的一般使用用戶,他們只負(fù)責(zé)先進(jìn)申請相關(guān)業(yè)務(wù)的錄入功能,同時具備對先進(jìn)個人申請的檢索查看等功能; l 市級推薦單位用戶:主要是地方辦公室系統(tǒng)的主管部門用戶,他們負(fù)責(zé)對上報的申請進(jìn)行

50、匯總與初審。 l 省級管理用戶:是主管部門最高級別用戶,他們擁有最高的用戶權(quán)限,他們負(fù)責(zé)對上報的先進(jìn)申請文件進(jìn)行審核與監(jiān)督。 (3)系統(tǒng)的業(yè)務(wù)流程分析 UML(Unified Modeling Language,統(tǒng)一建模語言)是一種標(biāo)準(zhǔn)的圖形化建模語言,它是面向?qū)ο蠓治雠c設(shè)計的一種標(biāo)準(zhǔn)表示。同時,是一種定義良好、易于表達(dá)、功能強大、普遍適用且可視化的建模語言。它溶入了軟件工程領(lǐng)域的新思想、新方法和新技術(shù)。UML將是面向?qū)ο蠹夹g(shù)領(lǐng)域內(nèi)占主導(dǎo)地位的標(biāo)準(zhǔn)建模語言,目前UML獲得了工業(yè)界、科技界和應(yīng)用界的廣泛支持,成為可視化建模語言事實上的工業(yè)標(biāo)準(zhǔn)。 泳道圖是將模型中的活動按照職責(zé)組織起來。這

51、種分配可以通過將活動組織成用線分開的不同區(qū)域來表示。由于它們的外觀的緣故,這些區(qū)域被稱作泳道。它可以方便的描述企業(yè)的各種業(yè)務(wù)流程,能夠直觀地描述系統(tǒng)的各活動之間的邏輯關(guān)系,利于用戶理解業(yè)務(wù)邏輯。[8]先進(jìn)個人申請的泳道圖如下: 圖4.2 先進(jìn)個人申請的泳道圖 用例圖:是從用戶角度描述系統(tǒng)功能,并指出各功能的操作者,對系統(tǒng)行為的動態(tài)描述。它代表系統(tǒng)中各個項目相關(guān)人員之間就系統(tǒng)行為所達(dá)成的契約。先進(jìn)個人申請用例圖如下: 圖4.3 先進(jìn)個人申請用例圖 4.2 系統(tǒng)設(shè)計階段 4.2.1 系統(tǒng)設(shè)計原則 本系統(tǒng)遵循以下建設(shè)原則:[14] (1)統(tǒng)一規(guī)劃、統(tǒng)一標(biāo)準(zhǔn)、城市建網(wǎng)、網(wǎng)

52、絡(luò)互連、分級使用、分步實施。 (2)遵循國家勞動部要求與國際ISO標(biāo)準(zhǔn),為今后的進(jìn)一步發(fā)展奠定基礎(chǔ)。 (3)系統(tǒng)建成即可發(fā)揮作用,提高工作效率和管理水平。 (4)采用當(dāng)前較成熟和先進(jìn)的主流設(shè)備,采用先進(jìn)的技術(shù),在保證優(yōu)良性能的基礎(chǔ)上,盡可能降低造價,使整個系統(tǒng)高效地發(fā)揮作用。 (5)系統(tǒng)高度的可靠性,保證系統(tǒng)可以在任何條件和環(huán)境下均能正常工作;安全性方面有針對性地采取一些措施,使系統(tǒng)能安全地運行,避免人為因素及計算機(jī)病毒等造成的破壞作用,爭取做到防患于未然。 (6)充分利用國家和行業(yè)公用通訊設(shè)施,遵循通信技術(shù)以及國家在技術(shù)體制上的有關(guān)規(guī)定,充分保護(hù)利用現(xiàn)有的軟、硬件資源。 (7)網(wǎng)

53、絡(luò)技術(shù)具有先進(jìn)性,能適應(yīng)未來技術(shù)的發(fā)展,便于發(fā)展、便于擴(kuò)充、靈活性強。 (8)系統(tǒng)具備相當(dāng)?shù)南冗M(jìn)性和足夠的事務(wù)處理能力,以保證在信息時代的新形勢下能夠準(zhǔn)確、迅速及時地處理日益增長的各種信息數(shù)據(jù),實現(xiàn)公路客運資源的協(xié)同工作。 (9)系統(tǒng)具有一定的可擴(kuò)展性和升級更新能力,適應(yīng)主管單位的宏觀管理需要和企業(yè)的規(guī)?;?jīng)營。計算機(jī)技術(shù)的不斷發(fā)展,同時保障軟硬件資源的充分利用。 (10)作為當(dāng)前知識經(jīng)濟(jì)發(fā)展形勢下的現(xiàn)代管理系統(tǒng),系統(tǒng)可以將道路運輸行政管理部門連接在一起;協(xié)同處理有關(guān)業(yè)務(wù);系統(tǒng)還可以通過國際互聯(lián)網(wǎng)(INTERNET)把相關(guān)信息通過WEB發(fā)布到網(wǎng)上,便于展開網(wǎng)絡(luò)交流管理活動。 4.2.2

54、軟件基本架構(gòu)的搭建 本系統(tǒng)功能的實現(xiàn),是參考J2EE框架結(jié)構(gòu),結(jié)合WebWork、Spring和Hibernate的相關(guān)技術(shù)特點,采用了MVC和DAO的設(shè)計模式,來完成J2EE架構(gòu)的具體設(shè)計。 軟件體系結(jié)構(gòu)中采用三層結(jié)構(gòu):Web表示層、業(yè)務(wù)邏輯層、持久層。各個層次之間具有不同的功能,并保持清晰的隔離,以使彼此獨立存在。三層之間的關(guān)系如下圖:[9] 圖4.4 軟件體系三層結(jié)構(gòu)間的關(guān)系 (1)表示層采用WebWork框架 WebWork的工作,總得來說是提供一個流程的控制:通過接收用戶請求,將基于http的請求參數(shù)和相關(guān)的環(huán)境變量封裝到通用的ActionContext中。Xwor

55、k接收到WebWork傳遞過來的ActionContext,放入ValueStack。執(zhí)行攔截器before()方法,執(zhí)行Action的execute()方法,執(zhí)行攔截器after()方法委托給Service執(zhí)行,并返回Result,根據(jù)設(shè)置顯示結(jié)果給客戶端。WebWork表示層的基本處理流程如下圖所示: 圖4.5 表示層的處理流程 (2)業(yè)務(wù)層采用Spring技術(shù) 業(yè)務(wù)層(service layer)屬于系統(tǒng)的核心部分,也就是業(yè)務(wù)核心的載體---領(lǐng)域模型所在的位置,還包括業(yè)務(wù)過程控制以及事務(wù)控制等服務(wù)。 業(yè)務(wù)層職責(zé)如下: 處理應(yīng)用程序的業(yè)務(wù)邏輯和業(yè)務(wù)校驗;管理事務(wù);允許與其它

56、層相互作用的接口;管理業(yè)務(wù)層級別的對象的依賴;在顯示層和持久層之間增加了一個靈活的機(jī)制,使得他們不直接的聯(lián)系在一起;通過揭示從顯示層到業(yè)務(wù)層之間的Context來得到business services;管理程序的執(zhí)行(從業(yè)務(wù)層到持久層)。 Spring提供了控制倒置(inversion of control,簡稱IoC)和注射依賴設(shè)置(setter dependency injection)這些方式,用XML文件將對象連接起來。 IoC是一個簡單概念(它允許一個對象在上層接受其他對象的創(chuàng)建),用IoC這種方式讓對象從創(chuàng)建中釋放了出來,降低了偶合度。[16] Spring業(yè)務(wù)層的處理流程如圖

57、所示: 圖4.6 業(yè)務(wù)層的處理流程 (3)持久層采用Hibernate技術(shù) 持久層(persistence layer)主要負(fù)責(zé)業(yè)務(wù)數(shù)據(jù)的持久性存儲。 持久層采用Hibernate技術(shù)持久化數(shù)據(jù)。但是一個基于關(guān)系數(shù)據(jù)庫系統(tǒng)(RDMS)的應(yīng)用程序,一般不會只采用一種持久化技術(shù),很多情況下除了使用O/R Mapping技術(shù),可能出于性能等特殊原因的考慮,需要直接進(jìn)入JDBC技術(shù)。 Hibernate作為一種持久層框架和Spring搭配在一起,使開發(fā)人員使用面向?qū)ο蟮牟僮鞣绞絹聿僮鲾?shù)據(jù)庫記錄。更為重要的是,應(yīng)用系統(tǒng)在不同數(shù)據(jù)庫間移植非常方便,只需在配置文件中更改即可。[15] 簡

58、單的說持久層主要完成數(shù)據(jù)庫表的構(gòu)造、持久化對象和*.hbm.xml映射文件的編寫。Hibernate作為持久化框架向上屏蔽了不同數(shù)據(jù)庫間的差異,可以很容易移植到不同的數(shù)據(jù)庫。Hibernate持久層的處理流程如圖所示: 圖4.7 持久層的處理流程圖 4.2.3 類圖設(shè)計 類圖:它描述的是一種靜態(tài)關(guān)系,在系統(tǒng)的整個生命周期都是有效的。不僅定義系統(tǒng)中的類,表示類之間的聯(lián)系如關(guān)聯(lián)、依賴、聚合等,也包括類的內(nèi)部結(jié)構(gòu)即:類的屬性和操作。 圖4.8顯示了先進(jìn)個人申請管理的類圖:先進(jìn)個人申請類繼承了人員信息類和部門信息類,同時初審類和復(fù)審類又繼承了先進(jìn)個人申請類。 圖4.8 先進(jìn)個人申

59、請的類圖 4.2.4 數(shù)據(jù)庫設(shè)計 在數(shù)據(jù)流程分析的基礎(chǔ)之上,我們已經(jīng)基本了解了用戶所要使用的數(shù)據(jù),這時就應(yīng)進(jìn)行詳細(xì)的數(shù)據(jù)分析從而建立數(shù)據(jù)模型了。 在進(jìn)行數(shù)據(jù)庫設(shè)計的時候,要遵循下面的幾個原則:[7] (1)通用性原則 數(shù)據(jù)共享不僅僅局限于“數(shù)據(jù)共用”,還應(yīng)該滿足:數(shù)據(jù)庫不依賴于各個子系統(tǒng),既由各子系統(tǒng)共用:數(shù)據(jù)與程序嚴(yán)格分離,數(shù)據(jù)的增刪、更改不需要更改程序。這就要求數(shù)據(jù)庫必須具有良好的通用性,即:數(shù)據(jù)具有透明性;通用的數(shù)據(jù)操縱語言供各子系統(tǒng)各應(yīng)用程序調(diào)用數(shù)據(jù)。 (2)一致性原則 數(shù)據(jù)交叉現(xiàn)象不僅造成大量的數(shù)據(jù)重復(fù),而且難以統(tǒng)一更新,產(chǎn)生數(shù)據(jù)混亂的現(xiàn)象,導(dǎo)致數(shù)據(jù)的不一致、不唯一

60、。因此,數(shù)據(jù)庫必須統(tǒng)一管理。同時,為了減少由于數(shù)據(jù)不一致所造成的損失,系統(tǒng)應(yīng)該包含數(shù)據(jù)的一致性校驗的功能,用戶可以在特定時間段內(nèi)進(jìn)行一致性校驗,來避免某些數(shù)據(jù)存在冗余或者不一致。 (3)安全性原則 數(shù)據(jù)庫是營運系統(tǒng)的基礎(chǔ),數(shù)據(jù)庫系統(tǒng)的崩潰對水運系統(tǒng)以及營運系統(tǒng)是災(zāi)難性的,因此必須保證數(shù)據(jù)庫系統(tǒng)的高度安全可靠性。采取一定的措施,如數(shù)據(jù)庫服務(wù)器磁盤鏡像、數(shù)據(jù)庫備份等,并保證數(shù)據(jù)不被非法訪問,病毒侵?jǐn)_,還必須采取相應(yīng)的保密措施。 下面是先進(jìn)個人申請的主題數(shù)據(jù)庫: 表4.1:主題數(shù)據(jù)庫 主題數(shù)據(jù)庫標(biāo)識 主題數(shù)據(jù)庫名稱 數(shù)據(jù)庫表標(biāo)識 數(shù)據(jù)庫表名稱 GH3P_OFFICE_QUALI

61、TY 局辦文明建設(shè)數(shù)據(jù)庫 T_PERSONQUALITY T_PERSONTRIAL 先進(jìn)個人申請表 審查表 GH3P_OFFICE_USER 基礎(chǔ)數(shù)據(jù)庫 T_USER T_DEPARTMENT T_ATTACHMENT 用戶基本信息 部門基本信息 附件基本信息 (基礎(chǔ)數(shù)據(jù)庫中數(shù)據(jù)表省略) 表4.2:先進(jìn)個人申請數(shù)據(jù)庫表 數(shù)據(jù)元素標(biāo)識 含義 類型 長度 允許空 ID 申請表ID NUMBER 22 N USER_ID 用戶ID NUMBER 22 N DEPARTMENT_ID 部門ID NUMBER 22 N SU

62、BMIT_DATE 提交日期 DATE Y NAME 申請人姓名 VARCHAR2 60 Y COMPANY 單位 VARCHAR2 90 Y POSITION 職位 VARCHAR2 90 Y DIPLOMA 學(xué)歷 VARCHAR2 90 Y MAJOR 專業(yè) VARCHAR2 90 Y SEX 性別 NUMBER 4 Y MODIFY 是否可改 NUMBER 4 Y 表4.3:先進(jìn)個人申請審查表 數(shù)據(jù)元素標(biāo)識 含義 類型 長度 允許空 ID 申請表標(biāo)識 NUMBER 22 N U

63、SER_ID 用戶ID NUMBER 22 N DEPARTMENT_ID 部門ID NUMBER 22 N OPINION 審查意見 VARCHAR2 500 Y STAMP 審查人 VARCHAR2 90 Y DATE 審查日期 DATE Y STATE 審查狀態(tài) NUMBER 4 Y APP_ID 個人申請ID NUMBER 22 N (注:審查狀態(tài)取值為1和2,1代表市級管理部門意見,2代表省級審查意見) 第五章 先進(jìn)個人申請與管理的系統(tǒng)實現(xiàn) 5.1 開發(fā)軟件的介紹 5.1.1 Eclipse

64、開發(fā)平臺 Eclipse 是一個開放源代碼的、基于 Java 的可擴(kuò)展開發(fā)平臺。它由IBM作為主發(fā)起人投資開發(fā),并被Borland、Sybase等眾多公司所支持。Eclipse 不僅僅是一個集成開發(fā)環(huán)境(DE),也是一個工具集成的開發(fā)平臺, 它提供了一個用于開發(fā)插件的框架,使創(chuàng)建、繼承和使用軟件工具更容易。就其本身而言,它只是一組規(guī)則,滿足了以下需求:支持多種應(yīng)用開發(fā)工具的構(gòu)建;能獨立地開發(fā)處理各種內(nèi)容的插件(HTML、Java、C、JSP、EJB、XML和GIF等);開發(fā)者可以自己獨立地開發(fā)工具,與其它標(biāo)準(zhǔn)工具無縫集成;可以在多種平臺上運行,包括Windows和Linux平臺。 Ecli

65、pse平臺由幾個主要的部分構(gòu)成:平臺運行庫、工作區(qū)、工作臺、團(tuán)隊支持和幫助。[10] Eclipse平臺體系結(jié)構(gòu),如圖 圖5.1 Eclipse 平臺體系結(jié)構(gòu)圖 ①平臺 平臺運行庫是內(nèi)核,它在啟動時檢查已安裝了哪些插件,并創(chuàng)建關(guān)于它們的注冊表信息。為降低啟動時間和資源使用,它在實際需要任何插件時才加載該插件。除了內(nèi)核外,其他每樣?xùn)|西都是作為插件來實現(xiàn)的。 ②工作區(qū) 工作區(qū)是負(fù)責(zé)管理用戶資源的插件。這包括用戶創(chuàng)建的項目、那些項目中的文件,以及文件變更和其他資源。工作區(qū)還負(fù)責(zé)通知其他插件關(guān)于資源變更的信息,比如文件創(chuàng)建、刪除或更改。 ③工作臺 工作臺為 Eclipse

66、 提供用戶界面。它是使用標(biāo)準(zhǔn)窗口工具包(SWT)和一個更高級的 API(JFace)來構(gòu)建的;SWT 是 Java 的 Swing/AWT GUI API 的非標(biāo)準(zhǔn)替代者,JFace 則建立在 SWT 基礎(chǔ)上,提供用戶界面組件。 ④團(tuán)隊支持 團(tuán)隊支持組件負(fù)責(zé)提供版本控制和配置管理支持。它根據(jù)需要添加視圖,以允許用戶與所使用的任何版本控制系統(tǒng)(如果有的話)交互。大多數(shù)插件都不需要與團(tuán)隊支持組件交互,除非它們提供版本控制服務(wù)。 ⑤幫助 幫助組件具有與 Eclipse 平臺本身相當(dāng)?shù)目蓴U(kuò)展能力。與插件向 Eclipse 添加功能相同,幫助提供一個附加的導(dǎo)航結(jié)構(gòu),允許工具以 HTML 文件的形式添加文檔。 5.1.2 Apache Tomcat應(yīng)用服務(wù)器 隨著java的流行,Tomcat在web上的應(yīng)用也越來越廣,Tomcat作為一個開源的servlet容器, 是jakarta項目中的一個重要的子項目,其被JavaWorld雜志的編輯選為2001年度最具創(chuàng)新的java產(chǎn)品(Most Innovative Java Product),同時它又是sun公司官方推薦的servlet和

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

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!