posts - 42, comments - 7, trackbacks - 0, articles - 1

          Structs 框架發(fā)展歷程

          Posted on 2007-09-17 19:04 TuringJava 閱讀(780) 評(píng)論(0)  編輯  收藏 所屬分類: Structs

          JSP Model1



          JSP Model2(MVC)




          Structs框架:



          Struts 概覽

          • 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)的因素之一。
          Structs和mvc框架的映射:


          提示:模塊是在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ì)象歸為控制器部分。

          客戶端從發(fā)出請(qǐng)求到獲得響應(yīng)整個(gè)過(guò)程的圖解說(shuō)明:




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

          主站蜘蛛池模板: 宜兰县| 班玛县| 蕉岭县| 财经| 青海省| 天津市| 鲁甸县| 连城县| 诸暨市| 城口县| 东阿县| 广州市| 江安县| 绥阳县| 凤凰县| 奉新县| 自治县| 蕉岭县| 漠河县| 阿勒泰市| 洛南县| 龙泉市| 隆尧县| 钟山县| 营山县| 高淳县| 腾冲县| 隆尧县| 芦溪县| 遵义县| 司法| 枝江市| 藁城市| 浙江省| 南澳县| 邹城市| 从江县| 临夏市| 特克斯县| 饶阳县| 金寨县|