JSP Model1

JSP Model2(MVC)

Structs框架:

- Client browser(客戶瀏覽器)
來(lái)自客戶瀏覽器的每個(gè) HTTP 請(qǐng)求創(chuàng)建一個(gè)事件。Web 容器將用一個(gè) HTTP 響應(yīng)作出響應(yīng)。 - Controller(控制器)
控制器接收來(lái)自瀏覽器的請(qǐng)求,并決定將這個(gè)請(qǐng)求發(fā)往何處。就 Struts 而言,控制器是以 servlet 實(shí)現(xiàn)的一個(gè)命令設(shè)計(jì)模式。struts-config.xml
文件配置控制器。
- 業(yè)務(wù)邏輯
業(yè)務(wù)邏輯更新模型的狀態(tài),并幫助控制應(yīng)用程序的流程。就 Struts 而言,這是通過(guò)作為實(shí)際業(yè)務(wù)邏輯“瘦”包裝的Action
類完成的。
- Model(模型)的狀態(tài)
模型表示應(yīng)用程序的狀態(tài)。業(yè)務(wù)對(duì)象更新應(yīng)用程序的狀態(tài)。ActionForm bean 在會(huì)話級(jí)或請(qǐng)求級(jí)表示模型的狀態(tài),而不是在持久級(jí)。JSP 文件使用 JSP 標(biāo)記讀取來(lái)自 ActionForm bean 的信息。 - View(視圖)
視圖就是一個(gè) JSP 文件。其中沒(méi)有流程邏輯,沒(méi)有業(yè)務(wù)邏輯,也沒(méi)有模型信息 -- 只有標(biāo)記。標(biāo)記是使 Struts 有別于其他框架(如 Velocity)的因素之一。

提示:模塊是在Struts 1.1中新提出的概念,在稍后的內(nèi)容中我們將詳細(xì)介紹,你現(xiàn)在可以簡(jiǎn)單地把模塊看作是一個(gè)子系統(tǒng),它們共同組成整個(gè)應(yīng)用,同時(shí)又各自獨(dú)立。Struts 1.1中所有的處理都是在特定模塊環(huán)境中進(jìn)行的。模塊的提出主要是為了解決Struts 1.0中單配置文件的問(wèn)題。
控制器接收HTTP請(qǐng)求,并從ActionConfig中找出對(duì)應(yīng)于該請(qǐng)求的Action子類,如果沒(méi)有對(duì)應(yīng)的Action,控制器直接將請(qǐng)求轉(zhuǎn)發(fā)給JSP或者靜態(tài)頁(yè)面。否則控制器將請(qǐng)求分發(fā)至具體Action類進(jìn)行處理。
在控制器調(diào)用具體Action的execute方法之前,ActionForm對(duì)象將利用HTTP請(qǐng)求中的參數(shù)來(lái)填充自己(可選步驟,需要在配置文件中指定)。具體的ActionForm對(duì)象應(yīng)該是ActionForm的子類對(duì)象,它其實(shí)就是一個(gè)JavaBean。此外,還可以在ActionForm類中調(diào)用validate方法來(lái)檢查請(qǐng)求參數(shù)的合法性,并且可以返回一個(gè)包含所有錯(cuò)誤信息的ActionErrors對(duì)象。如果執(zhí)行成功,ActionForm自動(dòng)將這些參數(shù)信息以JavaBean(一般稱之為form bean)的方式保存在Servlet Context中,這樣它們就可以被其它Action對(duì)象或者JSP調(diào)用。
Struts將這些ActionForm的配置信息都放在FormBeanConfig集合中,通過(guò)它們Struts能夠知道針對(duì)某個(gè)客戶請(qǐng)求是否需要?jiǎng)?chuàng)建相應(yīng)的ActionForm實(shí)例。
Action很簡(jiǎn)單,一般只包含一個(gè)execute方法,它負(fù)責(zé)執(zhí)行相應(yīng)的業(yè)務(wù)邏輯,如果需要,它也進(jìn)行相應(yīng)的數(shù)據(jù)檢查。執(zhí)行完成之后,返回一個(gè)ActionForward對(duì)象,控制器通過(guò)該ActionForward對(duì)象來(lái)進(jìn)行轉(zhuǎn)發(fā)工作。我們主張將獲取數(shù)據(jù)和執(zhí)行業(yè)務(wù)邏輯的功能放到具體的JavaBean當(dāng)中,而Action只負(fù)責(zé)完成與控制有關(guān)的功能。遵循該原則,所以在上圖中我將Action對(duì)象歸為控制器部分。

參考:
http://www-128.ibm.com/developerworks/cn/java/l-struts1-1/
http://www-128.ibm.com/developerworks/cn/java/j-struts/index.html