《電子技術(shù)應用》
您所在的位置:首頁 > 其他 > 業(yè)界動態(tài) > 基于J2EE的Web 應用的建模

基于J2EE的Web 應用的建模

2008-12-20
作者:萬賢福,宋碧蓮,孫莉

1、引 言?

??? 隨著全球化市場競爭的加劇,,傳統(tǒng)的Web 應用系統(tǒng)" title="應用系統(tǒng)">應用系統(tǒng)已經(jīng)不適應企業(yè)業(yè)務(wù)不斷擴展,,流程不斷變化,存儲數(shù)據(jù)分布處理,,企業(yè)之間橫向聯(lián)系的要求,。如何使得企業(yè)應用系統(tǒng)在激烈的市場競爭中能夠迅速地反映企業(yè)的變化,加強伙伴企業(yè)之間應用服務(wù)的快速發(fā)現(xiàn),,企業(yè)之間業(yè)務(wù)數(shù)據(jù)的無縫集成,,對于提高企業(yè)Web 應用的市場競爭力具有非常重要的意義。J2EE正是在這種背景下產(chǎn)生的,,它是解決企業(yè)級應用棘手問題的理想平臺,。由此基于J2EE開發(fā)Web 應用成為了當前的熱點。然而由于J2EE體系結(jié)構(gòu)的特殊性,,基于J2EE開發(fā)Web 應用有其自身的特點,。于是如何對利用J2EE開發(fā)的Web 應用進行建模,成為擺在我們面前的問題,。

本文在充分分析J2EE體系結(jié)構(gòu)以及基于J2EE的web應用的基礎(chǔ)之上,,得出基于J2EE的Web 應用的建模任務(wù),接著通過實例講解基于J2EE的Web 應用的建模具體步驟,,最后總結(jié)出建模原則,。

2、J2EE?

??? J2EE是一種利用Java 2平臺來簡化與多級企業(yè)解決方案的開發(fā),、部署和管理相關(guān)的復雜問題的體系結(jié)構(gòu),;它提供了一個企業(yè)級的計算模型和運行環(huán)境用于開發(fā)和部署多層體系結(jié)構(gòu)的應用。通過提供企業(yè)計算環(huán)境所必需的各種服務(wù),,使得部署在J2EE平臺上的多層應用可以實現(xiàn)高可用性,、安全性、可擴展性和可靠性,。

J2EE的體系結(jié)構(gòu)可以分為4層,,如圖1所示。

.客戶端" title="客戶端">客戶端層 這一層直接與用戶交互,,J2EE支持多種客戶端,,它既可以是通過Internet訪問的Web瀏覽器客戶端,也可以是通過企業(yè)Intranet運行的瘦客戶端,。

.Web層  這一層是為基于Web的應用程序服務(wù)的,,J2EE中的JavaServer Page和Java Servlet技術(shù)可以訪問封裝有商務(wù)邏輯的組件,,并負責響應Web客戶端的請求。

.EJB層  EJB(Enterprise Java Bean)封裝了商務(wù)邏輯,,完成企業(yè)計算,。EJB1.1規(guī)范中EJB包括兩種:會話Bean和實體Bean。會話Bean代表商業(yè)過程,,而實體Bean代表永久性的商務(wù)數(shù)據(jù),。

.EIS層  EIS(Enterprise Information System)企業(yè)信息系統(tǒng)層包括企業(yè)已有系統(tǒng)(如ERP系統(tǒng))、數(shù)據(jù)庫系統(tǒng),、文件系統(tǒng)等,。J2EE提供了多種技術(shù)來訪問這些系統(tǒng),如利用JDBC技術(shù)來訪問數(shù)據(jù)庫,。

3,、基于J2EE的Web 應用
3.1 Web 應用實例簡介

