Struts 執行流程

當Web容器收到 請求(HttpServletRequest)
1、它將請求傳遞給一個標準的的過濾鏈包括 (ActionContextCleanUp)過濾器
這裏寫圖片描述
請求被提交到一系列(主要是三層)的過濾器(Filter),如(ActionContextCleanUp、其他過濾器(SiteMesh等)、 FilterDispatcher)。注意這裏是有順序的,先ActionContextCleanUp,再其他過濾器(SiteMesh等)、最後到 FilterDispatcher。

 1.在過濾器中運行順序:FilterDispatcher詢問**ActionMapper**是否需要調用某個Action來處理這個(request)請求,如果**ActionMapper**決定需要調用某個Action,FilterDispatcher把請求的處理交給**ActionProxy**。 
 2.**ActionProxy**通過**ActionMapping**和Configuration Manager(struts.xml)詢問框架的配置文件,找到需要調用的Action類.  
 3.ActionProxy 創建一個ActionInvocation的實例,同時ActionInvocation通過代理模式調用Action。但在調用之前 ActionInvocation會根據配置加載Action相關的所有Interceptor(攔截器)。 
 4.Interceptor 的調度流程大致如下: 
          1. ActionInvocation初始化時,根據配置,加載Action相關的所有Interceptor。 
          2. 通過ActionInvocation.invoke方法調用Action實現時,執行Interceptor。  
          3. 一旦Action執行完畢,ActionInvocation負責根據struts.xml中的配置找到對應的返回結果 

ActionMapper
其實是HttpServletRequest和Action調用請求的一個映射,它屏蔽了Action對於Request等 Java Servlet類的依賴。Struts2中它的默認實現類是DefaultActionMapper,ActionMapper很大的用處可以根據自己的需要來設計url格式,它自己也有Restful的實現,具體可以參考文檔的docs\actionmapper.html。

ctionProxy&ActionInvocation

    ActionProxy是Action的一個代理,由ActionProxyFactory創建,它本身不包括Action實例,默認實現類是DefaultActionProxy是由ActionInvocation持有Action實例。ActionProxy作用是如何取得Action,無論是本地還是遠程。而 ActionInvocation的作用是如何執行Action,攔截器的功能就是在ActionInvocation中實現的。 

ConfigurationProvider&Configuration

      ConfigurationProvider就是Struts2中配置文件的解析器,Struts2中的配置文件主要是尤其實現類 XmlConfigurationProvider及其子類StrutsXmlConfigurationProvider來解析。  

詳解:http://blog.csdn.net/csh624366188/article/details/7490638

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章