天天看點

關于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來維持 ; 持久級:模型元件來維持;

本文轉自linzheng 51CTO部落格,原文連結:http://blog.51cto.com/linzheng/1080873