1. 程式人生 > >Struts2內部執行過程

Struts2內部執行過程

free logs 根據 web容器 過濾 filter 了解 eight cleanup

首先是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內部執行過程