標籤: 暫無標籤

Struts最早是作為Apache Jakarta項目的組成部分,項目的創立者希望通過對該項目的研究,改進和提高Java Server Pages、Servlet、標籤庫以及面向對象的技術水準。Struts這個名字來源於在建築和舊式飛機中使用的支持金屬架。這個框架之所以叫「Struts」,是為了提醒我們記住那些支撐房屋,建築,橋樑,甚至踩高蹺時候的基礎支撐。這也是一個解釋Struts在開發Web應用程序中所扮演的角色的精彩描述。

1 STRUTS -基本概述

STRUTSSTRUTS
STRUTSSTRUTS
當建立一個物理建築時,建築工程師使用支柱為建築的每一層提供支持。同樣,軟體工程師使用Struts為業務應用的每一層提供支持。它的目的是為了幫助減少在運用MVC設計模型來開發Web應用的時間。我們仍然需要學習和應用該架構,不過它將可以完成其中一些繁重的工作。如果想混合使用Servlets和JSP的優點來建立可擴展的應用,Struts是一個不錯的選擇。

早期Smalltalk程序語言便採用了MVC(Model-View-Controller)模式(Patterns)以增加程序代碼彈性,MVC模式將程序代碼整理切割為三部份,Model部分是業務與應用領域(Businessdomain)相關邏輯、管理狀態之對象,Controller部分接收來自View所輸入的資料並與Model部分互動,是業務流程式控制制(FlowControl)之處,View部分則負責展現資料、接收使用者輸入資料。在Java應用中,JFC/Swing、AWT、JSP皆是可用作View之技術規格,而JavaBean與EnterpriseJavaBean規格則可用於Model程序代碼,一旦應用程序以MVC模式加以適當之分割,Model部分程序代碼可在不同使用者介面外觀之應用程序中重複使用。

隨著JSP與Servlet技術大量應用於以Web為基礎之應用程序,Java開發人員群體認為應以較佳之模式以提升Web應用程序之可維護性與重複使用性。早期JSP規格書中曾列舉兩種可行之JSP應用架構,分別為Model1與Model2。

2 STRUTS -構架開發

STRUTSSTRUTS
在Model1架構中,JSP直接處理Web瀏覽器送來之請求(Request),並輔以JavaBean處理應用相關邏輯。Model1架構單純編寫比較容易,但在Model1中JSP可能同時肩負View與Controller角色,兩類程序代碼有可能混雜而不易維護。而Model2中將Servlet納入架構中扮演前端Controller角色,將Web瀏覽器送出之請求集中送至Servlet,Servlet可集中管理使用者登入、許可權控制、多國語言轉換等前置處理,再視需求轉向給對應之JSP處理。Model2中採用了較佳之MVC模式,但增加了編寫複雜度。

Struts是Apache軟體基金下Jakarta項目的一部分。除Struts之外,還有其他成功的開源產品,包括Tomcat,Ant和Velocity。2000年CraigR.McClanahan先生貢獻了他編寫的JSPModel2架構之ApplicationFramework原始程序代碼給Apache基金會,成為ApacheJakarta計劃StrutsFramework前身。

開始的代碼基礎從2000年5月開始開發,直到2001年6月,1.0版本發布。有30多個開發者參與進來,並有數千人參與到討論組中。Struts代碼基礎由一個志願的Commnitter團隊來管理。到2002年,Struts小組共有9個志願Commnitter。

Struts框架的主要架構設計和開發者是CraigR.McClanahan。Craig也是Tomcat4的主要架構師,以及JavaWebServicesDeveloperPack的主要架構師和實現者。他現在是Sun的JavaServerFaces(JSR-127)以及J2EE平台的Web層架構的規範領導。CraigR.McClanahan先生是JCPExpertGroup成員之一,曾參與JSP規格制定與Tomcat4之編寫,因此Struts Framework廣受Java開發人員群體所重視。Borland自2002年底開始於開發工具JBuilder中支持StrutsFramework。

3 STRUTS -集成模式

STRUTSSTRUTS
Struts是Apache基金會Jakarta項目組的一個OpenSource項目,它採用MVC模式,能夠很好地幫助java開發者利用J2EE開發Web應用。和其他的java架構一樣,Struts也是面向對象設計,將MVC模式「分離顯示邏輯和業務邏輯」的能力發揮得淋漓盡致。Structs框架的核心是一個彈性的控制層,基於如JavaServlets,JavaBeans,ResourceBundles與XML等標準技術,以及JakartaCommons的一些類庫。Struts有一組相互協作的類(組件)、Serlvet以及jsptaglib組成。基於struts構架的web應用程序基本上符合JSPModel2的設計標準,可以說是一個傳統MVC設計模式的一種變化類型。

