Struts2內部執行過程
首先是Struts2的流程圖。
一、當有一個請求的時候。執行以下流程。
1 客戶端初始化一個指向Servlet容器的請求;
2 這個請求經過一系列的過濾器(Filter)(這些過濾器中有一個叫做ActionContextCleanUp的可選過濾器,這個過濾器對於Struts2和其他框架的集成很有幫助,例如:SiteMesh Plugin)。
3 接著FilterDispatcher被調用,FilterDispatcher詢問ActionMapper來決定這個請是否需要調用某個Action。(註:在Struts2的被StrutsPrepareAndExecuteFilter替換)
4 如果ActionMapper決定需要調用某個Action,FilterDispatcher把請求的處理交給ActionProxy。
5 ActionProxy通過Configuration Manager詢問框架的配置文件,找到需要調用的Action類。
6 ActionProxy創建一個ActionInvocation的實例。
7 ActionInvocation實例使用命名模式來調用,在調用Action的過程前後,涉及到相關攔截器(Intercepter)的調用。
8 一旦Action執行完畢,ActionInvocation負責根據struts.xml中的配置找到對應的返回結果。返回結果通常是(但不總是,也可 能是另外的一個Action鏈)一個需要被表示的JSP或者FreeMarker的模版。
Then:
在之前說過的使用Struts2框架實現用戶登錄的功能,使用Struts2標簽和OGNL表達式簡化了視圖的開發,並且利用Struts2提供的特性對輸入的數據進行驗證,以及訪問Servlet API時實現用戶會話跟蹤,其簡單的程序運行流程圖
login.jsp>>StrutsPrepareAndExecuteFilter>>Action>>Result>>success.jsp
下面通過分析登錄程序,帶領大家深入了解Struts2.
分析登錄程序
為了實現用戶登錄的功能,需要經過以下幾個步驟:
(1)獲取Struts2資源
(2)在應用程序中導入Struts2的類庫
(3)在web.xml文件中配置其核心控制器StrutsPerpareAndExecuteFilter,用於對框架進行初始化,以及處理所有的請求。
(4)編寫Action類並進行配置。
(5)配置返回結果與物理視圖資源的關系。
(6)編寫返回視圖
眾所周知,Struts2框架是基於MVC模式的。基於MVC模式框架的核心就是控制器對所有請求進行統一處理。Struts2的控制器StrutsPrepareAndExecuteFilter由Servlet API中的Filter充當,當Web容器接收到登錄的請求後,將請求交給在web.xml中的配置的過濾器StrutsPrepareAndExecuteFilter。
Struts2內部執行過程