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接受到一個(gè)客戶請(qǐng)求時(shí),將執(zhí)行如下流程。
流程:
(1)減縮和用戶請(qǐng)求匹配的ActionMapping實(shí)例,如果不存在,就返回用戶請(qǐng)求路徑無(wú)效的信息。
(2)如果ActionForm實(shí)例不存在,就創(chuàng)建一個(gè)ActionForm對(duì)象,把客戶提交的表單數(shù)據(jù)保存到ActionForm對(duì)象中。
(3)根據(jù)配置信息決定是否需要表單驗(yàn)證。如果需要驗(yàn)證,就調(diào)用ActionForm的validate()方法。
(4)如果ActionForm的validate()方法返回null或返回一個(gè)不包含ActionMessage的ActionErrors對(duì)象,就表示表單驗(yàn)證成功。
(5)ActionServlet根據(jù)ActionMapping實(shí)例包含的映射信息決定將請(qǐng)求轉(zhuǎn)發(fā)給哪個(gè)Action。如果相應(yīng)的Action實(shí)例不存在,就先創(chuàng)建這個(gè)實(shí)例,然后調(diào)用Action的execute()方法。
(6)Action的execute()方法返回一個(gè)ActionForward對(duì)象,ActinoServlet再把客戶請(qǐng)求轉(zhuǎn)發(fā)給ActionForward對(duì)象只想的JSP組件。
(7)ActionForward對(duì)象指向的JSP組件生成動(dòng)態(tài)網(wǎng)頁(yè),返回給客戶。
對(duì)于以上流程的流程(4),如果ActionForm的validate()方法返回一個(gè)或多個(gè)ActionMessage的ActionErrors對(duì) 象,就表示表單驗(yàn)證失敗,此時(shí)ActionServlet將直接把請(qǐng)求轉(zhuǎn)發(fā)給包含用戶提交表單的JSP組件。再這種情況下,不會(huì)再創(chuàng)建Action對(duì)象并 調(diào)用Action的execute()方法。
--以上文字摘自孫衛(wèi)琴,《精通Struts:基于MVC的Java Web設(shè)計(jì)與開(kāi)發(fā)》
2005年03月30日 12:25 AM
對(duì)于采用Struts框架的Web應(yīng)用,在Web應(yīng)用啟動(dòng)時(shí)就會(huì)加載兵初始化ActionServlet,ActionServlet從struts- config.xml文件中讀取配置信息,把它們存放到各種配置對(duì)象中,例如Action的映射信息存放在ActionMapping對(duì)象中。
當(dāng)ActionServlet接受到一個(gè)客戶請(qǐng)求時(shí),將執(zhí)行如下流程。
流程:
(1)減縮和用戶請(qǐng)求匹配的ActionMapping實(shí)例,如果不存在,就返回用戶請(qǐng)求路徑無(wú)效的信息。
(2)如果ActionForm實(shí)例不存在,就創(chuàng)建一個(gè)ActionForm對(duì)象,把客戶提交的表單數(shù)據(jù)保存到ActionForm對(duì)象中。
(3)根據(jù)配置信息決定是否需要表單驗(yàn)證。如果需要驗(yàn)證,就調(diào)用ActionForm的validate()方法。
(4)如果ActionForm的validate()方法返回null或返回一個(gè)不包含ActionMessage的ActionErrors對(duì)象,就表示表單驗(yàn)證成功。
(5)ActionServlet根據(jù)ActionMapping實(shí)例包含的映射信息決定將請(qǐng)求轉(zhuǎn)發(fā)給哪個(gè)Action。如果相應(yīng)的Action實(shí)例不存在,就先創(chuàng)建這個(gè)實(shí)例,然后調(diào)用Action的execute()方法。
(6)Action的execute()方法返回一個(gè)ActionForward對(duì)象,ActinoServlet再把客戶請(qǐng)求轉(zhuǎn)發(fā)給ActionForward對(duì)象只想的JSP組件。
(7)ActionForward對(duì)象指向的JSP組件生成動(dòng)態(tài)網(wǎng)頁(yè),返回給客戶。
對(duì)于以上流程的流程(4),如果ActionForm的validate()方法返回一個(gè)或多個(gè)ActionMessage的ActionErrors對(duì) 象,就表示表單驗(yàn)證失敗,此時(shí)ActionServlet將直接把請(qǐng)求轉(zhuǎn)發(fā)給包含用戶提交表單的JSP組件。再這種情況下,不會(huì)再創(chuàng)建Action對(duì)象并 調(diào)用Action的execute()方法。
--以上文字摘自孫衛(wèi)琴,《精通Struts:基于MVC的Java Web設(shè)計(jì)與開(kāi)發(fā)》
2005年03月30日 12:25 AM