Struts 控制流

下圖以UML時序圖的方式展示了Struts 請求-響應流程

我們來按這個請求-響應流程走一邊

n 客戶請求匹配Action URI樣式的路徑 

n 容器將請求傳遞給ActionServlet.

n 如果這個是模塊化應用,ActionServlet選擇響應的模塊。

n ActionServlet查詢路徑的映射。

n 如果映射標明瞭一個form bean,ActionServlet看是否已經有一個實例,或者創建一個新的實例。如果已經有一個form bean,ActionServlet重設它(reset),並根據HTTP請求重新組裝它。

n 如果mapping的validate屬性設置爲true,它將調用form bean的validate方法,如果驗證失敗,Servlet將控制轉發到input屬性標明的路徑,控制流終止。

n 如果mapping標明一個Action類型,如果它已經存在或已經實例化,它將被重用。 

n 接着Action的perform或execute方法被ActionServlet調用,並傳遞一個實例化的form bean或者null。

n Action可以組裝form bean,調用業務對象,以及其他需要做的事情。 

n Action返回一個ActionForward給ActionServlet。

n 如果ActionForward指向另一個Action URI,重新開始;否則,顯示頁面或者其他資源,流程結束。通常,結果是一個JSP頁面,或者Jasper,或其它類似技術 (非Struts)

n 如果JSP使用Struts HTML標記,並且在請求中看到正確的ActionForm,他們會從ActionForm中組裝HTML控件。否則,<html:form>標記將創建一個。從Struts1.1開始,如果form標記自行創建一個ActionForm,它將調用ActionForm的Reset方法。如果你只是想創建一個空白的表單,你可以使用標準的ForwardAction來通過Action傳遞控制,然後離開頁面。



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