Struts2 執行流程

struts2執行原理(執行流程)app

                                   

 

                                              

 

 

一個請求在Struts2框架中的處理大概分爲如下幾個步驟:框架

1 客戶端發送請求;(HttpServletRequest)
2 這個請求通過一系列的過濾器(Filter)(這些過濾器中有一個叫作ActionContextCleanUp的可選過濾器,這個過濾器對於Struts2和其餘框架的集成頗有幫助,例如:SiteMesh Plugin)
3 接着FilterDispatcher被調用,FilterDispatcher詢問ActionMapper來決定這個請是否須要調用某個ActionFilterDispatcher的功能以下:模塊化

        (1)執行Actions
        (2)清除ActionContext
        (3)維護靜態內容

        (4)清除request生命週期內的XWork的interceptors
測試

4 若是ActionMapper決定須要調用某個ActionFilterDispatcher把請求的處理交給ActionProxy
5 ActionProxy經過Configuration Manager詢問框架的配置文件,找到須要調用的Action
6 ActionProxy建立一個ActionInvocation的實例。
7 ActionInvocation實例使用命名模式來調用,在調用Action的過程先後,涉及到相關攔截器(Intercepter)的調用。
8 一旦Action執行完畢,ActionInvocation負責根據struts.xml中的配置找到對應的返回結果。返回結果一般是(但不老是,也可 能是另外的一個Action鏈)一個須要被表示的JSP或者FreeMarker的模版。在表示的過程當中能夠使用Struts2 框架中繼承的標籤。在這個過程當中須要涉及到ActionMapperspa

 

 

在上述過程當中全部的對象(Action,Results,Interceptors,等)都是經過ObjectFactory來建立的。插件

Struts2的目標很簡單--使Web開發變得更加容易。爲了達成這一目標,Struts2中提供了不少新特性,好比智能的默認設置、annotation的使用以及"慣例重於配置"原則的應用,而這一切都大大減小了XML配置。Struts2中的Action都是POJO,這一方面加強了Action自己的可測試性,另外一方面也減少了框架內部的耦合度,而HTML表單中的輸入項都被轉換成了恰當的類型以供action使用。開發人員還能夠經過攔截器(能夠自定義攔截器或者使用Struts2提供的攔截器)來對請求進行預處理和後處理,這樣一來,處理請求就變得更加模塊化,從而進一步減少耦合度。模塊化是一個通用的主題--能夠經過插件機制來對框架進行擴展;開發人員能夠使用自定義的實現來替換掉框架的關鍵類,從而得到框架自己所不具有的功能;能夠用標籤來渲染多種主題(包括自定義的主題);Action執行完畢之後,能夠有多種結果類型--包括渲染JSP頁面,Velocity和Freemarker模板,但並不只限於這些。3d

相關文章
相關標籤/搜索