天天看點

淺談Webwork2執行流程

1.服務啟動的時候,ServletDispatcher 通過DefaultConfiguration 先加載 webwork.properties 和default.properties ,并查找 webwork.properties 中 webwork.custom.properties 配置的其他屬性檔案加載。加載完畢後再通過屬性中配置的 webwork.custom.i18n.resources 加載國際化資源檔案供以後使用。之後再查找 webwork.configuration 屬性看是否使用者指定了自己的Configuration 實作,如果有就用使用者自己的Configuration 實作,否則傳回 WebWork自己的實作(DelegatingConfiguration)。大部分情況下,使用 WebWork 自己的實作已經足夠,使用者不需要自己去實作一個Configuration,除非你想加載XML 等格式的配置檔案。  

2.每一個以*.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(傳回結果處理)的方法做一定的處理後,把輸出結果傳回給用戶端。

繼續閱讀