Struts的工作流程

  對于采用Struts框架的Web應用,在Web應用啟動時就會加載兵初始化ActionServlet,ActionServlet從struts- config.xml文件中讀取配置信息,把它們存放到各種配置對象中,例如Action的映射信息存放在ActionMapping對象中。

  當ActionServlet接受到一個客戶請求時,將執行如下流程。

流程:

 (1)減縮和用戶請求匹配的ActionMapping實例,如果不存在,就返回用戶請求路徑無效的信息。
 (2)如果ActionForm實例不存在,就創建一個ActionForm對象,把客戶提交的表單數據保存到ActionForm對象中。
 (3)根據配置信息決定是否需要表單驗證。如果需要驗證,就調用ActionForm的validate()方法。
 (4)如果ActionForm的validate()方法返回null或返回一個不包含ActionMessage的ActionErrors對象,就表示表單驗證成功。
 (5)ActionServlet根據ActionMapping實例包含的映射信息決定將請求轉發給哪個Action。如果相應的Action實例不存在,就先創建這個實例,然后調用Action的execute()方法。
 (6)Action的execute()方法返回一個ActionForward對象,ActinoServlet再把客戶請求轉發給ActionForward對象只想的JSP組件。
 (7)ActionForward對象指向的JSP組件生成動態網頁,返回給客戶。

  對于以上流程的流程(4),如果ActionForm的validate()方法返回一個或多個ActionMessage的ActionErrors對 象,就表示表單驗證失敗,此時ActionServlet將直接把請求轉發給包含用戶提交表單的JSP組件。再這種情況下,不會再創建Action對象并 調用Action的execute()方法。



     --以上文字摘自孫衛琴,《精通Struts:基于MVC的Java Web設計與開發》




                                             2005年03月30日 12:25 AM