一、
Struts
的與
Web App
的關(guān)系
???? struts叫做web framework,其主要基于web層的應(yīng)用系統(tǒng)開發(fā)。按照J2EE Architecture的標(biāo)準(zhǔn),struts應(yīng)當(dāng)和jsp/servlet一樣,存在于web container一層。
二、
Struts
的體系結(jié)構(gòu)
?????? 我們說struts framework是MVC 模式的體現(xiàn),下面我們就從分別從模型、視圖、控制來看看struts的體系結(jié)構(gòu)(Architecture)。下圖顯示了struts framework的體系結(jié)構(gòu)響應(yīng)客戶請(qǐng)求時(shí)候,各個(gè)部分工作的原理。
1、
從視圖角度(
View
)
首先,
Struts
提供了
Java
類
org. apache.struts.action.ActionForm
,
Java
開發(fā)者將該類細(xì)分來創(chuàng)建表單
bean
。在運(yùn)行時(shí),該
bean
有兩種用法:
―?
當(dāng)
JSP
準(zhǔn)備相關(guān)的
HTML
,表單以進(jìn)行顯示時(shí),
JSP
將訪問該
bean(
它保存要放入表單中的值
)
。那些值是從業(yè)務(wù)邏輯或者是從先前的用戶輸入來提供的。
????????? ―?
當(dāng)從
Web
瀏覽器中返回用戶輸入時(shí),該
bean
將驗(yàn)證并保存該輸入以供業(yè)務(wù)邏輯或
(
如果驗(yàn)證失敗的話
)
后續(xù)重新顯示使用。
其次,
Struts
提供了許多定制
JSP
標(biāo)記,它們的使用簡(jiǎn)單,但是它們?cè)陔[藏信息方面功能強(qiáng)大。例如,除了
bean
名稱和給定
bean
中每個(gè)段的名稱之外,頁面設(shè)計(jì)者不需要知道有關(guān)表單
bean
的更多信息。
2、
從模型角度(
Model
)
Struts
雖然不直接有助于模型開發(fā)。
在Struts中,系統(tǒng)
模型
的狀態(tài)主要由ActiomForm Bean和值對(duì)象體現(xiàn)。
3、
從控制器角度(
Controller
)
???
在Struts framework中, Controller主要是ActionServlet,但是對(duì)于業(yè)務(wù)邏輯的操作則主要由Action、ActionMapping、ActionForward這幾個(gè)組件協(xié)調(diào)完成(也許這幾個(gè)組件,應(yīng)該劃分到模型中的業(yè)務(wù)邏輯一塊)。其中,Action扮演了真正的控制邏輯的實(shí)現(xiàn)者,而ActionMapping和ActionForward則指定了不同業(yè)務(wù)邏輯或流程的運(yùn)行方向。
?
三、基本組件包
整個(gè)struts大約有15包,近200個(gè)類所組成,而且數(shù)量還在不斷的擴(kuò)展。在此我們不能一一介紹,只能列舉幾個(gè)主要的簡(jiǎn)要的介紹一下。下表說明了目前struts api中基本的幾個(gè)組件包,包括action,actions,config,util,taglib,validator。下圖則顯現(xiàn)了這幾個(gè)組件包之間的關(guān)系。其中action是整個(gè)struts framework的核心
org.apache.struts.action
|
基本上,控制整個(gè)struts framework的運(yùn)行的核心類、組件都在這個(gè)包中,比如我們上面提到的控制器ActionServlet。已經(jīng)Action,ActionForm,ActionMapping等等。struts1.1比1.0多了 DynaActionForm 類。增加了動(dòng)態(tài)擴(kuò)展生成FormBean功能
|
org.apache.struts.actions
|
這個(gè)包是主要作用是提供客戶的http請(qǐng)求和業(yè)務(wù)邏輯處理之間的特定適配器轉(zhuǎn)換功能,而1.0版本中的部分動(dòng)態(tài)增刪FromBean的類,也在struts1.1中被Action包的DynaActionForm組件所取代
|
org.apache.struts.config
|
提供對(duì)配置文件struts-config.xml元素的映射。這也是sturts1.1中新增的功能
|
org.apache.struts.util
|
Strtuts
為了更好支持web application的應(yīng)用,體統(tǒng)了一個(gè)些常用服務(wù)的支持,比如Connection Pool和Message Source。詳細(xì)信息請(qǐng)參考
http://jakarta.apache.org/struts/api/org/apache/struts/util/package-summary.html
|
org.apache.struts.taglib
|
這不是一個(gè)包,而是是一個(gè)客戶標(biāo)簽類的集合。下面包括Bean Tags,HTML Tags,Logic Tags,Nested Tags,Template Tags這幾個(gè)用于構(gòu)建用戶界面的標(biāo)簽類。
|
org.apache.struts.validator
|
Struts1.1 framework
中增加了validator framework,用于動(dòng)態(tài)的配置from表單的驗(yàn)證。詳細(xì)信息請(qǐng)參閱 http://home.earthlink.net/~dwinterfeldt/
|
?
?