Struts的工作流程:對于采用Struts框架的web應用,在web應用啟動時會加載并初始化ActionServlet,ActionServlet從struts-config.xml中讀取配置信息,把它們存放到各種配置對象中,例如把Action的映射信息存放在ActionMapping對象中。當ActionServlet接收到客戶請求時,執行以下流程:
1.檢索和用戶請求匹配的ActionMapping實例,如果不存在,就返回用戶請求路徑無效信息;
2.如果ActionForm實例不存在,就創建一個ActionForm對象并在其中保存客戶提交的表單內容;
3.根據配置信息決定是否調用ActionForm的validate()方法;
4.如果ActionForm的validate()方法返回null或返回一個不包含ActionMessage的ActionErrors對象,就表示表單驗證成功;
5.ActionServlet根據ActionMapping實例包含的映射信息將請求轉發給Action(如果Action實例不存在,就先創建Action實例),然后調用Action的excute()方法;
6.Action的excute()方法返回一個ActionForward對象,ActionServlet再把客戶請求轉發給ActionForward對象指向的JSP組件;
7.ActionForward對象指向的JSP組件生成動態網頁,返回給客戶。
對于以上流程4,如果ActionForm的validate()方法返回一個或多個包含ActionMessage的ActionErrors對象,就表示表單驗證失敗,此時ActionServlet將直接把請求轉發給包含用戶提交表單的JSP組件。