摘要
在
Web
系統(tǒng)設計中,隨著業(yè)務邏輯的越來越復雜,如何提高
Web
系統(tǒng)的執(zhí)行效率、可復用性、可擴展性、可維護性,降低構建和維護成本,一直是業(yè)界普遍關注的焦點。最近幾年來,基于可重用的
FrameWork
技術逐漸成為業(yè)界研究和應用的新趨勢。其中,
Craig McClanahan
于
2000
年
5
月份提出的
Jakarta Struts FrameWork
,將目前最流行的兩種
Server
端技術
--JSP
和
Servlet
集合在一起,實現(xiàn)了
MVC
架構,提供了一種快速高效的構建
Web
應用程序的方法。
Struts
自從誕生之日起,就獲得了
Apache Jakarta
開源社區(qū)的普遍關注。本文作者所在的小組,在
LPMT
中,運用
Struts
技術,快速構建了一個結構清晰、可復用、可擴展的
Web
系統(tǒng)。本文從
MVC
架構設計、
WebForm
技術實現(xiàn)、代碼復用等方面,對
Struts
在
LPMT
中的應用作一個總結。
??????
本論文分四部分,共七章。
第一部分為第一章,介紹什么是系統(tǒng)開發(fā)框架以及應用系統(tǒng)開發(fā)框架對軟件開發(fā)的意義。第二部分為第二章,介紹
Struts
和
MVC
架構的相關技術要點。第三部分為第三章,介紹
LPMT
的構建背景和系統(tǒng)概況。第四部分為第四、五、六、七章,介紹
Struts
在
LPMT
中的應用,包括
MVC
架構設計、
WebForm
技術實現(xiàn)、代碼復用等。
?
關鍵詞
MVC?
架構
? Struts?
軟件復用
? WebForm
Abstract
During web system design,as more and more complex the business becomes,people is always focusing on how to enhance the system’s efficiency,reusable ability,extensible ability and reduce the cost of system.In the past few years,one of the research and develop trends of the field is reuse-based framework technology.One of them is the Jakarta Struts,which was conceived by Craig McClanahan in May of 2000, combining two of the most popular server?side Java technologies—JSPs and servlets—into a server?side implementation of the Model?View?Controller design pattern.It has been under the watchful eye of the Apache Jakarta open source community since that time.in LPMT,our group have rapidly created a reusable extensible system with clear architecture using Struts technology.This thesis focus on MVC design pattern,WebForm,resueable code,to sum up the implements of Jakarta Struts in LPMT.
This thesis divides into four parts altogether.
First part includes chapter one.In this part,starting with what framework is and its significance to software development.
Second part is chapter two.In this part,the writer introduce the theory of the MVC design pattern and Struts framework.
Third part is chapter three.This part is about the background of the LPMT and the system’s introduction.
Fourth part includes chapter four,chapter five,chapter six and seven.It is about the implements of Struts technology in LPMT,including MVC architecture design,webform creating and reusable coding.
?
KeyWords
MVC? Architecture? Struts? Reuse-Based Software? WebForm
目錄
MVC
設計模式的
Struts
技術實現(xiàn)
...
2
第一章
應用系統(tǒng)開發(fā)框架對軟件開發(fā)的意義
...
7
1.1 什么是系統(tǒng)開發(fā)框架... 7
1.2 框架、構件與設計模式... 7
1.3 應用系統(tǒng)開發(fā)框架對軟件開發(fā)的意義... 8
第二章
MVC
設計模式及
Struts
技術
...
9
2.1 MVC設計模式... 9
2.2 Struts結構和處理流程... 10
2.2.1 Controller10
2.2.2 Model11
2.2.3 View.. 11
2.3 利用Struts框架進行MVC開發(fā)的流程... 11
第三章
一個輕量級的
Project Management Tool(LPMT)
.
13
3.1 LPMT的用戶需求... 13
3.2 LPMT的需求實現(xiàn)... 13
第四章
LPMT
中的
MVC
多層架構實現(xiàn)
...
15
4.1 系統(tǒng)架構... 15
4.1.1 Data Persistence. 15
4.1.2 Logic. 15
4.1.3 Model15
4.1.4 Controller15
4.1.5 View.. 16
4.2 MVC模式的實現(xiàn)邏輯... 16
4.3 分頁顯示Issue的MVC模式實現(xiàn)... 16
第五章
LPMT
中的控制結構
...
18
5.1 Action中的控制結構實現(xiàn)... 18
5.2 ActionForm中的控制邏輯實現(xiàn)... 18
5.3 View中的控制邏輯實現(xiàn)... 18
第六章
LPMT
中的
WebForm
技術實現(xiàn)
...
20
6.1 Jakarta Struts 標簽庫... 20
6.2 WebForm的Jakarta Struts標簽技術實現(xiàn)... 20
6.3 與單純的JSP代碼的比較... 23
第七章
LPMT
中的代碼復用技術
...
25
7.1 Model復用... 25
7.2 View復用... 28
7.3 Controller復用... 28
7.4 其他面向對象的代碼復用... 28
7.4.1 封裝性... 28
7.4.2 重載... 29
7.4.3 繼承... 29
結論
...
29
致謝語
...
29
參考文獻
...
30
附錄
...
30
(1)??? Struts-config.xml30
(2)??? IssueAction.java. 31
(3)??? IssueBean.java. 36
(4)??? IssueDetail.jsp. 46
引言
在目前國內的面向中小企業(yè)的
Web
應用程序設計中,以單純的
ASP/JSP/Servlet
代碼構建的基于服務器端運行的系統(tǒng)占大多數(shù)。但上述系統(tǒng)有一個共同的缺陷,就是當業(yè)務邏輯越來越復雜的時候,系統(tǒng)構建所帶來的復雜度和所耗費的成本將進一步提升,由于結構的不清晰所帶來的系統(tǒng)可讀性也進一步降低,后期的維護和擴展難度進一步增加。鑒于此,在
J2EE
領域,業(yè)界通常采用在
Server
集成一些可復用的組件比如
EJB
等以及
FrameWork
技術來使得系統(tǒng)結構清晰化,以及實現(xiàn)軟件的可復用、可擴展和高效率。在這里,我們采用
Jakarta Struts
技術,通過和
Logical
層、
DataPersistence
的配合,快速構建一個可復用、可擴展的、結構清晰的
Web
應用程序
--LPMT
。
事實證明,作為一個日漸成熟的優(yōu)秀的
FrameWork
技術,
Struts
在構建的基于
MVC
設計模式的
Web
系統(tǒng)方面有得天獨厚的優(yōu)勢。本文謹從
MVC
架構設計、控制邏輯實現(xiàn)、
WebForm
技術實現(xiàn)、代碼復用等方面對
Struts
在
LPMT
中的應用作一個技術總結。
第一章
應用系統(tǒng)開發(fā)框架對軟件開發(fā)的意義
軟件構件化是
21
世紀軟件工業(yè)發(fā)展的大勢趨。工業(yè)化的軟件復用已經從通用類庫進化到了面向領域的應用框架。
Gartner Group
認為:
“
到
2003
年,至少
70%
的新應用將主要建立在如軟件構件和應用框架這類
‘
構造塊
’
之上;應用開發(fā)的未來就在于提供一開放體系結構,以方便構件的選擇、組裝和集成
”
。框架的重用已成為軟件生產中最有效的重用方式之一。
框架是整個或部分系統(tǒng)的可重用設計部分,表現(xiàn)為一組抽象構件及構件實例間交互的方法;另一種定義認為,框架是可被應用開發(fā)者定制的應用骨架。前者是從應用方面而后者是從目的方面給出的定義。框架規(guī)定了應用的體系結構,闡明了整個設計、協(xié)作構件之間的依賴關系、責任分配和控制流程,表現(xiàn)為一組抽象類以及其實例之間協(xié)作的方法,它為構件復用提供了上下文
(Context)
關系。框架是構件技術、軟件體系結構研究和應用軟件開發(fā)三者發(fā)展結合的產物。在很多情況下,框架通常以構件庫的形式出現(xiàn),但構件庫只是框架的一個重要部分。框架的關鍵還在于框架內對象間的交互模式和控制流模式。
框架是實現(xiàn)了某應用領域通用完備功能(除去特殊應用的部分)的底層服務。使用這種框架的編程人員可以在一個通用功能已經實現(xiàn)的基礎上開始具體的系統(tǒng)開發(fā)。框架提供了所有應用期望的默認行為的類集合。具體的應用通過重寫子類
(
該子類屬于框架的默認行為
)
或組裝對象來支持應用專用的行為。
?
應用框架強調的是軟件的設計重用性和系統(tǒng)的可擴充性
,
以縮短大型應用軟件系統(tǒng)的開發(fā)周期,提高開發(fā)質量。與傳統(tǒng)的基于類庫的面向對象重用技術比較,應用框架更注重于面向專業(yè)領域的軟件重用。應用框架具有領域相關性,構件根據(jù)框架進行復合而生成可運行的系統(tǒng)。框架的粒度越大,其中包含的領域知識就更加完整。
框架
(Framework)
、構件
(Component)
和設計模式
(Design pattern)
是一個成熟的系統(tǒng)平臺中三個重要的部分,同時又是三個很容易混淆的概念。框架往往是為實現(xiàn)一個或多個設計模式而設計的可重用可擴展的設計,是軟件系統(tǒng)開發(fā)的半成品,而構件是框架當中的可重用的工具包、類庫或者
API
。
構件通常是代碼重用,而設計模式是設計重用,框架則介于兩者之間,部分代碼重用,部分設計重用,有時分析也可重用。在軟件生產中有三種級別的重用:內部重用,即在同一應用中能公共使用的抽象塊
;
代碼重用,即將通用模塊組合成庫或工具集,以便在多個應用和領域都能使用;應用框架的重用,即為專用領域提供通用的或現(xiàn)成的基礎結構,以獲得最高級別的重用性。
框架與設計模式雖然相似,但卻有著根本的不同。設計模式是對在某種環(huán)境中反復出現(xiàn)的問題以及解決該問題的方案的描述,它比框架更抽象;框架可以用代碼表示,也能直接執(zhí)行或復用,而對模式而言只有實例才能用代碼表示
;
設計模式是比框架更小的元素,一個框架中往往含有一個或多個設計模式,框架總是針對某一特定應用領域,但同一模式卻可適用于各種應用。可以說,框架是軟件,而設計模式是軟件的知識。
框架的最大好處就是重用。面向對象系統(tǒng)獲得的最大的復用方式就是框架,一個大的應用系統(tǒng)往往可能由多層互相協(xié)作的框架組成。
?
由于框架能重用代碼,因此從一已有構件庫中建立應用變得非常容易,因為構件都采用框架統(tǒng)一定義的接口,從而使構件間的通信簡單。
?
框架能重用設計。它提供可重用的抽象算法及高層設計,并能將大系統(tǒng)分解成更小的構件,而且能描述構件間的內部接口。這些標準接口使在已有的構件基礎上通過組裝建立各種各樣的系統(tǒng)成為可能。只要符合接口定義,新的構件就能插入框架中,構件設計者就能重用構架的設計。
?
框架還能重用分析。所有的人員若按照框架的思想來分析事務,那么就能將它劃分為同樣的構件,采用相似的解決方法,從而使采用同一框架的分析人員之間能進行溝通。
?
目前的主流的系統(tǒng)開發(fā)框架大都提供了對數(shù)據(jù)持久性、事務、安全性、負載均衡、應用集成等問題的現(xiàn)成的解決方案,因此采用框架技術進行軟件開發(fā)的主要優(yōu)點包括:
?
(1)????
領域內的軟件結構一致性好;
(2)????
建立更加開放的系統(tǒng);
(3)????
重用代碼大大增加,軟件生產效率和質量也得到了提高;
(4)????
軟件設計人員要專注于對領域的了解,使需求分析更充分;
(5)????
存儲了經驗,可以讓那些經驗豐富的人員去設計框架和領域構件,而不必限于低層編程;
(6)????
允許采用快速原型技術;
(7)????
有利于在一個項目內多人協(xié)同工作;
(8)????
大粒度的重用使得平均開發(fā)費用降低,開發(fā)速度加快,開發(fā)人員減少,維護費用降低,而參數(shù)化框架使得適應性、靈活性增強。
MVC(Model-View-Controller
,模型
-
視圖
-
控制器
)
設計模式是一種
基于請求-響應
(Request
-
Response)
模式的應用框架。
Struts
是
Apache Software Foundation
針對
MVC
設計模式開發(fā)的運行于
Server
端開源項目。
Struts
基于
Java Servlet/JavaServer Pages
技術,試圖提供一種能夠分離表現(xiàn)層,并且允許表現(xiàn)層獨立于傳輸層和數(shù)據(jù)持久層的開源框架。自
Struts
發(fā)布之日起,它就受到開源社區(qū)的歡迎和廣泛支持,也日益成為開源社區(qū)的一個備受矚目的項目。
MVC
結構的框架的組成部分包括以下的內容:
l???????
模型
(Model)
???
模型包含了應用程序的核心,它封裝了應用程序的數(shù)據(jù)結構和事務邏輯,集中體現(xiàn)了應用程序的狀態(tài)。有時候僅包含狀態(tài)信息,因為它并不了解視圖或控制器的信息。
JavaBean
很適合扮演這個角色,因為其能夠處理絕大部分事務邏輯和數(shù)據(jù)結構,還能與數(shù)據(jù)庫或文件系統(tǒng)進行交互,承擔維護應用程序數(shù)據(jù)的責任。
l???????
視圖
(View)
???
視圖實現(xiàn)模塊的外觀,它是應用程序的外在表現(xiàn)。它可以訪問模型的數(shù)據(jù),卻不了解模型的情況,同時它也不了解控制器的情況。當模型發(fā)生改變時,視圖會得到通知,它可以訪問模型的數(shù)據(jù),但不能改變這些數(shù)據(jù)。
Web
界面的開發(fā)人員不需要了解或關心數(shù)據(jù)庫發(fā)生什么事情,或者事務邏輯進行了什么操作,他只需要掌握
HTML
的知識,而不需要深入了解
Java
。
JSP
頁面適合完成這個功能,因為它只包含很少的非
HTML
代碼。
l???????
控制器
(Controller)
控制器控制整個框架中各個組件的協(xié)調工作,對用戶的輸入做出反應,并且將模型和視圖聯(lián)系在一起,它創(chuàng)建并設置模塊。
Servlet
能夠接受客戶端的
HTTP
請求,并且根據(jù)需要創(chuàng)建所需的
JavaBeans
,然后將模塊產生的變化通知給視圖。
Model
、
View
、
Controller
這三類組件各自的責任以及它們之間的關系如圖
1
所示。
實現(xiàn)
MVC
設計模式的系統(tǒng)通常會包括業(yè)務邏輯層、數(shù)據(jù)邏輯層。
業(yè)務邏輯層
(Business Logic)
:這是
FrameWork
所要解決問題的關鍵;對框架本身來說,這里僅僅只是概念和幾個提供服務的基礎組件,真正的實現(xiàn)與客戶的業(yè)務邏輯接軌,還需要開發(fā)人員在框架上再次擴展;
數(shù)據(jù)邏輯層
(Data Logic)
:絕大部分應用系統(tǒng)都需要涉及到數(shù)據(jù)交互,這一層主要包括了數(shù)據(jù)邏輯和數(shù)據(jù)訪問接口。在
MVC
結構的框架中,
Model
組件用于描述應用程序中的數(shù)據(jù)以及操作該數(shù)據(jù)的方法,與用戶界面無關;
View
組件負責將數(shù)據(jù)展現(xiàn)給用戶;
Controller
組件將用戶操作翻譯為對
Model
組件的操作;接到
Controller
傳來的操作之后,
Model
再更新
View
,以及反映出數(shù)據(jù)的變化。
在
MVC
框架下的
Web
應用系統(tǒng)中,由于
HTTP
本身缺乏狀態(tài)信息,客戶端必須對服務器進行再查詢才能發(fā)現(xiàn)由輸入所造成的改變,在這種情況下,控制器不能將應用程序的改變通知視圖。一般情況下,客戶端不得不再次查詢視圖才能看到更新后的情況,基于這樣的改進后的框架稱為
MVC
的模型
2
體系。
Struts
利用
Jsp
頁面、自定義的標簽庫、
Java Servlet
和
Action
等類來實現(xiàn)服務器端建模,并為
MVC
模式設計提供相應的組件。
2.2.1
Controller
控制器的作用是從客戶端接受請求,并且選擇執(zhí)行相應的業(yè)務邏輯,然后把響應結果送回到客戶端。在
Struts
中
Controller
功能由圖中
ActionServlet
和
ActionMapping
對象構成:核心是一個
Servlet
類型的對象
ActionServlet
,它用來接受客戶端的請求。
ActionServlet
包括一組基于配置的
ActionMapping
對象,每個
ActionMapping
對象實現(xiàn)了一個請求到一個具體的
Model
部分中
Action
處理器對象之間的映射。
2.2.2
Model
MVC
系統(tǒng)中的
Model
部分從概念上可以分為兩類
――
系統(tǒng)的內部狀態(tài)和改變系統(tǒng)狀態(tài)的動作。
Struts
為
Model
部分提供了
Action
和
ActionForm
對象:所有的
Action
處理器對象都是開發(fā)者從
Struts
的
Action
類派生的子類。
Action
處理器對象封裝了具體的處理邏輯,調用業(yè)務邏輯模塊,并且把響應提交到合適的
View
組件以產生響應。
Struts
提供的
ActionForm
組件對象,它可以通過定義屬性描述客戶端表單數(shù)據(jù)。開發(fā)者可以從它派生子類對象,利用它和
Struts
提供的自定義標記庫結合可以實現(xiàn)對客戶端的表單數(shù)據(jù)的良好封裝和支持,
Action
處理器對象可以直接對它進行讀寫,而不再需要和
request
、
response
對象進行數(shù)據(jù)交互。通過
ActionForm
組件對象實現(xiàn)了對
View
和
Model
之間交互的支持。
2.2.3
View
Struts
應用中的
View
部分是通過
JSP
技術實現(xiàn)的。
Struts
提供了自定義的標簽庫可以使用,通過這些自定義標簽可以非常好地和系統(tǒng)的
Model
部分交互,通過使用這些自定義標簽創(chuàng)建的
JSP
表單,可以實現(xiàn)和
Model
部分中的
ActionForm
的映射,完成對用戶數(shù)據(jù)的封裝,同時這些自定義標簽還提供了像模板定制等多種顯示功能。
Struts
框架的處理流程清楚的體現(xiàn)了
MVC
系統(tǒng)的特點,簡單的
Struts
組件結構如左圖
3
所示。
Struts Controller ActionServlet
處理客戶請求,利用配置的
ActionMapping
對象把請求映射到
Action
處理器對象進行處理。
Action
處理對象訪問
ActionForm
中的數(shù)據(jù),處理和響應客戶請求,它還調用后臺的
Bean
組件,這些組件封裝了具體的業(yè)務邏輯。
Action
處理器對象根據(jù)處理結果通知
Controller
,
Controller
進行下一步的處理。
在利用
Struts
框架進行
MVC
開發(fā)的時候,我們采用如下開發(fā)流程:
(1)????
收集和定義應用需求。
(2)????
基于數(shù)據(jù)采集和顯示的原則定義和開發(fā)
"
屏幕顯示
"
需求。
(3)????
為每一個
"
屏幕顯示
"
定義訪問路徑。
(4)????
定義
ActionMappings
建立到應用業(yè)務邏輯之間的聯(lián)系。
(5)????
開發(fā)滿足
"
屏幕顯示
"
需求的所有支持對象。
(6)????
基于每一個
"
屏幕顯示
"
需求提供的數(shù)據(jù)屬性來創(chuàng)建對應的
ActionForm
對象。
(7)????
開發(fā)被
ActionMapping
調用的
Action
對象。
(8)????
開發(fā)應用業(yè)務邏輯對象
(Bean
,
EJB
,等等
)
。
(9)????
對應
ActionMapping
設計的流程創(chuàng)建
JSP
頁面。
(10)
建立合適的配置文件
struts-config.xml
,
web.xml
。
(11)
開發(fā)
/
測試
/
部署。
posted on 2005-01-27 14:41
eamoi 閱讀(4296)
評論(2) 編輯 收藏 所屬分類:
Java 、
畢業(yè)設計文檔