??? 在此舉一個簡單的Web應用實例,以闡述如何對基于J2EE開發(fā)的Web應用進行建模,。它僅包括一個顧客登錄用例" title="用例">用例,,此用例為:顧客在瀏覽器中輸入用戶名和密碼,點擊“登錄”之后,,系統(tǒng)驗證顧客,,如果驗證通過,頁面顯示“歡迎您,!”信息,,如果失敗,則顯示“登錄失??!”,。舉此例旨在后續(xù)闡述問題時做到清晰,,故而盡量簡化。
3.2 基于J2EE的Web 應用的體系結(jié)構(gòu)
??? 基于J2EE的Web 應用大多采用MVC體系結(jié)構(gòu),。MVC模式即模型-視圖-控制器模型,。模型指實現(xiàn)應用數(shù)據(jù)和商業(yè)邏輯的對象。視圖負責格式化應用系統(tǒng)的結(jié)果和動態(tài)頁面構(gòu)建,??刂破髫撠熃邮湛蛻粽埱螅{(diào)用適當?shù)纳虡I(yè)邏輯,,并且基于結(jié)果選擇適當?shù)囊晥D顯示給用戶,。
??? 圖2顯示了一種典型的基于J2EE的Web 應用的體系結(jié)構(gòu)。
??? 其工作原理如下:首先,,①客戶端瀏覽器向控制器發(fā)出請求事件,,控制器(servlet)接收到請求事件之后,,②向JavaBean代理發(fā)出處理請求,接著③JavaBean代理調(diào)用EJB進行業(yè)務(wù)邏輯處理并④獲得結(jié)果,,置入到其屬性中,,此時⑤控制器觸發(fā)響應,將控制權(quán)傳給相應的視圖(JSP),,⑥視圖(JSP)從JavaBean代理中讀取屬性值,,⑦獲得處理結(jié)果,⑧生成客戶端顯示代碼傳給客戶端瀏覽器,。
3.3 基于J2EE的Web 應用的建模任務(wù)
??? 由上述體系結(jié)構(gòu)的分析,,我們可以得出基于J2EE的Web 應用的各組成部分的建模任務(wù)(以圖2所示結(jié)構(gòu)為例):
.業(yè)務(wù)處理部分??此部分負責Web 應用的數(shù)據(jù)與業(yè)務(wù)邏輯,是Web 應用的核心,,由EJB來實現(xiàn),,故這部分的建模任務(wù)是分析出Web 應用的業(yè)務(wù)邏輯并設(shè)計出相應的EJB以實現(xiàn)分析出的業(yè)務(wù)邏輯。
.控制器部分??此部分負責接收HTTP事件請求,,調(diào)度相應的JavaBean代理并將控制轉(zhuǎn)移給相應的JSP頁面,。所以這部分的建模任務(wù)是:設(shè)計出若干控制器,要求分析出每個控制器接受哪些HTTP請求,,針對每個HTTP請求需分析出它調(diào)度哪些JavaBean代理和轉(zhuǎn)移至哪些JSP頁面,。
.JavaBean代理部分?此部分負責調(diào)度EJB,得出JSP頁面所需顯示的數(shù)據(jù),,并將這些數(shù)據(jù)賦值給其自身相應的屬性,。它的建模任務(wù)是根據(jù)JSP頁面所需,設(shè)計出相應的JavaBean代理,,每個JavaBean代理需分析出它組織哪些EJB和怎樣組織這些EJB,,還有就是它有哪些屬性以及怎樣獲得屬性值的。
.JSP頁面部分???在Web服務(wù)器上,,負責從JavaBean代理中取出客戶端所需顯示的屬性值,,生成客戶端顯示代碼;在瀏覽器上生成顯示界面,,通過顯示界面向控制器發(fā)出HTTP請求事件,。因此JSP頁面的建模任務(wù)是設(shè)計若干JSP頁面,分析出每個JSP頁面所需獲取的JavaBean代理的屬性,,并且分析出JSP頁面生成的客戶端代碼可以觸發(fā)的HTTP請求事件,。
4. 基于J2EE的Web 應用的建模具體步驟
?? ?基于J2EE的Web 應用建模具體步驟如下(在此我們采用RUP建模過程來對前述應用實例進行UML建模,假設(shè)以圖2所示體系結(jié)構(gòu)實現(xiàn)此例):

(1)? 分析用例中所涉及的持久性數(shù)據(jù)與業(yè)務(wù)邏輯,,確定用來滿足用例的EJB類,。本用例涉及顧客信息,這是持久性數(shù)據(jù),,設(shè)計由CustomerBean實體EJB來封裝顧客信息,。此外本用例還涉及到對顧客信息的驗證,,這是業(yè)務(wù)邏輯,我們設(shè)計LoginVerifyBean無狀態(tài)會話EJB來驗證密碼是否正確,。

(2)?? 粗略設(shè)計此用例中所涉及的體系結(jié)構(gòu)中各元素,,并將它們放入到順序圖中。我們設(shè)計客戶端頁面為Login.jsp,,服務(wù)器端頁面為LoginResult.jsp,,控制器為LoginServlet,JavaBean代理為LoginAgent,。將它們與第一步設(shè)計的EJB一同放入到順序圖的適當位置,。

(3)?? 分析用例流程,畫出對象之間交互的消息,。本用例中,,①首先顧客在瀏覽器Login.jsp頁面中填入用戶名和密碼,點擊“登錄”,,向控制器LoginServlet發(fā)出登錄事件,,②控制器接收到登錄事件后向LoginAgent發(fā)出Login消息,接著③ LoginAgent對LoginverifyBean發(fā)出LoginVerify消息,,④ LoginVerifyBean通過UserName獲取到此用戶名的CustomerBean實體EJB對象,,⑤LoginVerifyBean對CustomerBean發(fā)出getPassword消息獲取出密碼,⑥LoginVerifyBean進行密碼對比,,得出驗證結(jié)果返回給LoginAgent,,⑦ LoginAgent從后臺獲得驗證結(jié)果后,根據(jù)結(jié)果給LoginResultInf屬性賦值(若驗證通過,,賦值“歡迎您,!”,否則賦值“登錄失??!”),⑧LoginServlet將控制轉(zhuǎn)給LoginResult.jsp頁面,,⑨ LoginResult.jsp頁面向LoginAgent發(fā)出getLoginResultInf消息,,獲得LoginAgent的LoginResultInf屬性值,,之后生成顯示頁面?zhèn)髦量蛻舳?。至此順序圖完成,如圖3,。

