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

          Structs 框架發展歷程

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

          JSP Model1



          JSP Model2(MVC)




          Structs框架:



          Struts 概覽

          • Client browser(客戶瀏覽器)
            來自客戶瀏覽器的每個 HTTP 請求創建一個事件。Web 容器將用一個 HTTP 響應作出響應。
          • Controller(控制器)
            控制器接收來自瀏覽器的請求,并決定將這個請求發往何處。就 Struts 而言,控制器是以 servlet 實現的一個命令設計模式。 struts-config.xml 文件配置控制器。
          • 業務邏輯
            業務邏輯更新模型的狀態,并幫助控制應用程序的流程。就 Struts 而言,這是通過作為實際業務邏輯“瘦”包裝的 Action 類完成的。
          • Model(模型)的狀態
            模型表示應用程序的狀態。業務對象更新應用程序的狀態。ActionForm bean 在會話級或請求級表示模型的狀態,而不是在持久級。JSP 文件使用 JSP 標記讀取來自 ActionForm bean 的信息。
          • View(視圖)
            視圖就是一個 JSP 文件。其中沒有流程邏輯,沒有業務邏輯,也沒有模型信息 -- 只有標記。標記是使 Struts 有別于其他框架(如 Velocity)的因素之一。
          Structs和mvc框架的映射:


          提示:模塊是在Struts 1.1中新提出的概念,在稍后的內容中我們將詳細介紹,你現在可以簡單地把模塊看作是一個子系統,它們共同組成整個應用,同時又各自獨立。Struts 1.1中所有的處理都是在特定模塊環境中進行的。模塊的提出主要是為了解決Struts 1.0中單配置文件的問題。

          控制器接收HTTP請求,并從ActionConfig中找出對應于該請求的Action子類,如果沒有對應的Action,控制器直接將請求轉發給JSP或者靜態頁面。否則控制器將請求分發至具體Action類進行處理。

          在控制器調用具體Action的execute方法之前,ActionForm對象將利用HTTP請求中的參數來填充自己(可選步驟,需要在配置文件中指定)。具體的ActionForm對象應該是ActionForm的子類對象,它其實就是一個JavaBean。此外,還可以在ActionForm類中調用validate方法來檢查請求參數的合法性,并且可以返回一個包含所有錯誤信息的ActionErrors對象。如果執行成功,ActionForm自動將這些參數信息以JavaBean(一般稱之為form bean)的方式保存在Servlet Context中,這樣它們就可以被其它Action對象或者JSP調用。

          Struts將這些ActionForm的配置信息都放在FormBeanConfig集合中,通過它們Struts能夠知道針對某個客戶請求是否需要創建相應的ActionForm實例。

          Action很簡單,一般只包含一個execute方法,它負責執行相應的業務邏輯,如果需要,它也進行相應的數據檢查。執行完成之后,返回一個ActionForward對象,控制器通過該ActionForward對象來進行轉發工作。我們主張將獲取數據和執行業務邏輯的功能放到具體的JavaBean當中,而Action只負責完成與控制有關的功能。遵循該原則,所以在上圖中我將Action對象歸為控制器部分。

          客戶端從發出請求到獲得響應整個過程的圖解說明:




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

          主站蜘蛛池模板: 沁源县| 永春县| 湘乡市| 米脂县| 双流县| 博爱县| 新蔡县| 古浪县| 荥阳市| 克拉玛依市| 嘉兴市| 项城市| 五家渠市| 五华县| 广宁县| 新余市| 裕民县| 平顺县| 甘孜| 搜索| 昌图县| 呼图壁县| 高陵县| 海南省| 广德县| 克东县| 金华市| 安新县| 洱源县| 慈溪市| 阆中市| 鸡东县| 四川省| 无为县| 琼中| 鄂尔多斯市| 崇州市| 阜康市| 华安县| 许昌市| 张家界市|