Struts最早是作為ApacheJakarta項目的組成部分問世運作。項目的創立者希望通過對該項目的研究,改進和提高JavaServerPages、Servlet、標籤庫以及面向對象的技術水準。

Struts的目的是為了減少在運用MVC設計模型來開發Web應用的時間。你仍然需要學習和應用該架構,不過它將可以完成其中一些繁重的工作。

Struts跟Tomcat、Turbine等諸多Apache項目一樣,是開源軟體,這是它的一大優點,使開發者能更深入的了解其內部實現機制。除此之外,Struts的優點主要集中體現在兩個方面:Taglib和頁面導航。Taglib是Struts的標記庫,靈活動用,能大大提高開發效率。另外,就目前國內的JSP開發者而言,除了使用JSP自帶的常用標記外,很少開發自己的標記,或許Struts是一個很好的起點。關於頁面導航,我認為那將是今後的一個發展方向,事實上,這樣做,使系統的脈絡更加清晰。通過一個配置文件,即可把握整個系統各部分之間的聯繫,這對於後期的維護有著莫大的好處。尤其是當另一批開發者接手這個項目時,這種優勢體現得更加明顯。

MVC即Model-View-Controller的縮寫,是一種常用的設計模式。MVC減弱了業務邏輯介面和數據介面之間的耦合,以及讓視圖層更富於變化。Struts是MVC的一種實現,它將Servlet和JSP標記(屬於J2EE規範)用作實現的一部分。Struts繼承了MVC的各項特性,並根據J2EE的特點,做了相應的變化與擴展。

4 STRUTS -操作流程

STRUTSSTRUTS
伺服器啟動后,根據web.xml載入Action Servlet讀取struts-config.xml文件內容到內存。以登陸為例:第一次進login.jsp會先實例化Form、把默認值賦給表單元素。

輸入用戶名密碼提交表單、提交到action屬性的login.do,通過ActionServlet讀struts-config.xml文件找到action下的path屬性找到.do,通過name屬性找form-beans中的form-bean的name屬性得到ActionForm的包名類名,先實例化form,把表單的值填充給form,調用form的validate方法驗證、ActionErrors返回null表示驗證通過,否則失敗返回input指定的頁面。驗證通過會實例化Action,執行Action的excute方法。

5 STRUTS -體系結構

STRUTSSTRUTS
框架中三個部分:模型,視窗和控制器。

在struts框架中,模型分為兩個部分:

系統的內部狀態
可以改變狀態的操作(事務邏輯)

內部狀態通常由一組ActinFormJavaBean表示。根據設計或應用程序複雜度的不同,這些Bean可以是自包含的並具有持續的狀態,或只在需要時才獲得數據(從某個資料庫)。大型應用程序通常在方法內部封裝事務邏輯(操作),這些方法可以被擁有狀態信息的bean調用。比如購物車bean,它擁有用戶購買商品的信息,可能還有checkOut()方法用來檢查用戶的信用卡,並向倉庫發定貨信息。

小型程序中,操作可能會被內嵌在Action類,它是struts框架中控制器角色的一部分。當邏輯簡單時這個方法很適合。建議用戶將事務邏輯(要做什麼)與Action類所扮演的角色(決定做什麼)分開。

視窗:由JSP建立,struts包含擴展自定義標籤庫,可以簡化創建完全國際化用戶界面的過程。

控制器:struts中,基本的控制器組件是ActionServlet類中的實例servelt,實際使用的servlet在配置文件中由一組映射(由Action Mapping類進行描述)進行定義。

6 STRUTS -框架中的組件

框架中所使用的組件:  

ActionServlet 控制器   

ActionClass 包含事務邏輯   

ActionForm 顯示模塊數據   

ActionMapping 幫助控制器將請求映射到操作   

ActionForward 用來指示操作轉移的對象   

ActionError 用來存儲和回收錯誤   

Struts標記庫 可以減輕開發顯示層次的工作  

上一篇[李娜莉]    下一篇 [電子干擾]

相關評論

同義詞:暫無同義詞