struts1工作原理

struts1的工作原理圖:

 

struts1的工作原理

 

  1.初始化:struts框架的總控制器ActionServlet是一個Servlet,它在web.xml中配置成自動啓動的

            Servlet,在啓動時總控制器會讀取配置文件(struts-config.xml)的配置信息,爲struts

            中不同的模塊初始化相應的對象。(面向對象思想)

  2.發送請求:用戶提交表單或通過URL向WEB服務器提交請求,請求的數據用HTTP協議傳給web服務器。

  3.form填充:struts的總控制器ActionServlet在用戶提交請求時將數據放到對應的form對象中的成員

              變量中。

  4.派發請求:控制器根據配置信息對象ActionConfig將請求派發到具體的Action,對應的formBean一併

              傳給這個Action中的excute()方法。

  5.處理業務:Action一般只包含一個excute()方法,它負責執行相應的業務邏輯(調用其它的業務模塊)

              完畢後返回一個ActionForward對象。服務器通過ActionForward對象進行轉發工作。

  6.返回響應:Action將業務處理的不同結果返回一個目標響應對象給總控制器。

  7.查找響應:總控制器根據Action處理業務返回的目標響應對象,找到對應的資源對象,一般情況下

              爲jsp頁面。

  8.響應用戶:目標響應對象將結果傳遞給資源對象,將結果展現給用戶

 

 

 

 

 

ActionServlet是一個FrontController,它是一個標準的Servlet,它將request轉發給RequestProcessor來處理,

  ActionMapping是ActionConfig的子類,實質上是對struts-config.xml的一個映射,從中可以取得所有的配置信息

  RequestProcessor根據提交過來的url,如*.do,從ActionMapping 中得到相應的ActionForn和Action。然後將request的參數對應到ActionForm中,進行form驗證。如果驗證通過則調用Action的execute()方法來執行Action,最終返回ActionFoward。

  ActionFoward是對mapping中一個foward的包裝,對應於一個url

  ActionForm使用了ViewHelper模式,是對HTML中form的一個封裝。其中包含有validate方法,用於驗證form數據的有效性。ActionForm是一個符合JavaBean規範的類,所有的屬性都應滿足get和set對應。對於一些複雜的系統,還可以採用DynaActionForm來構造動態的Form,即通過預製參數來生成Form。這樣可以更靈活的擴展程序。

  ActionErrors是對錯誤信息的包裝,一旦在執行action或者form.validate中出現異常,即可產生一個ActionError並最終加入到ActionErrors。在Form驗證的過程中,如果有Error發生,則會將頁面重新導向至輸入頁,並提示錯誤。

  Action是用於執行業務邏輯的RequsestHandler。每個Action都只建立一個instance。Action不是線程安全的,所以不應該在Action中訪問特定資源。一般來說,應改使用 Business Delegate 模式來對Business tier進行訪問以解除耦合

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