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