Struts的工作流程:對(duì)于采用Struts框架的web應(yīng)用,在web應(yīng)用啟動(dòng)時(shí)會(huì)加載并初始化ActionServlet,ActionServlet從struts-config.xml中讀取配置信息,把它們存放到各種配置對(duì)象中,例如把Action的映射信息存放在ActionMapping對(duì)象中。當(dāng)ActionServlet接收到客戶請(qǐng)求時(shí),執(zhí)行以下流程:

1.檢索和用戶請(qǐng)求匹配的ActionMapping實(shí)例,如果不存在,就返回用戶請(qǐng)求路徑無效信息;

2.如果ActionForm實(shí)例不存在,就創(chuàng)建一個(gè)ActionForm對(duì)象并在其中保存客戶提交的表單內(nèi)容;

3.根據(jù)配置信息決定是否調(diào)用ActionForm的validate()方法;

4.如果ActionForm的validate()方法返回null或返回一個(gè)不包含ActionMessage的ActionErrors對(duì)象,就表示表單驗(yàn)證成功;

5.ActionServlet根據(jù)ActionMapping實(shí)例包含的映射信息將請(qǐng)求轉(zhuǎn)發(fā)給Action(如果Action實(shí)例不存在,就先創(chuàng)建Action實(shí)例),然后調(diào)用Action的excute()方法;

6.Action的excute()方法返回一個(gè)ActionForward對(duì)象,ActionServlet再把客戶請(qǐng)求轉(zhuǎn)發(fā)給ActionForward對(duì)象指向的JSP組件;

7.ActionForward對(duì)象指向的JSP組件生成動(dòng)態(tài)網(wǎng)頁,返回給客戶。

對(duì)于以上流程4,如果ActionForm的validate()方法返回一個(gè)或多個(gè)包含ActionMessage的ActionErrors對(duì)象,就表示表單驗(yàn)證失敗,此時(shí)ActionServlet將直接把請(qǐng)求轉(zhuǎn)發(fā)給包含用戶提交表單的JSP組件。