struts2並不是乙個陌生的web框架,它是以webwork的設計思想為核心,吸收struts1的優點,可以說
struts2是struts1和webwork結合的產物。
struts2 的工作原理圖:
乙個請求在struts2框架中的處理分為以下幾個步驟:
1.客戶端發出乙個指向servlet容器的請求(tomcat);
2.這個請求會經過圖中的幾個過濾器,最後會到達filterdispatcher過濾器。
3.過濾器filterdispatcher是struts2框架的心臟,在處理使用者請求時,它和請求一起相互配合訪問struts2
的底層框架結構。在web容器啟動時,struts2框架會自動載入配置檔案裡相關引數,並轉換成相應的類。
需要用到的action。
4.如果找到需要呼叫的action,過濾器會把請求的處理交給actionproxy。actionproxy為action的**物件
。actionproxy通過configurationmanager詢問框架的配置檔案,找到需要呼叫的action類。
5.actionproxy建立乙個actioninvocation的例項。actioninvocation在actionproxy層之下,它表示了
action的執行狀態,或者說它控制的action的執行步驟。它持有action例項和所有的interceptor。
6.actioninvocation例項使用命名模式來呼叫,1. actioninvocation初始化時,根據配置,載入action相
關的所有interceptor。2. 通過actioninvocation.invoke方法呼叫action實現時,執行interceptor。在
呼叫action的過程前後,涉及到相關***(intercepetor)的呼叫。
7. 一旦action執行完畢,actioninvocation負責根據struts.xml中的配置找到對應的返回結果。返回結果
通常是(但不總是,也可能是另外的乙個action鏈)乙個需要被表示的jsp或者freemarker的模版。在表
示的過程中可以使用struts2 框架中繼承的標籤。
簡單地說:客戶端發出乙個請求,伺服器端 strutspreparedandexceutefilter接收請求,如果該請求是乙個以 .action 結尾請求,則struts2將請求**至相應的action,進行資料型別轉換,如果資料型別轉換出錯,則返回到 input 指定的結果頁面,如果資料型別轉換沒有出錯,則呼叫setxx 方法進行設值,如果使用了validate()驗證方法(或者是使用了驗證框架),則進行相應的驗證,如果驗證出錯,回到 input 指定的結果頁面,如果沒有使用驗證,或者驗證沒有出錯,則執行 execute() 方法,返回到相應的頁面
Struts2 工作原理
1 客戶端初始化乙個指向servlet容器 例如tomcat 的請求 2 這個請求經過一系列的過濾器 filter 這些過濾器中有乙個叫做actioncontextcleanup的可選過濾器,這個過濾器對於struts2和其他框架的整合很有幫助,例如 sitemesh plugin 5 action...
struts2 工作原理
struts2並不是乙個陌生的web框架,它是以webwork的設計思想為核心,吸收struts1的優點,可以說 struts2是struts1和webwork結合的產物。struts2 的工作原理圖 乙個請求在struts2框架中的處理分為以下幾個步驟 1.客戶端發出乙個指向servlet容器的請...
struts2工作原理
struts2工作原理 程式設計原理 使用者傳送http請求 web伺服器 tomcat 載入web.xml web部署描述檔案 檔案 執行struts核心控制器 strutsprepareandexecutefilter或者filterdispatcher 載入struts.xml檔案,通過請求a...