Structs
Structs
struts是開源軟體。使用Struts的目的是為了幫助我們減少在運用MVC設計模型來開發Web應用的時間。如果我們想混合使用Servlets和JSP的優點來建立可擴展的應用,struts是一個不錯的選擇。
Struts最早是作為Apache Jakarta項目的組成部分,項目的創立者希望通過對該項目的研究,改進和提高JavaServer Pages 、Servlet、標籤庫以及面向對象的技術水準。Struts這個名字來源於在建築和舊式飛機中使用的支持金屬架。這個框架之所以叫"Struts",是為了提醒我們記住那些支撐我們房屋,建築,橋樑,甚至我們踩高蹺時候的基礎支撐。這也是一個解釋Struts在開發Web應用程序中所扮演的角色的精彩描述。當建立一個物理建築時,建築工程師使用支柱為建築的每一層提供支持。同樣,軟體工程師使用Struts為業務應用的每一層提供支持。它的目的是為了幫助我們減少在運用MVC設計模型來開發Web應用的時間。我們仍然需要學習和應用該架構,不過它將可以完成其中一些繁重的工作。如果想混合使用Servlets和JSP的優點來建立可擴展的應用,Struts是一個不錯的選擇。
早期Smalltalk 程序語言便採用了MVC(Model-View -Controller) 模式( Patterns ) 以增加程序代碼彈性,MVC模式將程序代碼整理切割為三部份,Model 部分是業務與應用領域( Business domain) 相關邏輯、管理狀態之對象,Controller 部分接收來自View 所輸入的資料並與Model 部分互動,是業務流程式控制制( Flow Control) 之處,View 部分則負責展現資料、接收使用者輸入資料。在Java 應用中,JFC/Swing、AWT、JSP 皆是可用作View 之技術規格,而JavaBean 與Enterprise JavaBean 規格則可用於Model程序代碼,一旦應用程序以MVC 模式加以適當(的)分割,Model 部分程序代碼可在不同使用者介面外觀(的)應用程序中重複使用。
隨著JSP 與Servlet 技術大量應用於以Web 為基礎(的)應用程序,Java 開發人員群體認為應以較佳之模式以提升Web 應用程序之可維護性與重複使用性。早期JSP 規格書中曾列舉兩種可行之JSP 應用架構,分別為Model1 與Model 2。
在Model 1 架構中,JSP 直接處理Web 瀏覽器送來之請求( Request ),並輔以JavaBean 處理應用相關邏輯。Model 1 架構單純編寫比較容易,但在Model 1 中JSP 可能同時肩負View 與Controller 角色,兩類程序代碼有可能混雜而不易維護。而Model 2 中將Servlet 納入架構中扮演前端Controller 角色,將Web 瀏覽器送出之請求集中送至Servlet ,Servlet 可集中管理使用者登入、許可權控制、多國語言轉換等前置處理,再視需求轉向給對應之JSP 處理。Model 2 中採用了較佳之MVC 模式,但增加了編寫複雜度。
Struts是Apache軟體基金下Jakarta項目的一部分。除Struts之外,還有其他成功的開源產品,包括Tomcat, Ant 和Velocity。2000 年Craig R. McClanahan 先生貢獻了他編寫的JSP Model 2 架構之Application Framework 原始程序代碼給Apache 基金會,成為Apache Jakarta 計劃Struts Framework前身。
開始的代碼基礎從2000年5月開始開發,直到2001年6月,1.0版本發布。有30 多個開發者參與進來,並有數千人參與到討論組中。Struts 代碼基礎由一個志願的Commnitter團隊來管理。到2002年,Struts 小組共有9個志願Commnitter。
Struts框架的主要架構設計和開發者是Craig R.McClanahan。Craig 也是Tomcat 4的主要架構師,以及Java Web Services Developer Pack的主要架構師和實現者。他現在是Sun的JavaServer Faces (JSR-127) 以及J2EE平台的Web層架構的規範領導。Craig R. McClanahan 先生是JCP ExpertGroup 成員之一,曾參與JSP 規格制定與Tomcat 4 之編寫,因此Struts Framework 廣受Java 開發人員群體所重視。Borland 自2002 年底開始於開發工具JBuilder 中支持Struts Framework。
Struts是Apache 基金會Jakarta 項目組的一個Open Source 項目,它採用MVC模式,能夠很好地幫助java 開發者利用J2EE開發Web應用。和其他的java架構一樣,Struts 也是面向對象設計,將MVC模式"分離顯示邏輯和業務邏輯"的能力發揮得淋漓盡致。Structs 框架的核心是一個彈性的控制層,基於如 Java Servlets,JavaBeans,ResourceBundles與XML等標準技術,以及 Jakarta Commons 的一些類庫。Struts有一組相互協作的類(組件)、Servlet以及jsp tag lib組成。基於struts構架的web應用程序基本上符合JSP Model2的設計標準,可以說是一個傳統 MVC設計模式的一種變化類型。
Struts最早是作為Apache Jakarta項目的組成部分問世運作。項目的創立者希望通過對該項目的研究,改進和提高Java Server Pages、Servlet、標籤庫以及面向對象的技術水準。
Struts的目的是為了減少在運用MVC設計模型來開發Web應用的時間。你仍然需要學習和應用該架構,不過它將可以完成其中一些繁重的工作。
MVC即Model-View-Controller的縮寫,是一種常用的設計模式。MVC 減弱了業務邏輯介面和數據介面之間的耦合,以及讓視圖層更富於變化。Struts 是MVC的一種實現,它將 Servlet和 JSP 標記(屬於 J2EE 規範)用作實現的一部分。Struts繼承了MVC的各項特性,並根據J2EE的特點,做了相應的變化與擴展。
Struts只是一個MVC框架(Framework),用於快速開發JavaWeb應用。Struts實現的重點在C(Controller),包括ActionServlet/RequestProcessor和我們定製的Action,也為V(View)提供了一系列定製標籤(Custom Tag)。但Struts幾乎沒有涉及M(Model),所以Struts可以採用JAVA實現的任何形式的商業邏輯。
Spring是一個輕型容器(light-weight container),其核心是Bean工廠(Bean Factory),用以構造我們所需要的M(Model)。在此基礎之上,Spring提供了AOP(Aspect-Oriented Programming, 面向層面的編程)的實現,用它來提供非管理環境下申明方式的事務、安全等服務;對Bean工廠的擴展ApplicationContext更加方便我們實現J2EE的應用;DAO/ORM的實現方便我們進行資料庫的開發;Web MVC和Spring Web提供了Java Web應用的框架或與其他流行的Web框架進行集成。
就是說可將兩者一起使用,達到將兩者自身的特點進行互補。
Struts跟Tomcat、Turbine等諸多Apache項目一樣,是開源軟體,這是它的一大優點。使開發者能更深入的了解其內部實現機制。
除此之外,Struts的優點主要集中體現在兩個方面:Taglib和頁面導航。Taglib是Struts的標記庫,靈活動用,能大大提高開發效率。另外,就目前國內的JSP開發者而言,除了使用JSP自帶的常用標記外,很少開發自己的標記,或許Struts是一個很好的起點。
關於頁面導航,我認為那將是今後的一個發展方向,事實上,這樣做,使系統的脈絡更加清晰。通過一個配置文件,即可把握整個系統各部分之間的聯繫,這對於後期的維護有著莫大的好處。尤其是當另一批開發者接手這個項目時,這種優勢體現得更加明顯。
glib是Struts的一大優勢,但對於初學者而言,卻需要一個持續學習的過程,甚至還會打亂你網頁編寫的習慣,但是,當你習慣了它時,你會覺得它真的很棒。
Struts將MVC的Controller一分為三,在獲得結構更加清晰的同時,也增加了系統的複雜度。
Struts從產生到現在還不到半年,但已逐步越來越多運用於商業軟體。雖然它現在還有不少缺點,但它是一種非常優秀的J2EE MVC實現方式,如果你的系統準備採用J2EE MVC架構,那麼,不妨考慮一下Struts。