(4)? 將順序圖中的消息映射為操作,,將消息中傳遞的數(shù)據(jù)封裝" title="數(shù)據(jù)封裝">數(shù)據(jù)封裝到適當?shù)念愔校链祟悎D可以完成,,如圖4,。

??? 經(jīng)過以上建模,,體系結(jié)構(gòu)中涉及登錄用例的各組成部分都得到足夠詳盡的分析;順序圖清晰地展示出體系結(jié)構(gòu)中各組成部分的相互協(xié)作的流程,;建模過程簡潔,、清晰、明了,;涉及數(shù)據(jù)和業(yè)務(wù)邏輯的類非常容易轉(zhuǎn)化為EJB,。建模效果比較理想。

5.基于J2EE的Web 應用的建模原則總結(jié)?

??? 根據(jù)上面的建模過程,,結(jié)合前人與作者本人的研究,,下面列出基于J2EE的Web 應用的建模的幾點原則:

(1)? 在體系結(jié)構(gòu)基礎(chǔ)上進行建模,將體系結(jié)構(gòu)納入并貫穿到整個建模過程中,。將體系結(jié)構(gòu)貫穿整個建模過程,,從而指導建模者按照體系結(jié)構(gòu)中各部分職能進行劃分與設(shè)計系統(tǒng),由此所建的模型能夠很好實現(xiàn)體系結(jié)構(gòu),,并且各組成部分也能較好地完成前面提出的建模任務(wù),。

(2)? 對于涉及到數(shù)據(jù)與業(yè)務(wù)邏輯的類應該根據(jù)EJB的特殊性來進行設(shè)計。由于這些類最終要轉(zhuǎn)化為EJB,,所以首先要確定該類將來由哪種EJB來實現(xiàn),,如果該類涉及到持久性數(shù)據(jù)封裝,則應該設(shè)計成實體EJB類,,若涉及到業(yè)務(wù)邏輯則應設(shè)計成會話EJB類,,特別值得注意的是實體EJB僅僅負責對于持久性數(shù)據(jù)的簡單查詢存取操作,所以如果某個類既涉及到持久性數(shù)據(jù)封裝又包括對這些數(shù)據(jù)的復雜操作,,則該類應該拆成實體EJB類和會話EJB類,。這是和一般面向?qū)ο笤O(shè)計的不同之處。狀態(tài)會話EJB也可以封裝業(yè)務(wù)數(shù)據(jù),,但這些業(yè)務(wù)數(shù)據(jù)必須是會話客戶狀態(tài)數(shù)據(jù),,而不能是持久性數(shù)據(jù)。無狀態(tài)會話EJB只能負責業(yè)務(wù)邏輯處理,,不封裝業(yè)務(wù)數(shù)據(jù),。需要申明的是上述都是針對EJB1.1規(guī)范而言的。

(3)??適當設(shè)計一些會話Bean,,這些會話Bean代替EJB客戶端執(zhí)行對一些EJB的批量調(diào)用,,并將最終結(jié)果返回給EJB客戶端,這樣做的目的是為了減少EJB客戶端與EJB層的數(shù)據(jù)傳輸量,,從而改善系統(tǒng)性能,。

6.結(jié)? 語?

??? 本文針對基于J2EE的Web 應用的特點,得出基于J2EE的Web 應用的建模任務(wù),接著結(jié)合作者與前人的研究成果,,最后總結(jié)出基于J2EE的Web 應用的建模原則與方法,,經(jīng)上海市十五重大科研基金項目上海市服裝設(shè)計和加工公共服務(wù)平臺(2S10716)驗證,效果理想,,遂撰此文,,望能起到拋磚引玉的作用。

參考文獻

[1] Simon Brown,,《JSP編程指南》,,2002.10,電子工業(yè)" title="電子工業(yè)">電子工業(yè)出版社,。?

[2]陳華軍,,《J2EE構(gòu)建企業(yè)級應用解決方案》,2002.3,,人民郵電出版社,。?

[3] Khawar Zaman Ahmed,Cary E.Umrysh等,,《用J2EE和UML開發(fā)Java企業(yè)級應用程序》,,2002.7,清華大學出版社,。?

[4]Ed Roman,,《精通EJB》,2002.1,,電子工業(yè)出版社,。?

[5] Grady Boock,James Rumbaugh等,,《UML用戶指南》,,2001.6,機械工業(yè)出版社,。?

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點,。轉(zhuǎn)載的所有的文章,、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有,。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者,。如涉及作品內(nèi)容、版權(quán)和其它問題,,請及時通過電子郵件或電話通知我們,,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失,。聯(lián)系電話:010-82306118,;郵箱:[email protected]