Struts2源碼閱讀(一)_Struts2框架流程概述

 

1. Struts2架構圖html

請求首先經過Filter chain,Filter主要包括ActionContextCleanUp,它主要清理當前線程的ActionContext和Dispatcher;FilterDispatcher主要經過AcionMapper來決定須要調用哪一個Action。
        ActionMapper取得了ActionMapping後,在Dispatcher的serviceAction方法裏建立ActionProxy,ActionProxy建立ActionInvocation,而後ActionInvocation調用Interceptors,執行Action自己,建立Result並返回,固然,若是要在返回以前作些什麼,能夠實現PreResultListener。

2. Struts2部分類介紹
這部分從Struts2參考文檔中翻譯就能夠了。
ActionMapper
        ActionMapper實際上是HttpServletRequest和Action調用請求的一個映射,它屏蔽了Action對於Request等java Servlet類的依賴。Struts2中它的默認實現類是DefaultActionMapper,ActionMapper很大的用處能夠根據本身的須要來設計url格式,它本身也有Restful的實現,具體能夠參考文檔的docs/actionmapper.html。
ActionProxy&ActionInvocation
        Action的一個代理,由ActionProxyFactory建立,它自己不包括Action實例,默認實現DefaultActionProxy是由ActionInvocation持有Action實例。ActionProxy做用是如何取得Action,不管是本地仍是遠程。而ActionInvocation的做用是如何執行Action,攔截器的功能就是在ActionInvocation中實現的。
ConfigurationProvider&Configuration
        ConfigurationProvider就是Struts2中配置文件的解析器,Struts2中的配置文件主要是尤爲實現類XmlConfigurationProvider及其子類StrutsXmlConfigurationProvider來解析。

3. Struts2請求流程
一、客戶端發送請求
二、請求先經過ActionContextCleanUp-->FilterDispatcher
三、FilterDispatcher經過ActionMapper來決定這個Request須要調用哪一個Action
四、若是ActionMapper決定調用某個Action,FilterDispatcher把請求的處理交給ActionProxy,這兒已經轉到它的Delegate--Dispatcher來執行
五、ActionProxy根據ActionMapping和ConfigurationManager找到須要調用的Action類
六、ActionProxy建立一個ActionInvocation的實例
七、ActionInvocation調用真正的Action,固然這涉及到相關攔截器的調用
八、Action執行完畢,ActionInvocation建立Result並返回,固然,若是要在返回以前作些什麼,能夠實現PreResultListener。添加PreResultListener能夠在Interceptor中實現。java

Come From:http://qidaoxp.javaeye.com/blog/492295架構

相關文章
相關標籤/搜索