Struts2源码阅读(一)_Struts2框架流程概述
1. Struts2架構圖
請求首先通過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請求流程?
1、客戶端發送請求?
2、請求先通過ActionContextCleanUp-->FilterDispatcher?
3、FilterDispatcher通過ActionMapper來決定這個Request需要調用哪個Action?
4、如果ActionMapper決定調用某個Action,FilterDispatcher把請求的處理交給ActionProxy,這兒已經轉到它的Delegate--Dispatcher來執行?
5、ActionProxy根據ActionMapping和ConfigurationManager找到需要調用的Action類?
6、ActionProxy創建一個ActionInvocation的實例?
7、ActionInvocation調用真正的Action,當然這涉及到相關攔截器的調用?
8、Action執行完畢,ActionInvocation創建Result并返回,當然,如果要在返回之前做些什么,可以實現PreResultListener。添加PreResultListener可以在Interceptor中實現。
總結
以上是生活随笔為你收集整理的Struts2源码阅读(一)_Struts2框架流程概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java并发编程实战~Lock
- 下一篇: strut2 相关