基于J2EE多層架構(gòu)的web應(yīng)用研究分析網(wǎng)絡(luò)工程管理專業(yè)
《基于J2EE多層架構(gòu)的web應(yīng)用研究分析網(wǎng)絡(luò)工程管理專業(yè)》由會(huì)員分享,可在線閱讀,更多相關(guān)《基于J2EE多層架構(gòu)的web應(yīng)用研究分析網(wǎng)絡(luò)工程管理專業(yè)(30頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、 內(nèi)容摘要當(dāng)前基于J2EE平臺(tái)的Web應(yīng)用在邏輯上一般被分為四層:域模型層、表示層、業(yè)務(wù)層、數(shù)據(jù)層。本文主要針對(duì)表示層、業(yè)務(wù)層和持久層的實(shí)現(xiàn)提出了基于Webwork+Spring+Hibernate的解決方案。WebWork是一個(gè)致力于組件化和代碼重用的拉出式MVC模式實(shí)現(xiàn)框架,以其靈活、強(qiáng)大的功能為Web應(yīng)用的構(gòu)建減輕了負(fù)擔(dān)。Spring是一種輕量級(jí)的容器,Spring使系統(tǒng)各組件間達(dá)到松散耦合并且能和各種框架很好的兼容。Hibernate是一個(gè)開源的持久層框架技術(shù),全面減輕了維護(hù)數(shù)據(jù)的復(fù)雜度,使系統(tǒng)具有良好的性能和移植性。本文以港航系統(tǒng)中局辦公系統(tǒng)下的個(gè)人先進(jìn)申請(qǐng)為案例,采用基于UML的系
2、統(tǒng)分析方法,通過(guò)建立泳道圖、用例圖、類圖對(duì)其進(jìn)行了詳細(xì)的分析,并在此基礎(chǔ)上分別對(duì)Web表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)持久層進(jìn)行了詳細(xì)設(shè)計(jì)。針對(duì)項(xiàng)目特點(diǎn),整合WebWork、Spring、Hibernate三種框架技術(shù),提出了一個(gè)具有通用模式的J2EE架構(gòu):WebWork實(shí)現(xiàn)MVC模式完成Web表示層功能,其業(yè)務(wù)邏輯交由Spring來(lái)管理;Spring負(fù)責(zé)管理表現(xiàn)層控制器與數(shù)據(jù)訪問(wèn)對(duì)象間關(guān)系,完成業(yè)務(wù)邏輯層功能;Hibernate負(fù)責(zé)數(shù)據(jù)的持久化工作。三種架構(gòu)的應(yīng)用能夠有效地解決傳統(tǒng)Web應(yīng)用開發(fā)中存在的問(wèn)題,而且采用分層及模塊化設(shè)計(jì)使系統(tǒng)具有很高的可維護(hù)性、擴(kuò)展性、移植性和組件的復(fù)用性。關(guān)鍵詞:J2
3、EE,WebWork,Spring,HibernateABSTRACTAt 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 out for long tim
4、e 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. Differentiatin
5、g 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 maintaining data
6、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 author integrated wi
7、th 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 object through S
8、pring and make data persistence by Hibernate. The application of frameworks is not only resolve traditional issues in Web design but also enhance the systems maintainability, expansibility, compatibility and reusability through adopting delamination and modularization.KeyWord: J2EE, WebWork, Spring,
9、 Hibernate目 錄1 緒論11.1 問(wèn)題的提出11.2 研究現(xiàn)狀與意義11.3 研究?jī)?nèi)容22 J2EE平臺(tái)和MVC架構(gòu)的介紹32.1 J2EE架構(gòu)的介紹32.2 MVC模式介紹42.3 MVC與J2EE架構(gòu)之間的關(guān)系53 應(yīng)用架構(gòu)介紹63.1 Webwork框架63.2 Spring框架73.3 Hibernate架構(gòu)83.4 三種架構(gòu)整合的優(yōu)勢(shì)94 先進(jìn)個(gè)人申請(qǐng)分析與設(shè)計(jì)114.1 系統(tǒng)分析階段114.1.1港航信息系統(tǒng)實(shí)施背景及目標(biāo)114.1.2局辦管理系統(tǒng)需求分析114.1.3 先進(jìn)個(gè)人申請(qǐng)需求分析124.2 系統(tǒng)設(shè)計(jì)階段144.2.1 系統(tǒng)設(shè)計(jì)原則144.2.2軟件基本架構(gòu)的搭
10、建154.2.3 類圖設(shè)計(jì)174.2.4 數(shù)據(jù)庫(kù)設(shè)計(jì)18第五章 先進(jìn)個(gè)人申請(qǐng)與管理的系統(tǒng)實(shí)現(xiàn)205.1 開發(fā)軟件的介紹205.1.1 Eclipse 開發(fā)平臺(tái)205.1.2 Apache Tomcat應(yīng)用服務(wù)器215.1.3 Oracle 10g數(shù)據(jù)庫(kù)215.2 表示層的實(shí)現(xiàn)225.2.1 用戶界面設(shè)計(jì)225.2.2 WebWork的配置文件xwork.xml235.2.3 實(shí)現(xiàn)保存功能Action的介紹235.3 業(yè)務(wù)層的實(shí)現(xiàn)235.3.1 配置service.xml245.3.2 Service接口的實(shí)現(xiàn)245.4 持久層的實(shí)現(xiàn)255.4.1 域模型的建立255.4.2 映射文件的定義25
11、5.4.3 Dao的定義和接口實(shí)現(xiàn)265.5 成果演示266 總結(jié)與展望30參考文獻(xiàn)31基于J2EE多層架構(gòu)的web應(yīng)用研究1 緒論1.1 問(wèn)題的提出隨著互聯(lián)網(wǎng)技術(shù)突飛猛進(jìn)地發(fā)展,Web應(yīng)用系統(tǒng)在Internet上的應(yīng)用越來(lái)越廣泛。Web應(yīng)用系統(tǒng)不再僅僅是具有靜態(tài)信息發(fā)布的簡(jiǎn)單功能,而且被要求具有實(shí)時(shí)動(dòng)態(tài)處理交互和辦公的能力。由Sun公司推出的J2EE平臺(tái),不僅完全繼承了Java安全性好、可移植性強(qiáng)的優(yōu)點(diǎn),同時(shí)它是真正面向?qū)ο蟮木幊陶Z(yǔ)言,J2EE平臺(tái)的廣泛應(yīng)用使基于B/S的多層Web體系結(jié)構(gòu)逐漸發(fā)展成熟起來(lái),多層Web應(yīng)用的開發(fā)己成為主流。但是,在多層Web體系結(jié)構(gòu)的設(shè)計(jì)中,仍然存在程序可重用
12、程度低、維護(hù)工作繁瑣、擴(kuò)展能力較差等不足。同時(shí),多層Web應(yīng)用系統(tǒng)需要面對(duì)復(fù)雜的網(wǎng)絡(luò)環(huán)境、多樣化的用戶需求、靈活的業(yè)務(wù)模式、復(fù)雜的業(yè)務(wù)流程、眾多的組織機(jī)構(gòu)及層次和角色分工等問(wèn)題,在業(yè)務(wù)和技術(shù)上也是復(fù)雜多變的。因此,如何組織應(yīng)用程序以實(shí)現(xiàn)簡(jiǎn)單高效的程序編寫、升級(jí)、維護(hù)和擴(kuò)展,是當(dāng)前Internet技術(shù)發(fā)展的熱點(diǎn)之一,也是一個(gè)很值得探討的研究課題。傳統(tǒng)的模式是基于典型的客戶/服務(wù)器C/S(Client/Server)結(jié)構(gòu),即大家熟知的客戶機(jī)和服務(wù)器結(jié)構(gòu)。它是軟件系統(tǒng)體系結(jié)構(gòu),通過(guò)可以充分利用兩端硬件環(huán)境的優(yōu)勢(shì),將任務(wù)合理分配到Client端和Server端來(lái)實(shí)現(xiàn),降低了系統(tǒng)的通訊開銷。但C/S體系
13、結(jié)構(gòu)只在系統(tǒng)開發(fā)一級(jí)的層面上體現(xiàn)了開放性,在特定的應(yīng)用中無(wú)論是Client端還是Server端都需要特定的軟件支持。由于沒能提供用戶真正期望的開放環(huán)境,C/S結(jié)構(gòu)的軟件需要針對(duì)不同的操作系統(tǒng)系統(tǒng)開發(fā)不同版本的軟件。加之產(chǎn)品的更新?lián)Q代十分快,已經(jīng)很難適應(yīng)百臺(tái)電腦以上局域網(wǎng)用戶同時(shí)使用,而且代價(jià)高、效率低。因此,B/S(Brower/server)結(jié)構(gòu)即瀏覽器和服務(wù)器結(jié)構(gòu),很大程度上彌補(bǔ)了C/S結(jié)構(gòu)的缺陷,更為廣泛的被開發(fā)人員加以應(yīng)用。B/S結(jié)構(gòu)就是我們所說(shuō)的Web應(yīng)用。它是隨著Internet技術(shù)的興起,對(duì)C/S結(jié)構(gòu)的一種變化或者改進(jìn)的結(jié)構(gòu)。在這種結(jié)構(gòu)下,用戶工作界面是通過(guò)WWW瀏覽器來(lái)實(shí)現(xiàn),極
14、少部分事務(wù)邏輯在前端(Brower)實(shí)現(xiàn),但是主要事務(wù)邏輯在服務(wù)器端實(shí)現(xiàn),形成所謂三層結(jié)構(gòu)。這樣就大大簡(jiǎn)化了客戶端電腦載荷,減輕了系統(tǒng)維護(hù)與升級(jí)的成本和工作量,降低了用戶的總體成本。在JAVA這樣的跨平臺(tái)語(yǔ)言出現(xiàn)之后,B/S架構(gòu)的企業(yè)級(jí)軟件更充分的體現(xiàn)出方便、快捷、高效的優(yōu)勢(shì)。1.2 研究現(xiàn)狀與意義Web應(yīng)用的廣泛性推動(dòng)了軟件技術(shù)的發(fā)展,同樣軟件技術(shù)發(fā)展促進(jìn)Web應(yīng)用更加廣泛。今天的軟件,規(guī)模不斷擴(kuò)大,復(fù)雜度日漸升級(jí)、開發(fā)人員面臨的問(wèn)題越來(lái)越多、解決方案也百花齊放。如何設(shè)計(jì)應(yīng)用軟件使紛雜的應(yīng)用需求和多樣化的客觀環(huán)境能夠彼此盡量少的受到對(duì)方的干擾和牽制,以及我們?cè)?jīng)的成功案例能否再次使用?分層結(jié)
15、構(gòu)和組件復(fù)用給眾多開發(fā)人員提供了選擇。分層結(jié)構(gòu)讓系統(tǒng)的功能更加明確,減少了各層次之間的關(guān)聯(lián)和依賴,讓開發(fā)人員可以同步工作而不會(huì)受到其他人的影響。組件復(fù)用是在分層的基礎(chǔ)上,由于層間的耦合性低,獨(dú)立性強(qiáng),在成熟組件的基礎(chǔ)上開發(fā)極大的提高了軟件的開發(fā)效率、縮短了開發(fā)周期,使軟件產(chǎn)品的穩(wěn)定性、兼容性、擴(kuò)展性都得到了提高。因此,人們?cè)絹?lái)越意識(shí)到軟件重用技術(shù)的重要性,設(shè)計(jì)模式和框架技術(shù)應(yīng)運(yùn)而生。設(shè)計(jì)模式和框架技術(shù)在整個(gè)系統(tǒng)開發(fā)中發(fā)揮了重要的作用,但從更廣泛的角度說(shuō),它們只是在更小的顆粒度上發(fā)揮功用。如何組織各個(gè)層次、如何合理選擇使用模式和框架技術(shù)又將開發(fā)人員的關(guān)注點(diǎn)提高到整個(gè)系統(tǒng)層面上來(lái)。架構(gòu)技術(shù)為這一問(wèn)
16、題提供了解決方案。架構(gòu)是軟件系統(tǒng)從整體到部分的最高層次的劃分,一般由多個(gè)不同領(lǐng)域的框架組成。一個(gè)成功的軟件需要有一個(gè)成功的架構(gòu),它將各個(gè)框架技術(shù)有機(jī)的組織起來(lái),相互關(guān)聯(lián)但又不失其獨(dú)立性。軟件架構(gòu)的建立是一個(gè)復(fù)雜而又持續(xù)改進(jìn)的過(guò)程,開發(fā)人員不可能對(duì)每個(gè)項(xiàng)目做不同的架構(gòu),而總是盡量重用以前的架構(gòu),或開發(fā)出盡量通用的架構(gòu)方案。如何在眾多的框架中選擇建立適合企業(yè)應(yīng)用的架構(gòu),并且怎樣讓各個(gè)應(yīng)用層無(wú)縫連接?如何整合框架以便讓各個(gè)層以一種松散耦合的方式彼此作用而不用管底層的技術(shù)細(xì)節(jié)?這給軟件人員提出了挑戰(zhàn)。1.3 研究?jī)?nèi)容現(xiàn)在各種框架數(shù)目繁多,每一種框架都有其特定的應(yīng)用范圍,沒有一種框架能夠很好的解決web
17、應(yīng)用中的所有問(wèn)題。因此如何根據(jù)所要開發(fā)的系統(tǒng)選擇合適的框架組合起來(lái),并且使系統(tǒng)中的各個(gè)層次以一種松散藕合的方式彼此作用而不用管理底層的技術(shù)實(shí)現(xiàn)細(xì)節(jié),成為我們面臨的主要問(wèn)題。為了解決以上問(wèn)題,本課題主要對(duì)以下內(nèi)容展開研究:J2EE平臺(tái)框架和MVC模式的介紹;在對(duì)WebWork,Spring和Hibernate等架構(gòu)進(jìn)行深入分析的基礎(chǔ)上,提出了集成WebWork,Spring和Hibernate的架構(gòu)設(shè)計(jì)方案,為Web應(yīng)用實(shí)現(xiàn)提供選擇性參考;以港航系統(tǒng)中局辦公系統(tǒng)下的個(gè)人先進(jìn)申請(qǐng)為案例,采用基于UML的系統(tǒng)分析方法,通過(guò)建立泳道圖、用例圖、類圖對(duì)其進(jìn)行了詳細(xì)的分析,并在此基礎(chǔ)上分別對(duì)Web表示層、
18、業(yè)務(wù)邏輯層、數(shù)據(jù)持久層進(jìn)行了詳細(xì)設(shè)計(jì),提煉出了系統(tǒng)的結(jié)構(gòu)模型以及各模型之間的關(guān)系,確定整個(gè)系統(tǒng)采用WebWork,Spring和Hibernate體系結(jié)構(gòu)進(jìn)行分層及模塊化設(shè)計(jì),并利用Eclipse,tomcat5.0和Oracle 10g數(shù)據(jù)庫(kù)等技術(shù),實(shí)現(xiàn)先進(jìn)個(gè)人申請(qǐng)和管理的簡(jiǎn)單程序,從而體現(xiàn)出多層架構(gòu)開發(fā)的優(yōu)越性。2 J2EE平臺(tái)和MVC架構(gòu)的介紹2.1 J2EE架構(gòu)的介紹J2EE(Java 2 Platform Enterprise Edition,簡(jiǎn)稱J2EE)是Java2平臺(tái)的企業(yè)版,適用于企業(yè)級(jí)體系結(jié)構(gòu)的開發(fā)、部署和管理等,為開發(fā)多層次分布式、針對(duì)服務(wù)器的應(yīng)用系統(tǒng)提供了統(tǒng)一的技術(shù)平臺(tái)
19、。J2EE平臺(tái)己經(jīng)成為使用最廣泛的web應(yīng)用程序設(shè)計(jì)技術(shù),主要支持兩類軟件的開發(fā)和應(yīng)用:做高級(jí)信息系統(tǒng)的Web應(yīng)用服務(wù)器;Web應(yīng)用服務(wù)器上運(yùn)行的Web應(yīng)用程序。J2EE體系結(jié)構(gòu)擴(kuò)展了標(biāo)準(zhǔn)的兩層結(jié)構(gòu),提供中間層來(lái)滿足經(jīng)濟(jì)、高可用性、高可靠性、可擴(kuò)展性的需求。這種結(jié)構(gòu)簡(jiǎn)化了客戶端,主要程序都運(yùn)行在能保證正常運(yùn)行的服務(wù)器端,系統(tǒng)更加安全可靠,也更容易擴(kuò)充和移植。在J2EE的應(yīng)用中,軟件體系架構(gòu)模式(如層模式、MVC模式、多層分布模式等)和設(shè)計(jì)模式(如截取過(guò)濾器、視圖幫助器、前端控制器、值對(duì)象等)得到廣泛使用。通過(guò)提供統(tǒng)一開發(fā)平臺(tái),J2EE降低了開發(fā)多層應(yīng)用的費(fèi)用和復(fù)雜性,同時(shí)提供對(duì)現(xiàn)有應(yīng)用程序集成
20、強(qiáng)有力支持,完全支持Enterprise JavaBeans,有良好的向?qū)еС执虬筒渴饝?yīng)用,添加目錄支持,增強(qiáng)了安全機(jī)制,提高了性能,是傳統(tǒng)的互聯(lián)網(wǎng)應(yīng)用程序模型無(wú)法比擬的。J2EE是多層的分布式應(yīng)用模型,應(yīng)用邏輯按功能劃分為組件,各個(gè)應(yīng)用組件根據(jù)他們所在的層分布在不同的機(jī)器上(也可以放在同一臺(tái)機(jī)器上)。它可以解決兩層模式(Client/Server)的弊端,在傳統(tǒng)模式中,客戶端擔(dān)當(dāng)了過(guò)多的角色而顯得臃腫,在這種模式中,第一次部署的時(shí)候比較容易,但難于升級(jí)或改進(jìn),可伸展性也不理想,而且經(jīng)?;谀撤N專有的協(xié)議(通常是某種數(shù)據(jù)庫(kù)協(xié)議)。它使得重用業(yè)務(wù)邏輯和界面邏輯非常困難?,F(xiàn)在J2EE的多層企業(yè)級(jí)
21、應(yīng)用模型將兩層化模型中的不同層面切分成許多層。一個(gè)多層化應(yīng)用能夠?yàn)椴煌拿糠N服務(wù)提供一個(gè)獨(dú)立的層,圖2.1是J2EE典型的四層結(jié)構(gòu): 圖2.1 J2EE的層次結(jié)構(gòu)客戶層客戶層是用來(lái)實(shí)現(xiàn)企業(yè)級(jí)應(yīng)用系統(tǒng)的操作界面和顯示層,并且某些客戶端程序也可通過(guò)它實(shí)現(xiàn)業(yè)務(wù)邏輯??煞譃榛赪eb和非基于Web的客戶端兩種情況?;赪eb的情況下主要作為企業(yè)Web服務(wù)器的瀏覽器,非基于Web的客戶層則是獨(dú)立的應(yīng)用程序,可以完成瘦客戶機(jī)無(wú)法完成的任務(wù)。Web層J2EE的Web層組件可以是JSP頁(yè)面或Servlets。按照J(rèn)2EE規(guī)范靜態(tài)的HTML頁(yè)面和Applets不算是Web層組件。Web層可能包含某些JavaBe
22、ans對(duì)象來(lái)處理用戶輸入,并把輸入發(fā)送給運(yùn)行在業(yè)務(wù)層上的Enterprise Bean來(lái)進(jìn)行處理。業(yè)務(wù)層邏輯層業(yè)務(wù)邏輯層也叫EJB層,它由EJB服務(wù)器和EJB組件組成。一般情況下許多開發(fā)商把Web服務(wù)器和EJB服務(wù)器結(jié)合在一起發(fā)布稱為應(yīng)用服務(wù)器。EJB層用來(lái)實(shí)現(xiàn)企業(yè)級(jí)信息系統(tǒng)的業(yè)務(wù)邏輯,是企業(yè)級(jí)應(yīng)用的核心,由運(yùn)行在業(yè)務(wù)層中的EJB來(lái)處理,業(yè)務(wù)層中的EJB要運(yùn)行在容器中。一個(gè)Bean從客戶端接收數(shù)據(jù),處理后把數(shù)據(jù)送到企業(yè)信息系統(tǒng)層存儲(chǔ)起來(lái)。同樣,一個(gè)Bean也可以從企業(yè)信息系統(tǒng)取出數(shù)據(jù),發(fā)送到客戶端程序。EIS(Enterprise Information System企業(yè)信息系統(tǒng))層企業(yè)信息系
23、統(tǒng)層處理企業(yè)信息系統(tǒng)軟件,包括企業(yè)基礎(chǔ)建設(shè)系統(tǒng),企業(yè)資源計(jì)劃(ERP)、大型機(jī)事務(wù)處理、數(shù)據(jù)庫(kù)系統(tǒng)和其它的遺留信息系統(tǒng)。例如J2EE應(yīng)用組件可能為了數(shù)據(jù)庫(kù)連接需要訪問(wèn)企業(yè)信息系統(tǒng)。12.2 MVC模式介紹MVC(Model-View-Controller)模式是現(xiàn)在世界上非常流行的一種設(shè)計(jì)模式。MVC包括三類對(duì)象,Model是應(yīng)用對(duì)象,View是它在屏幕上的表示,Controller定義用戶界面對(duì)用戶輸入的響應(yīng)方式。MVC模式是一種高層次上的架構(gòu)模式,主要是由合成模式、策略模式、觀察者模式和工廠方法模式組成。MVC設(shè)計(jì)模式是設(shè)計(jì)模式中很重要的一種。Model模型,即相關(guān)的數(shù)據(jù),是對(duì)象的內(nèi)在屬性
24、,它提供業(yè)務(wù)邏輯;視圖是模型的外在表現(xiàn)形式,是模型在屏幕上的顯示,1個(gè)模型可以對(duì)應(yīng)1個(gè)或多個(gè)視圖,視圖還具有與外界交互的功能;控制器是模型與視圖的聯(lián)系紐帶,用于管理用戶與視圖發(fā)生的交互,控制器提取通過(guò)視圖傳輸進(jìn)來(lái)的外部信息并轉(zhuǎn)化成相應(yīng)事件,然后由對(duì)應(yīng)的控制器對(duì)模型進(jìn)行更新,相應(yīng)的模型的更新與修改將通過(guò)控制器通知視圖,保持視圖與模型的一致性。2MVC模式從概念上定義了基于Web應(yīng)用的框架技術(shù),同時(shí)支持MVC模式的框架技術(shù)也是種類繁多,目前比較主流的有Struts,Webwork,SpringMVC,JSF等。對(duì)于各種框架技術(shù),不存在絕對(duì)的好與不好,而是各有所長(zhǎng),針對(duì)不同的應(yīng)用需求選擇合適的框架技
25、術(shù)才是上策。以webwork架構(gòu)為例,WebWork的優(yōu)點(diǎn)是:結(jié)構(gòu)簡(jiǎn)單易于擴(kuò)展、標(biāo)簽庫(kù)易于定制、攔截器非常出色,支持廣泛的模板語(yǔ)言(Velociy和FreeMarker),完整的tag支持,模塊寫好后容易插入,一個(gè)jar包就可以包括所有的action和view(得益于ftl的classpath支持),和其他工具兼容性好。但其只要的缺點(diǎn)是文檔示例較少、具有較多的配置。2.3 MVC與J2EE架構(gòu)之間的關(guān)系理解MVC三個(gè)部分在J2EE架構(gòu)中處于什么位置,有助于我們理解MVC模式的實(shí)現(xiàn)。前面提到并提供了一個(gè)J2EE體系層次結(jié)構(gòu)圖,MVC與J2EE架構(gòu)間對(duì)應(yīng)關(guān)系是:(1)View處于Web層或者說(shuō)是客
26、戶端層,通常是JSP/Servlets。(2)Controller也處于Web層,通常用Servlets實(shí)現(xiàn)。(3)Model處于業(yè)務(wù)邏輯層,通常用服務(wù)器端JavaBean或者EJB實(shí)現(xiàn)。3 應(yīng)用架構(gòu)介紹3.1 Webwork框架正如前文所提到的,在MVC模式的實(shí)現(xiàn)技術(shù)中,Struts是一種流行的Web框架,擁有大量的用戶群體,但在構(gòu)建大規(guī)模Web應(yīng)用的時(shí)候,它并不能提供通常所需的創(chuàng)造力發(fā)揮空間。WebWork的創(chuàng)造者和JBoss的創(chuàng)始人之一的Rickard Oberg曾經(jīng)說(shuō):“框架的強(qiáng)大之處不是源自于它能讓你做什么,而是它不能讓你做什么”。Rickard所說(shuō)的話解釋了什么是框架:框架使混亂的
27、東西變得結(jié)構(gòu)化。然而,從另一個(gè)角度說(shuō),限制嚴(yán)格的架構(gòu)束縛了開發(fā)人員的手腳,開發(fā)人員的創(chuàng)造力空間收縮了,甚至有些任務(wù)無(wú)法完成。很明顯,一種完美的中間狀態(tài)存在于無(wú)框架和嚴(yán)格框架之間,這種夢(mèng)寐以求的中間狀態(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兩個(gè)項(xiàng)目,如圖3.1所示:圖3.1 WebWork功能結(jié)構(gòu)圖Xwork簡(jiǎn)潔、靈活功能強(qiáng)大,它是一個(gè)
28、標(biāo)準(zhǔn)的Command模式實(shí)現(xiàn),并且完全從web層脫離出來(lái)。Xwork提供了很多核心功能:前端攔截機(jī)、運(yùn)行時(shí)表單屬性驗(yàn)證、類型轉(zhuǎn)換、強(qiáng)大的表達(dá)式語(yǔ)言(OGNLthe Object Graph Notation Language)、IoC(Inversion of Control反轉(zhuǎn)控制)容器等。WebWork2建立在Xwork之上,處理HTTP的響應(yīng)和請(qǐng)求。WebWork2使用Filter Dispatcher(過(guò)濾器),將HTTP請(qǐng)求變成Action(業(yè)務(wù)層Action類)、session(會(huì)話)、application(應(yīng)用程序)、request請(qǐng)求范圍的參數(shù)映射。WebWork2支持多視圖
29、表示,視圖部分可以使用JSP, Velocity, FreeMarker,XML等。3WebWork主要包含了下面幾個(gè)部分:(1)Action(動(dòng)作)一般一個(gè)Action代表一次請(qǐng)求或調(diào)用。在WebWork中,一般Action類需要實(shí)現(xiàn)Action接口,或者直接繼承基礎(chǔ)類ActionSupport。這是它要實(shí)現(xiàn)默認(rèn)的execute方法,并返回一個(gè)在配置文件中定義的Result(也就是一個(gè)自定義的字符串而已)。當(dāng)然,Action也可以只是一個(gè)Pojo(Plain Object Java Object),不用繼承任何類也不用實(shí)現(xiàn)任何接口。Action是一次請(qǐng)求的控制器,同時(shí)也充當(dāng)數(shù)據(jù)模型的角色。W
30、ebWork的關(guān)鍵特性之一是:它并不會(huì)要求你使用特定的類來(lái)支持Web頁(yè)面上的表單字段。相反,這些屬性會(huì)出現(xiàn)在Action中,并且可以包含擁有復(fù)雜對(duì)象的子屬性。這是相當(dāng)有價(jià)值的,因?yàn)椴辉傩枰帉慒ormBean類這種更加形式化的代碼了。總之,Action(負(fù)責(zé)處理表單數(shù)據(jù))和FormBean(負(fù)責(zé)保存表單數(shù)據(jù))綁定如此緊密,合并它們是相當(dāng)有意義的。(2)通過(guò)ActionContext訪問(wèn)數(shù)據(jù)ActionContext是Action執(zhí)行時(shí)的上下文,本質(zhì)上是ThreadLocal Map,它存放的是Action在執(zhí)行時(shí)需要用到的對(duì)象,如:在使用WebWork時(shí),上下文存有請(qǐng)求的參數(shù)、會(huì)話、Servl
31、et上下文、本地化信息等。在Web應(yīng)用程序開發(fā)中,除了將請(qǐng)求參數(shù)自動(dòng)設(shè)置到Action的字段中,往往也需要在Action里直接獲取請(qǐng)求Request或會(huì)話(session)的一些信息,甚至需要直接對(duì)JavaSevrlet Http的請(qǐng)求(HttpSevrlet Request)、響應(yīng)(HttpSevrlet Response)操作。當(dāng)有這方面的需要時(shí),可以通過(guò)使用ActionContext來(lái)操作這些對(duì)象, (3)InterceptorInterceptor(攔截器)將Action共用的行為獨(dú)立出來(lái),在Action執(zhí)行前后運(yùn)行。Interceptor將很多功能從Action中獨(dú)立出來(lái),大量減少了
32、Action的代碼,獨(dú)立出來(lái)的行為具有很好的重用性。WebWork的許多功能都是有Interceptor實(shí)現(xiàn),可以在配置文件中組裝Action用到的Interceptor,它會(huì)按照指定的順序,在Action執(zhí)行前后運(yùn)行。WebWork框架的很多功能都是以攔截器的形式提供出來(lái)。例如:參數(shù)組裝,驗(yàn)證,國(guó)際化,文件上傳等等。(4)驗(yàn)證框架WebWork提供了在Action執(zhí)行之前,對(duì)輸入數(shù)據(jù)的驗(yàn)證功能,它使用了其核心XWork的驗(yàn)證框架。提供了如下功能:可配置的驗(yàn)證文件。它的驗(yàn)證文件是一個(gè)獨(dú)立的XML配置文件,對(duì)驗(yàn)證的添加、修改只需更改配置文件,無(wú)需編譯任何的Class;驗(yàn)證文件和被驗(yàn)證的對(duì)象完全解
33、耦;多種不同的驗(yàn)證方式,強(qiáng)大的表達(dá)式驗(yàn)證;同時(shí)支持服務(wù)器端和客戶端驗(yàn)證。當(dāng)然,Webwork還包含像FilterDispatcher(過(guò)濾器)、表達(dá)式語(yǔ)言EL和OGNL、Result Type(返回類型)等主要內(nèi)容,他們共同構(gòu)成了Webwork強(qiáng)大的功能。3.2 Spring框架Spring是一種多層的J2EE應(yīng)用程序框架,它是以Rod Johnson編著的Expert One-on-One J2EE Design and Development一書的代碼為基礎(chǔ)發(fā)展而來(lái)。Spring追求的就是一種輕量級(jí)的目標(biāo),旨在簡(jiǎn)化J2EE的開發(fā),降低J2EE項(xiàng)目的實(shí)施的難度Spring框架是一個(gè)松耦合的框
34、架,其耦合度被設(shè)計(jì)為最小,在各個(gè)層次上具體選用那個(gè)框架取決于實(shí)際項(xiàng)目的需要和開發(fā)者的意愿。4簡(jiǎn)單來(lái)說(shuō),Spring是一個(gè)輕量級(jí)的控制反轉(zhuǎn)(IoC)和面向切面(AOP)的容器框架。輕量從大小與開銷兩方面而言Spring都是輕量的。完整的Spring框架可以在一個(gè)大小只有1MB多的JAR文件里發(fā)布。并且Spring所需的處理開銷也是微不足道的。此外,Spring是非侵入式的:典型地,Spring應(yīng)用中的對(duì)象不依賴于Spring的特定類??刂品崔D(zhuǎn)Spring通過(guò)一種稱作控制反轉(zhuǎn)(IoC)的技術(shù)促進(jìn)了松耦合。當(dāng)應(yīng)用了IoC,一個(gè)對(duì)象依賴的其它對(duì)象會(huì)通過(guò)被動(dòng)的方式傳遞進(jìn)來(lái),而不是這個(gè)對(duì)象自己創(chuàng)建或者查找
35、依賴對(duì)象。你可以認(rèn)為IoC與JNDI相反,不是對(duì)象從容器中查找依賴,而是容器在對(duì)象初始化時(shí)不等對(duì)象請(qǐng)求就主動(dòng)將依賴傳遞給它。面向切面Spring提供了面向切面編程的豐富支持,允許通過(guò)分離應(yīng)用的業(yè)務(wù)邏輯與系統(tǒng)級(jí)服務(wù)(例如審計(jì)(auditing)和事務(wù)管理)進(jìn)行內(nèi)聚性的開發(fā)。應(yīng)用對(duì)象只實(shí)現(xiàn)它們應(yīng)該做的完成業(yè)務(wù)邏輯僅此而已。它們并不負(fù)責(zé)(甚至是意識(shí))其它的系統(tǒng)級(jí)關(guān)注點(diǎn),例如日志或事務(wù)支持。容器Spring包含并管理應(yīng)用對(duì)象的配置和生命周期,在這個(gè)意義上它是一種容器,你可以配置你的每個(gè)bean如何被創(chuàng)建基于一個(gè)可配置原型(prototype),你的bean可以創(chuàng)建一個(gè)單獨(dú)的實(shí)例或者每次需要時(shí)都生成一個(gè)
36、新的實(shí)例以及它們是如何相互關(guān)聯(lián)的。然而,Spring不應(yīng)該被混同于傳統(tǒng)的重量級(jí)的EJB容器,它們經(jīng)常是龐大與笨重的,難以使用??蚣躍pring可以將簡(jiǎn)單的組件配置、組合成為復(fù)雜的應(yīng)用。在Spring中,應(yīng)用對(duì)象被聲明式地組合,典型地是在一個(gè)XML文件里。Spring也提供了很多基礎(chǔ)功能(事務(wù)管理、持久化框架集成等等),將應(yīng)用邏輯的開發(fā)留給了你。所有Spring的這些特征使你能夠編寫更干凈、更可管理、并且更易于測(cè)試的代碼。它們也為Spring中的各種模塊提供了基礎(chǔ)支持。133.3 Hibernate架構(gòu)Hibernate是一個(gè)面向Java環(huán)境的對(duì)象/關(guān)系數(shù)據(jù)庫(kù)映射工具,它的目標(biāo)是成為Java中管
37、理持續(xù)性數(shù)據(jù)問(wèn)題的一種完整的解決方案。它協(xié)調(diào)應(yīng)用與關(guān)系數(shù)據(jù)庫(kù)的交互,讓開發(fā)者解放出來(lái)專注于手中的業(yè)務(wù)問(wèn)題。Hibernate是一種非強(qiáng)迫性的解決方案,我們可以利用Hibernate提供的查詢和獲取數(shù)據(jù)的方法,當(dāng)然也可以使用傳統(tǒng)的JDBC來(lái)實(shí)現(xiàn)數(shù)據(jù)庫(kù)的操作。Hibernate 不僅僅管理Java 類到數(shù)據(jù)庫(kù)表的映射,還提供數(shù)據(jù)查詢和獲取數(shù)據(jù)的方法,可以大幅度減少開發(fā)時(shí)人工使用SQL 和JDBC 處理數(shù)據(jù)的時(shí)間。Hibernate 的目標(biāo)是對(duì)于開發(fā)者通常的數(shù)據(jù)持久化相關(guān)的編程任務(wù),解放其中的95%。同時(shí),它是一個(gè)開放源代碼的對(duì)象關(guān)系映射框架,它對(duì)JDBC進(jìn)行了非常輕量級(jí)的對(duì)象封裝,使得Java程序
38、員可以隨心所欲的使用對(duì)象編程思維來(lái)操縱數(shù)據(jù)庫(kù)。 Hibernate可以應(yīng)用在任何使用JDBC的場(chǎng)合,既可以在Java的客戶端程序?qū)嵱茫部梢栽赟ervlet/JSP的Web應(yīng)用中使用,最具革命意義的是,Hibernate可以在應(yīng)用EJB的J2EE架構(gòu)中取代CMP,完成數(shù)據(jù)持久化的重任。53.4 三種架構(gòu)整合的優(yōu)勢(shì)以上對(duì)WebWork、Spring和Hibernate三種框架技術(shù),進(jìn)行了詳細(xì)的討論,從中可以看出,對(duì)于各個(gè)框架技術(shù)就個(gè)體而言不存在優(yōu)與劣,而只是應(yīng)用領(lǐng)域不同而已。而和其他技術(shù)整合使用時(shí),所表現(xiàn)出來(lái)的差異則大不相同。如何針對(duì)某一具體領(lǐng)域,選擇合適的框架技術(shù)來(lái)相互彌補(bǔ)應(yīng)用中的不足,則是很
39、值得討論的。開發(fā)過(guò)程中,三種框架技術(shù)的集成非常方便,作為開源框架中的佼佼者,三種技術(shù)顧及到了和其他框架的接口,而且開發(fā)者對(duì)于具體的應(yīng)用需求,可以修改源代碼,定制客戶化服務(wù)。在項(xiàng)目實(shí)現(xiàn)中通過(guò)對(duì)以上三種框架的集成,使不同框架的局限性達(dá)到最小,而且充分利用了每個(gè)框架的優(yōu)勢(shì),達(dá)到了良好的效果。Webwork+Spring+Hibernate架構(gòu)具有以下特點(diǎn):(1)合理的設(shè)計(jì)思想。WebWork是基于MVC的框架,它很好地把業(yè)務(wù)邏輯和表示層分離。由于WebWork在對(duì)象持久化和業(yè)務(wù)對(duì)象管理方面尚存在一定的不足,基于WebWork的良好兼容性,采用Spring和Hibernate框架予以補(bǔ)充。Spring
40、是一種輕量級(jí)容器,利用依賴注入方式實(shí)現(xiàn)對(duì)象的初始化,使得開發(fā)人員減輕了初始化對(duì)象的負(fù)擔(dān);同時(shí)利用AOP機(jī)制進(jìn)行事務(wù)管理,全面降低了構(gòu)建企業(yè)應(yīng)用的復(fù)雜度。Hibernate是一個(gè)輕量級(jí)的對(duì)象持久化工具,它能很好地將實(shí)體對(duì)象與數(shù)據(jù)庫(kù)表的記錄相對(duì)應(yīng),而且通過(guò)統(tǒng)一接口屏蔽具體數(shù)據(jù)庫(kù)的差異。(2)快速協(xié)作開發(fā)。本架構(gòu)使用分層技術(shù)實(shí)現(xiàn),分為表現(xiàn)層,業(yè)務(wù)層,持久層和領(lǐng)域模型層。各層次之間的關(guān)系通過(guò)三種框架解耦與層之間邊界清晰、功能盡量獨(dú)立,對(duì)于同一層次的不同的業(yè)務(wù)邏輯基于模塊劃分,使得整個(gè)系統(tǒng)既可以橫向分工,也能縱向分工,能充分發(fā)揮團(tuán)隊(duì)化協(xié)作能力,使開發(fā)人員充分發(fā)揮各自的特長(zhǎng)。(3)良好的兼容性。本架構(gòu)所使
41、用的三種框架技術(shù)都是開源技術(shù),它們?nèi)咧g以及和其它框架之間能夠很好的兼容。WebWork的表現(xiàn)層除了使用jsp之外還可以使用Freemarker, Velocity等模板技術(shù)作為表現(xiàn)技術(shù)。Spring作為輕量級(jí)管理容器,可以和Acegi安全框架無(wú)縫兼容,滿足了在安全控制方面的不足;同時(shí)它和Hibernate框架的兼容,使對(duì)象的持久化操作更加便捷。(4)重用和模板化設(shè)計(jì)。WSH框架技術(shù)是基于模塊化設(shè)計(jì)的。相互分離的各層之間互不影響,某一層的改動(dòng)不會(huì)影響另一層,這樣為業(yè)務(wù)邏輯的重用提供了可能。在設(shè)計(jì)中抽象出功能相同的部分作為通用模塊使用,充分利用己有的工具集加速開發(fā)進(jìn)度。(5)高效的性能和開發(fā)效
42、率。Spring使開發(fā)人員直接使用類對(duì)象,而不用考慮具體的生成方式,集中精力關(guān)注于業(yè)務(wù)對(duì)象的處理。Hibernate技術(shù)規(guī)范對(duì)底層數(shù)據(jù)庫(kù)操作進(jìn)行了大量的優(yōu)化,提高了系統(tǒng)性能,其O/R設(shè)計(jì),使開發(fā)人員可以隨心所欲的使用面向?qū)ο缶幊趟枷雭?lái)操縱數(shù)據(jù)庫(kù),無(wú)須關(guān)心對(duì)象本身及其關(guān)系如何在數(shù)據(jù)庫(kù)中存儲(chǔ)。相對(duì)于使用JDBC和SQL語(yǔ)句來(lái)手工操作數(shù)據(jù)庫(kù),大大減少了開發(fā)數(shù)據(jù)庫(kù)的工作量。(6)可擴(kuò)展性和移植性。WSH架構(gòu)是基于J2EE平臺(tái)的,Java的天性就是平臺(tái)無(wú)關(guān)性。Hibernate作為持久化框架向上屏蔽了不同數(shù)據(jù)庫(kù)間的差異,可以很容易移植到不同的數(shù)據(jù)庫(kù)。Spring的Bean對(duì)象通過(guò)配置文件使得開發(fā)人員可以
43、不用書寫任何代碼,不經(jīng)改動(dòng)的情況下,就可以移植到另一個(gè)IoC容器。架構(gòu)各層次之間是獨(dú)立的,通過(guò)接口進(jìn)行交互,對(duì)于系統(tǒng)擴(kuò)展而言,只要實(shí)現(xiàn)同一接口,可以方便的對(duì)系統(tǒng)功能進(jìn)行擴(kuò)充和維護(hù)。64 先進(jìn)個(gè)人申請(qǐng)分析與設(shè)計(jì)信息系統(tǒng)分析是在總體規(guī)劃的指導(dǎo)下,對(duì)某個(gè)或若干個(gè)子系統(tǒng)進(jìn)行仔細(xì)、深入地調(diào)查研究,確定新系統(tǒng)邏輯結(jié)構(gòu)的過(guò)程。信息系統(tǒng)分析與總體規(guī)劃相比這個(gè)階段所作的工作是更詳細(xì)更細(xì)致的工作。在系統(tǒng)分析階段,分析設(shè)計(jì)人員要詳細(xì)了解每一個(gè)業(yè)務(wù)過(guò)程和業(yè)務(wù)活動(dòng)的工作流程及信息處理流程,理解用戶對(duì)信息系統(tǒng)的需求,然后運(yùn)用各種信息系統(tǒng)開發(fā)理論、開發(fā)方法和開發(fā)技術(shù)確定系統(tǒng)應(yīng)該具有的邏輯功能,再用適當(dāng)?shù)姆椒ū磉_(dá)出來(lái),形成系
44、統(tǒng)的邏輯方案。信息系統(tǒng)分析的工作步驟:第一、對(duì)現(xiàn)行系統(tǒng)進(jìn)行詳細(xì)的業(yè)務(wù)調(diào)查分析了解各項(xiàng)需求;第二、進(jìn)行數(shù)據(jù)分析,建立數(shù)據(jù)庫(kù)邏輯模型;第三、進(jìn)行功能分析,確定新系統(tǒng)邏輯結(jié)構(gòu)。7在Web應(yīng)用系統(tǒng)架構(gòu)分析的基礎(chǔ)上,本章以項(xiàng)目實(shí)例“港航局辦公室系統(tǒng)3期的精神文明建設(shè)”為背景,詳細(xì)闡述了系統(tǒng)分析階段的各個(gè)步驟,并結(jié)合Webwork+Spring+Hibernate架構(gòu)的特點(diǎn),進(jìn)行分析設(shè)計(jì)工作。4.1 系統(tǒng)分析階段4.1.1港航信息系統(tǒng)實(shí)施背景及目標(biāo)目前,港航部門面臨著管理范圍廣、難度大、成本高、效果小的現(xiàn)狀,原有的思路、模式和管理方法無(wú)法有效地面對(duì)“工作點(diǎn)多、面廣、人少”的發(fā)展?fàn)顩r,必須積極探索新的管理模
45、式以應(yīng)對(duì)時(shí)代發(fā)展的要求。打造以辦公網(wǎng)絡(luò)化、管理科學(xué)化、監(jiān)管信息化、服務(wù)自動(dòng)化、決策智能化為特征的數(shù)字港航,全面推進(jìn)港航管理系統(tǒng)“依法行政、高效管理、便民利民、安全保障、公正廉潔”等效能建設(shè)要求,實(shí)現(xiàn)以信息化手段管人、管事。港航信息化建設(shè)要想發(fā)揮其整體效益,必須對(duì)業(yè)務(wù)系統(tǒng)進(jìn)行徹底整合,以提高信息資源的高度共享和各個(gè)應(yīng)用系統(tǒng)的整體協(xié)同能力,資源整合,優(yōu)勢(shì)互補(bǔ),形成一個(gè)結(jié)構(gòu)完整、技術(shù)先進(jìn)的信息網(wǎng)絡(luò)。從確定信息網(wǎng)的框架到方案論證和組織實(shí)施等各個(gè)環(huán)節(jié),都需要各級(jí)部門發(fā)揮作用,確保信息網(wǎng)工程有序地進(jìn)行。通過(guò)充分開發(fā)利用通信網(wǎng)絡(luò)資源、信息技術(shù)和信息資源,整合分散的資源,較好地發(fā)揮出應(yīng)有的效能,并最終達(dá)到整體
46、協(xié)同。局辦管理系統(tǒng)是港航開發(fā)中七大系統(tǒng)之一,其主要功能包括港航部門基本信息和日常事務(wù)的管理。其開發(fā)的價(jià)值在于,可以大大提高辦公室管理者日常辦公效率,促進(jìn)整個(gè)港航部門信息化的發(fā)展,同時(shí)可以節(jié)省資源,為整個(gè)系統(tǒng)的建設(shè)提供有力保障。4.1.2局辦管理系統(tǒng)需求分析局辦公室主要業(yè)務(wù)包括:(1)政務(wù)管理,由日程管理、規(guī)章制度、綜合信息、組織及人員結(jié)構(gòu)、電話號(hào)碼管理、老干部管理組成;(2)行政管理:由固定資產(chǎn)管理、車輛管理組成;(3)執(zhí)法隊(duì)伍建設(shè);(4)會(huì)議管理;(5)電子公告;(6)港航信息;(7)精神文明建設(shè)。其中精神文明建設(shè)包括:先進(jìn)個(gè)人申請(qǐng)管理和先進(jìn)集體申請(qǐng)管理。局辦管理系統(tǒng)的整體結(jié)構(gòu)如圖4.1所示
47、:圖4.1 局辦管理系統(tǒng)整體結(jié)構(gòu)圖先進(jìn)個(gè)人申請(qǐng)管理隸屬于港航局辦公系統(tǒng)下的精神文明建設(shè)模塊,同時(shí)與先進(jìn)集體申請(qǐng)管理具有相類似的流程與功能,下面僅以先進(jìn)個(gè)人申請(qǐng)管理為例,進(jìn)行業(yè)務(wù)描述與需求提取。4.1.3 先進(jìn)個(gè)人申請(qǐng)需求分析(1)業(yè)務(wù)需求根據(jù)用戶的描述以及實(shí)際調(diào)查,可以確定先進(jìn)個(gè)人申請(qǐng)子系統(tǒng)的業(yè)務(wù)需求為以下幾點(diǎn):l 進(jìn)行網(wǎng)上先進(jìn)個(gè)人申請(qǐng)錄入;l 推薦單位和市級(jí)部門對(duì)先進(jìn)個(gè)人申請(qǐng)的的審核;l 進(jìn)行先進(jìn)個(gè)人申請(qǐng)的管理,包括查詢,刪除,修改,查看詳情和打印功能;l 不同等級(jí)的用戶擁有不同的查詢和使用權(quán)限,保證不同辦事機(jī)構(gòu)在自身權(quán)限內(nèi)獲得有用的業(yè)務(wù)處理信息,保證信息的安全性。(2)用戶及權(quán)限的劃分根據(jù)
48、與用戶的溝通和實(shí)地考查,將用戶分為:地方管理用戶、市級(jí)推薦單位用戶、省級(jí)管理用戶等若干等級(jí),其權(quán)限與相關(guān)的職責(zé)如下:l 地方管理用戶:主要是辦公室系統(tǒng)的一般使用用戶,他們只負(fù)責(zé)先進(jìn)申請(qǐng)相關(guān)業(yè)務(wù)的錄入功能,同時(shí)具備對(duì)先進(jìn)個(gè)人申請(qǐng)的檢索查看等功能;l 市級(jí)推薦單位用戶:主要是地方辦公室系統(tǒng)的主管部門用戶,他們負(fù)責(zé)對(duì)上報(bào)的申請(qǐng)進(jìn)行匯總與初審。l 省級(jí)管理用戶:是主管部門最高級(jí)別用戶,他們擁有最高的用戶權(quán)限,他們負(fù)責(zé)對(duì)上報(bào)的先進(jìn)申請(qǐng)文件進(jìn)行審核與監(jiān)督。(3)系統(tǒng)的業(yè)務(wù)流程分析UML(Unified Modeling Language,統(tǒng)一建模語(yǔ)言)是一種標(biāo)準(zhǔn)的圖形化建模語(yǔ)言,它是面向?qū)ο蠓治雠c設(shè)計(jì)的一
49、種標(biāo)準(zhǔn)表示。同時(shí),是一種定義良好、易于表達(dá)、功能強(qiáng)大、普遍適用且可視化的建模語(yǔ)言。它溶入了軟件工程領(lǐng)域的新思想、新方法和新技術(shù)。UML將是面向?qū)ο蠹夹g(shù)領(lǐng)域內(nèi)占主導(dǎo)地位的標(biāo)準(zhǔn)建模語(yǔ)言,目前UML獲得了工業(yè)界、科技界和應(yīng)用界的廣泛支持,成為可視化建模語(yǔ)言事實(shí)上的工業(yè)標(biāo)準(zhǔn)。泳道圖是將模型中的活動(dòng)按照職責(zé)組織起來(lái)。這種分配可以通過(guò)將活動(dòng)組織成用線分開的不同區(qū)域來(lái)表示。由于它們的外觀的緣故,這些區(qū)域被稱作泳道。它可以方便的描述企業(yè)的各種業(yè)務(wù)流程,能夠直觀地描述系統(tǒng)的各活動(dòng)之間的邏輯關(guān)系,利于用戶理解業(yè)務(wù)邏輯。8先進(jìn)個(gè)人申請(qǐng)的泳道圖如下:圖4.2 先進(jìn)個(gè)人申請(qǐng)的泳道圖用例圖:是從用戶角度描述系統(tǒng)功能,并指
50、出各功能的操作者,對(duì)系統(tǒng)行為的動(dòng)態(tài)描述。它代表系統(tǒng)中各個(gè)項(xiàng)目相關(guān)人員之間就系統(tǒng)行為所達(dá)成的契約。先進(jìn)個(gè)人申請(qǐng)用例圖如下:圖4.3 先進(jìn)個(gè)人申請(qǐng)用例圖4.2 系統(tǒng)設(shè)計(jì)階段4.2.1 系統(tǒng)設(shè)計(jì)原則本系統(tǒng)遵循以下建設(shè)原則:14(1)統(tǒng)一規(guī)劃、統(tǒng)一標(biāo)準(zhǔn)、城市建網(wǎng)、網(wǎng)絡(luò)互連、分級(jí)使用、分步實(shí)施。(2)遵循國(guó)家勞動(dòng)部要求與國(guó)際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ǔ)上,盡可能降低造價(jià),使整個(gè)系統(tǒng)高效地發(fā)揮作用。(5)系統(tǒng)高度的可靠性,保證系統(tǒng)可以在任何條件和環(huán)境下均能正常工作;安全
51、性方面有針對(duì)性地采取一些措施,使系統(tǒng)能安全地運(yùn)行,避免人為因素及計(jì)算機(jī)病毒等造成的破壞作用,爭(zhēng)取做到防患于未然。(6)充分利用國(guó)家和行業(yè)公用通訊設(shè)施,遵循通信技術(shù)以及國(guó)家在技術(shù)體制上的有關(guān)規(guī)定,充分保護(hù)利用現(xiàn)有的軟、硬件資源。(7)網(wǎng)絡(luò)技術(shù)具有先進(jìn)性,能適應(yīng)未來(lái)技術(shù)的發(fā)展,便于發(fā)展、便于擴(kuò)充、靈活性強(qiáng)。(8)系統(tǒng)具備相當(dāng)?shù)南冗M(jìn)性和足夠的事務(wù)處理能力,以保證在信息時(shí)代的新形勢(shì)下能夠準(zhǔn)確、迅速及時(shí)地處理日益增長(zhǎng)的各種信息數(shù)據(jù),實(shí)現(xiàn)公路客運(yùn)資源的協(xié)同工作。(9)系統(tǒng)具有一定的可擴(kuò)展性和升級(jí)更新能力,適應(yīng)主管單位的宏觀管理需要和企業(yè)的規(guī)?;?jīng)營(yíng)。計(jì)算機(jī)技術(shù)的不斷發(fā)展,同時(shí)保障軟硬件資源的充分利用。(1
52、0)作為當(dāng)前知識(shí)經(jīng)濟(jì)發(fā)展形勢(shì)下的現(xiàn)代管理系統(tǒng),系統(tǒng)可以將道路運(yùn)輸行政管理部門連接在一起;協(xié)同處理有關(guān)業(yè)務(wù);系統(tǒng)還可以通過(guò)國(guó)際互聯(lián)網(wǎng)(INTERNET)把相關(guān)信息通過(guò)WEB發(fā)布到網(wǎng)上,便于展開網(wǎng)絡(luò)交流管理活動(dòng)。4.2.2軟件基本架構(gòu)的搭建本系統(tǒng)功能的實(shí)現(xiàn),是參考J2EE框架結(jié)構(gòu),結(jié)合WebWork、Spring和Hibernate的相關(guān)技術(shù)特點(diǎn),采用了MVC和DAO的設(shè)計(jì)模式,來(lái)完成J2EE架構(gòu)的具體設(shè)計(jì)。軟件體系結(jié)構(gòu)中采用三層結(jié)構(gòu):Web表示層、業(yè)務(wù)邏輯層、持久層。各個(gè)層次之間具有不同的功能,并保持清晰的隔離,以使彼此獨(dú)立存在。三層之間的關(guān)系如下圖:9圖4.4 軟件體系三層結(jié)構(gòu)間的關(guān)系(1)表
53、示層采用WebWork框架WebWork的工作,總得來(lái)說(shuō)是提供一個(gè)流程的控制:通過(guò)接收用戶請(qǐng)求,將基于http的請(qǐng)求參數(shù)和相關(guān)的環(huán)境變量封裝到通用的ActionContext中。Xwork接收到WebWork傳遞過(guò)來(lái)的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)的核心
54、部分,也就是業(yè)務(wù)核心的載體-領(lǐng)域模型所在的位置,還包括業(yè)務(wù)過(guò)程控制以及事務(wù)控制等服務(wù)。業(yè)務(wù)層職責(zé)如下: 處理應(yīng)用程序的業(yè)務(wù)邏輯和業(yè)務(wù)校驗(yàn);管理事務(wù);允許與其它層相互作用的接口;管理業(yè)務(wù)層級(jí)別的對(duì)象的依賴;在顯示層和持久層之間增加了一個(gè)靈活的機(jī)制,使得他們不直接的聯(lián)系在一起;通過(guò)揭示從顯示層到業(yè)務(wù)層之間的Context來(lái)得到business services;管理程序的執(zhí)行(從業(yè)務(wù)層到持久層)。Spring提供了控制倒置(inversion of control,簡(jiǎn)稱IoC)和注射依賴設(shè)置(setter dependency injection)這些方式,用XML文件將對(duì)象連接起來(lái)。 IoC是一
55、個(gè)簡(jiǎn)單概念(它允許一個(gè)對(duì)象在上層接受其他對(duì)象的創(chuàng)建),用IoC這種方式讓對(duì)象從創(chuàng)建中釋放了出來(lái),降低了偶合度。16Spring業(yè)務(wù)層的處理流程如圖所示:圖4.6 業(yè)務(wù)層的處理流程(3)持久層采用Hibernate技術(shù)持久層(persistence layer)主要負(fù)責(zé)業(yè)務(wù)數(shù)據(jù)的持久性存儲(chǔ)。持久層采用Hibernate技術(shù)持久化數(shù)據(jù)。但是一個(gè)基于關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)(RDMS)的應(yīng)用程序,一般不會(huì)只采用一種持久化技術(shù),很多情況下除了使用O/R Mapping技術(shù),可能出于性能等特殊原因的考慮,需要直接進(jìn)入JDBC技術(shù)。Hibernate作為一種持久層框架和Spring搭配在一起,使開發(fā)人員使用面向?qū)ο?/p>
56、的操作方式來(lái)操作數(shù)據(jù)庫(kù)記錄。更為重要的是,應(yīng)用系統(tǒng)在不同數(shù)據(jù)庫(kù)間移植非常方便,只需在配置文件中更改即可。15簡(jiǎn)單的說(shuō)持久層主要完成數(shù)據(jù)庫(kù)表的構(gòu)造、持久化對(duì)象和*.hbm.xml映射文件的編寫。Hibernate作為持久化框架向上屏蔽了不同數(shù)據(jù)庫(kù)間的差異,可以很容易移植到不同的數(shù)據(jù)庫(kù)。Hibernate持久層的處理流程如圖所示:圖4.7 持久層的處理流程圖4.2.3 類圖設(shè)計(jì)類圖:它描述的是一種靜態(tài)關(guān)系,在系統(tǒng)的整個(gè)生命周期都是有效的。不僅定義系統(tǒng)中的類,表示類之間的聯(lián)系如關(guān)聯(lián)、依賴、聚合等,也包括類的內(nèi)部結(jié)構(gòu)即:類的屬性和操作。圖4.8顯示了先進(jìn)個(gè)人申請(qǐng)管理的類圖:先進(jìn)個(gè)人申請(qǐng)類繼承了人員信息
57、類和部門信息類,同時(shí)初審類和復(fù)審類又繼承了先進(jìn)個(gè)人申請(qǐng)類。圖4.8 先進(jìn)個(gè)人申請(qǐng)的類圖4.2.4 數(shù)據(jù)庫(kù)設(shè)計(jì)在數(shù)據(jù)流程分析的基礎(chǔ)之上,我們已經(jīng)基本了解了用戶所要使用的數(shù)據(jù),這時(shí)就應(yīng)進(jìn)行詳細(xì)的數(shù)據(jù)分析從而建立數(shù)據(jù)模型了。在進(jìn)行數(shù)據(jù)庫(kù)設(shè)計(jì)的時(shí)候,要遵循下面的幾個(gè)原則:7(1)通用性原則數(shù)據(jù)共享不僅僅局限于“數(shù)據(jù)共用”,還應(yīng)該滿足:數(shù)據(jù)庫(kù)不依賴于各個(gè)子系統(tǒng),既由各子系統(tǒng)共用:數(shù)據(jù)與程序嚴(yán)格分離,數(shù)據(jù)的增刪、更改不需要更改程序。這就要求數(shù)據(jù)庫(kù)必須具有良好的通用性,即:數(shù)據(jù)具有透明性;通用的數(shù)據(jù)操縱語(yǔ)言供各子系統(tǒng)各應(yīng)用程序調(diào)用數(shù)據(jù)。(2)一致性原則數(shù)據(jù)交叉現(xiàn)象不僅造成大量的數(shù)據(jù)重復(fù),而且難以統(tǒng)一更新,產(chǎn)
58、生數(shù)據(jù)混亂的現(xiàn)象,導(dǎo)致數(shù)據(jù)的不一致、不唯一。因此,數(shù)據(jù)庫(kù)必須統(tǒng)一管理。同時(shí),為了減少由于數(shù)據(jù)不一致所造成的損失,系統(tǒng)應(yīng)該包含數(shù)據(jù)的一致性校驗(yàn)的功能,用戶可以在特定時(shí)間段內(nèi)進(jìn)行一致性校驗(yàn),來(lái)避免某些數(shù)據(jù)存在冗余或者不一致。(3)安全性原則數(shù)據(jù)庫(kù)是營(yíng)運(yùn)系統(tǒng)的基礎(chǔ),數(shù)據(jù)庫(kù)系統(tǒng)的崩潰對(duì)水運(yùn)系統(tǒng)以及營(yíng)運(yùn)系統(tǒng)是災(zāi)難性的,因此必須保證數(shù)據(jù)庫(kù)系統(tǒng)的高度安全可靠性。采取一定的措施,如數(shù)據(jù)庫(kù)服務(wù)器磁盤鏡像、數(shù)據(jù)庫(kù)備份等,并保證數(shù)據(jù)不被非法訪問(wèn),病毒侵?jǐn)_,還必須采取相應(yīng)的保密措施。下面是先進(jìn)個(gè)人申請(qǐng)的主題數(shù)據(jù)庫(kù):表4.1:主題數(shù)據(jù)庫(kù)主題數(shù)據(jù)庫(kù)標(biāo)識(shí)主題數(shù)據(jù)庫(kù)名稱數(shù)據(jù)庫(kù)表標(biāo)識(shí)數(shù)據(jù)庫(kù)表名稱GH3P_OFFICE_QUAL
59、ITY局辦文明建設(shè)數(shù)據(jù)庫(kù)T_PERSONQUALITYT_PERSONTRIAL先進(jìn)個(gè)人申請(qǐng)表審查表GH3P_OFFICE_USER基礎(chǔ)數(shù)據(jù)庫(kù)T_USERT_DEPARTMENT T_ATTACHMENT用戶基本信息部門基本信息附件基本信息(基礎(chǔ)數(shù)據(jù)庫(kù)中數(shù)據(jù)表省略)表4.2:先進(jìn)個(gè)人申請(qǐng)數(shù)據(jù)庫(kù)表數(shù)據(jù)元素標(biāo)識(shí)含義類型長(zhǎng)度允許空ID申請(qǐng)表IDNUMBER22NUSER_ID用戶IDNUMBER22NDEPARTMENT_ID部門IDNUMBER22NSUBMIT_DATE提交日期DATEYNAME申請(qǐng)人姓名VARCHAR260YCOMPANY單位VARCHAR290YPOSITION職位VARCH
60、AR290YDIPLOMA學(xué)歷VARCHAR290YMAJOR專業(yè)VARCHAR290YSEX性別NUMBER4YMODIFY是否可改NUMBER4Y表4.3:先進(jìn)個(gè)人申請(qǐng)審查表數(shù)據(jù)元素標(biāo)識(shí)含義類型長(zhǎng)度允許空ID申請(qǐng)表標(biāo)識(shí)NUMBER22NUSER_ID用戶IDNUMBER22NDEPARTMENT_ID部門IDNUMBER22NOPINION審查意見VARCHAR2500YSTAMP 審查人VARCHAR290YDATE審查日期DATEYSTATE審查狀態(tài)NUMBER4YAPP_ID 個(gè)人申請(qǐng)IDNUMBER22N(注:審查狀態(tài)取值為1和2,1代表市級(jí)管理部門意見,2代表省級(jí)審查意見)第五章
61、 先進(jìn)個(gè)人申請(qǐng)與管理的系統(tǒng)實(shí)現(xiàn)5.1 開發(fā)軟件的介紹5.1.1 Eclipse 開發(fā)平臺(tái)Eclipse 是一個(gè)開放源代碼的、基于 Java 的可擴(kuò)展開發(fā)平臺(tái)。它由IBM作為主發(fā)起人投資開發(fā),并被Borland、Sybase等眾多公司所支持。Eclipse 不僅僅是一個(gè)集成開發(fā)環(huán)境(DE),也是一個(gè)工具集成的開發(fā)平臺(tái), 它提供了一個(gè)用于開發(fā)插件的框架,使創(chuàng)建、繼承和使用軟件工具更容易。就其本身而言,它只是一組規(guī)則,滿足了以下需求:支持多種應(yīng)用開發(fā)工具的構(gòu)建;能獨(dú)立地開發(fā)處理各種內(nèi)容的插件(HTML、Java、C、JSP、EJB、XML和GIF等);開發(fā)者可以自己獨(dú)立地開發(fā)工具,與其它標(biāo)準(zhǔn)工具無(wú)縫
62、集成;可以在多種平臺(tái)上運(yùn)行,包括Windows和Linux平臺(tái)。Eclipse平臺(tái)由幾個(gè)主要的部分構(gòu)成:平臺(tái)運(yùn)行庫(kù)、工作區(qū)、工作臺(tái)、團(tuán)隊(duì)支持和幫助。10Eclipse平臺(tái)體系結(jié)構(gòu),如圖圖5.1 Eclipse 平臺(tái)體系結(jié)構(gòu)圖平臺(tái) 平臺(tái)運(yùn)行庫(kù)是內(nèi)核,它在啟動(dòng)時(shí)檢查已安裝了哪些插件,并創(chuàng)建關(guān)于它們的注冊(cè)表信息。為降低啟動(dòng)時(shí)間和資源使用,它在實(shí)際需要任何插件時(shí)才加載該插件。除了內(nèi)核外,其他每樣?xùn)|西都是作為插件來(lái)實(shí)現(xiàn)的。工作區(qū) 工作區(qū)是負(fù)責(zé)管理用戶資源的插件。這包括用戶創(chuàng)建的項(xiàng)目、那些項(xiàng)目中的文件,以及文件變更和其他資源。工作區(qū)還負(fù)責(zé)通知其他插件關(guān)于資源變更的信息,比如文件創(chuàng)建、刪除或更改。工作臺(tái) 工
63、作臺(tái)為 Eclipse 提供用戶界面。它是使用標(biāo)準(zhǔn)窗口工具包(SWT)和一個(gè)更高級(jí)的 API(JFace)來(lái)構(gòu)建的;SWT 是 Java 的 Swing/AWT GUI API 的非標(biāo)準(zhǔn)替代者,JFace 則建立在 SWT 基礎(chǔ)上,提供用戶界面組件。團(tuán)隊(duì)支持 團(tuán)隊(duì)支持組件負(fù)責(zé)提供版本控制和配置管理支持。它根據(jù)需要添加視圖,以允許用戶與所使用的任何版本控制系統(tǒng)(如果有的話)交互。大多數(shù)插件都不需要與團(tuán)隊(duì)支持組件交互,除非它們提供版本控制服務(wù)。幫助 幫助組件具有與 Eclipse 平臺(tái)本身相當(dāng)?shù)目蓴U(kuò)展能力。與插件向 Eclipse 添加功能相同,幫助提供一個(gè)附加的導(dǎo)航結(jié)構(gòu),允許工具以 HTML 文件的形式添加文檔。5.1.2 Apache Tomcat應(yīng)用服務(wù)器隨著java的流行,Tomcat在web上的應(yīng)用也越來(lái)越廣,Tomcat作為一個(gè)開源的servlet容器, 是jakarta項(xiàng)目中的一個(gè)重要的子項(xiàng)目,其被JavaWorld雜志的編輯選為2001年度最具創(chuàng)新的java產(chǎn)品(Most Innovative Java Product),同時(shí)它又是sun公司官方推薦的servlet和
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)四年級(jí)英語(yǔ)國(guó)旗和國(guó)名
- 小學(xué)快速記憶訓(xùn)練示范課ppt課件
- 組織行為學(xué)6
- 資產(chǎn)試講(初稿)
- 培訓(xùn)行業(yè)通用模板
- 某汽車店與易車網(wǎng)合作策略
- 護(hù)理文書書寫存在的問(wèn)題原因分析及整改措施
- 少年有夢(mèng) (2)
- 用畫筆觸摸細(xì)節(jié)2(精品)
- 8這條小魚在乎(教育精品)
- 58“整理與復(fù)習(xí)”課件(教育精品)
- 幽徑悲劇(教育精品)
- (精品)展示臺(tái) (2)
- 品管圈活動(dòng)中期匯報(bào)
- 某科技架構(gòu)以用戶為中心的互聯(lián)網(wǎng)運(yùn)營(yíng)體系介紹