- 服務啟動的時候,ServletDispatcher 通過DefaultConfiguration 先加載webwork.properties 和default.properties ,并查找webwork.properties 中webwork.custom.properties 配置的其他屬性文件加載。加載完畢后再通過屬性中配置的webwork.custom.i18n.resources 加載國際化資源文件供以后使用。之后再查找webwork.configuration 屬性看是否用戶指定了自己的Configuration 實現,如果有就用用戶自己的Configuration 實現,否則返回WebWork自己的實現(DelegatingConfiguration)。大部分情況下,使用WebWork 自己的實現已經足夠,用戶不需要自己去實現一個Configuration,除非你想加載XML 等格式的配置文件。
- 每一個以*.action 結尾的請求,都會被映射到ServletDispatcher 調度器的service 方法進行處理。首先把init 方法讀取的encoding 、locale 配置設置到request 和response 中,之后對request 進行判斷,看是否屬于多類型參數(multipart/formdata)的請求,如果是,則根據WebWrok 配置信息對request 進行相應的包裝。包裝完request 對象后,service 方法又調用了ServletDispatche日、 自身的serviceAction 方法,在該方法中調用了createContextMap創建Action 上下文,并通過ActionProxyFactory 創建ActionProxy 實例,ActionProxy又會調用ConfigurationManager 去讀取XWork 的配置信息并獲得當前請求的Action 的所有配置信息,之后遍歷執行這個Action 對應的所有攔截器,然后執行Action 對應的方法(默認的是execute),再根據Action 執行返回的值去調用執行相應的Result(返回結果處理)的方法做一定的處理后,把輸出結果返回給客戶端。
- ActionContext
xwork框架的ActionContext是Action執行時的上下文,存放Action執行時需要用到的對象。在使用webwork時,其中放有Parameter、Session、ServletContext、Locale等信息。這樣,webwork負責將Servlet相關數據轉換為與ServletAPI無關的Map對象(即ActionContext),使得xwork的Action實現與web層、邏輯層與表現層的解耦。 -
ServletActionContext
提供直接與Servlet容器交互的途徑。通過它,可以取得HttpServletRequest、HttpServletResponse 、ServletConfig、ServletContext、PageContext 對象。但是,使用ServletActionContext意味著Action與ServletAPI的緊密耦合。