|
Struts 2是Struts的下一代產(chǎn)品,是在struts 1和WebWork的技術(shù)基礎(chǔ)上進(jìn)行了合并的全新的Struts 2框架。其全新的Struts 2的體系結(jié)構(gòu)與Struts 1的體系結(jié)構(gòu)差別巨大。Struts 2以WebWork為核心,采用攔截器的機(jī)制來處理用戶的請求,這樣的設(shè)計也使得業(yè)務(wù)邏輯控制器能夠與ServletAPI完全脫離開,所以Struts 2可以理解為WebWork的更新產(chǎn)品。雖然從Struts 1到Struts 2有著太大的變化,但是相對于WebWork,Struts 2的變化很小。
當(dāng)Web容器收到請求(HttpServletRequest)它將請求傳遞給一個標(biāo)準(zhǔn)的的過濾鏈包括(ActionContextCleanUp)過濾器,然后經(jīng)過Other filters(SiteMesh ,etc),接下來需要調(diào)用FilterDispatcher核心控制器,然后它調(diào)用ActionMapper確定請求哪個Action,ActionMapper返回一個收集Action詳細(xì)信息的ActionMaping對象。接下來FilterDispatcher將控制權(quán)委派給ActionProxy,ActionProxy調(diào)用配置管理器(ConfigurationManager) 從配置文件中讀取配置信息(struts.xml),然后創(chuàng)建ActionInvocation對象,ActionInvocation在調(diào)用Action之前會依次的調(diào)用所用配置攔截器(Interceptor N) 一旦執(zhí)行結(jié)果返回結(jié)果字符串ActionInvocation負(fù)責(zé)查找結(jié)果字符串對應(yīng)的(Result)然后執(zhí)行這個Result Result會調(diào)用一些模版(JSP)來呈現(xiàn)頁面,之后攔截器(Interceptor N)會在被執(zhí)行(順序和Action執(zhí)行之前相反)最后響應(yīng)(HttpServletResponse)被返回在web.xml中配置的那些過濾器和(核心控制器)(FilterDispatcher)。
|
|