(一)個人整理Struts架構簡介
一,什麼是架構?
所謂架構就是提供了一組統一的介面和編程方式的可以重用組件,同時我們可以在架構中擴充我們自己的特定邏輯。
二,MVC設計模式
將應用程式分為3個部分:模型 Model,視圖View,控制器Controller;
模型組件:負責商務邏輯;
模型包含應用程式的核心功能。模型封裝了應用程式的狀態。有時它包含的唯一功能就是狀態。它對視圖或控制器一無所知。
視圖組件:負責表示業務範圍的視圖;
視圖提供模型的表示。它是應用程式的 外觀。視圖可以訪問模型的讀方法,但不能訪問寫方法。此外,它對控制器一無所知。當更改模型時,視圖應得到通知。
控制器組件:負責控制使用者輸入的流和狀態;
控制器對使用者的輸入作出反應。它建立並設定模型。
Struts,它是使用 servlet 和 JavaServer Pages 技術的一種MVC 實現;
Struts,Apache組織的一個項目,MVC 的一種開放源碼實現;
三,什麼是Struts架構
Struts 是一組相互協作的類、servlet 和 JSP 標記組成的一個可重用的 MVC 2 設計。 這個定義表示 Struts 是一個架構,而不是一個庫,但 Struts 也包含了豐富的標記庫和獨立於該架構工作的公用程式類。
四,Struts 概覽
1,Client browser(客戶瀏覽器)
來自客戶瀏覽器的每個 HTTP 要求建立一個事件。Web 容器將用一個 HTTP 響應作出響應。
2,Controller(控制器)
控制器接收來自瀏覽器的請求,並決定將這個請求發往何處。 就 Struts 而言,控制器是以 servlet 實現的一個命令設計模式。 struts-config.xml 檔案配置控制器命令。
3,商務邏輯
商務邏輯更新模型的狀態,並協助控制應用程式的流程。 就 Struts 而言,這是通過作為實際商務邏輯“瘦”封裝的 Action 類完成的。
4,Model(模型)的狀態
模型表示應用程式的狀態。業務對象更新應用程式的狀態。 ActionForm bean 在會話級或請求級表示模型的狀態,而不是在持久級。 JSP 檔案使用 JSP 標記讀取來自 ActionForm bean 的資訊。
5,View(視圖)
視圖就是一個 JSP 檔案。其中沒有流程邏輯,沒有商務邏輯,也沒有模型資訊 -- 只有標記。 標記是使 Struts 有別於其他架構(如 Velocity)的因素之一。
五, Struts中的Controller(控制器)
命令設計模式的實現:
Struts 的控制器將事件(事件通常是 HTTP post)映射到類的一個 servlet。
ActionServlet (Command) 建立並使用 Action 、 ActionForm 和 ActionForward 。 通過struts-config.xml 檔案配置該 Command。從而擴充 Action 和 ActionForm 來解決特定的問題。 可以通過擴充 ActionServlet 來添加 Command 功能。
在Struts架構中控制器組件由三個部分構成:
1,訊息控制模組;
使用者所有的提交請求都發往訊息控制模組,在由訊息匯流排模組根據視圖映射模組找到訊息處理模組來執行處理邏輯。 訊息控制模組接收所有使用者的請求,並根據請求視圖找到處理。 Strtus中通過ActionServlet和RequestProcessor類來完成。
2,訊息處理模組;
該模組執行該訊息的邏輯處理,因此通常由使用者擴充實現。 Struts中通過Action類來實現。
3,視圖映射模組;
控制器邏輯和視圖邏輯之間的結合是通過配置模組和設定檔建立其的連結。 Struts中配置模組通過ModuleConfig類來完成,而設定檔由struts-config.xml檔案提供。
六,Struts中的View(視圖)
視圖組件通過JSP組件實現的。Struts架構對視圖組件進行了擴充和封裝。 Struts對視圖的擴充提供了一群組擴充服務器標籤用來提供視圖顯示以及傳遞資料到處理緩衝,而處理緩衝由ActionForm的擴充類來實現。 Struts架構利用ActionForm Bean來實現視圖與控制器之間的資料的互動,維持會話級或請求級的模型的狀態。
伺服器標籤主要包括:
Html視表徵圖簽;
Logic邏輯流程式控制制標籤;
Bean資料緩衝讀取標籤;
七,Struts中的Model(模型)
1,Struts架構中並沒有定義特定的模型組件,而是希望由使用者自己決定選擇合理的模型組件。
J2EE中可用的模型組件包括:
JavaBean 使用者定義組件; EJB 組件,由EJB容器實現組件; JDO 未來J2EE資料訪問模型; 一些擴充架構如:Hibernate;
2,模型中狀態的層級
會話級或請求級:ActionForm bean來維持 ;
持久級:模型組件來維持;