struts1.x原理與應用(一)

 一、通過順序圖剖析sturts執行流程.


由上圖可以struts1.x對請求的處理過程:

     1、默認情況下,*.do請求都將交給struts框架處理,首先會由控制器ActionServlet攔截請求,在處理請求前會做一些初始化的工作,然後再轉交給請求處理器RequestProcessor處理.

     2、RequestProcessor根分析請求url,在配置文件struts-config.xml中找到相對應的ActionForm,實例化ActionForm並根據類的反射填充ActionForm,將表單元素值封裝成一個ActionForm對象.

     3、對ActionForm對象每個成員屬性進行校驗,校驗失敗將直接返回<action />的input屬性所指定的頁面。如果校驗成功就往下執行.

     4、RequestProcessor實例化Action並調用Action的execute方法。對於某一些action可能還會進行業務邏輯校驗。
     5、業務邏輯校驗通過後,返回一個ActionForward對象並轉發到該對象指定的一個成功頁面。


二、RequestProcessor的處理過程

     RequestProcessor是處理請求的核心類,處理請求步驟如下 :

          1、調用processPath()方法, 確定選擇將要處理的動作的路徑,如:/login.do,就會取出/login字符串,賦值給變量path.

          2、調用processMapping()方法,根據path路徑,在配置文件struts-config.xml找到與之對應的action映射,並返回一個ActionMapping的對象,該類封裝了<action />裏的屬性值的方法,如validate、scope等屬性的值.
          3、調用processActionForm()方法,根據ActionMapping的對象新建一個Form Bean 或從請求會話中檢索Form Bean。

          4、調用processPopulate()方法,填充與請求關聯的Form Bean (即把表單元素的數據封裝成一個ActionForm對象).

          5、調用processValidate()方法,校驗form bean數據是否合法.    
          6、調用processActionCreate()方法,實例化當前ActionMapping關聯的類的實例.

          7、調用processActionPerform()方法,內部將調用action的execute() 方法,執行完後將返回ActionForward對象所指定的頁面.

發佈了15 篇原創文章 · 獲贊 3 · 訪問量 2108
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章