Struts是一個技術框架,最先由Craig R McClanahan編寫,并在2000年捐獻給ASF,目前已經(jīng)有很多個人和組織參與了Struts的開發(fā),使得Struts在幾年內(nèi)高速的成長。使其成為WEB應用MVC模式中VC的事實標準。
?
Struts最早是作為Apache Jakarta項目的組成部分,項目的創(chuàng)立者希望通過對該項目的研究,改進和提高JavaServer Pages 、Servlet、標簽庫以及面向?qū)ο蟮募夹g水準。Struts這個名字來源于在建筑和舊式飛機中使用的支持金屬架。這個框架之所以叫"Struts",是為了提醒我們記住那些支撐我們房屋,建筑,橋梁,甚至我們踩高蹺時候的基礎支撐。這也是一個解釋Struts在開發(fā)Web應用程序中所扮演的角色的精彩描述。當建立一個物理建筑時,建筑工程師使用支柱為建筑的每一層提供支持。同樣,軟件工程師使用Struts為業(yè)務應用的每一層提供支持。它的目的是為了幫助我們減少在運用MVC設計模型來開發(fā)Web應用的時間。我們?nèi)匀恍枰獙W習和應用該架構,不過它將可以完成其中一些繁重的工作。如果想混合使用Servlets和JSP的優(yōu)點來建立可擴展的應用,Struts是一個不錯的選擇。
早期Smalltalk 程序語言便采用了MVC(Model-View -Controller) 模式( Patterns ) 以增加程序代碼彈性,MVC模式將程序代碼整理切割為三部份,Model 部分是業(yè)務與應用領域( Business domain) 相關邏輯、管理狀態(tài)之對象,Controller 部分接收來自View 所輸入的資料并與Model 部分互動,是業(yè)務流程控制( Flow Control) 之處,View 部分則負責展現(xiàn)資料、接收使用者輸入資料。在Java 應用中,JFC/Swing、AWT、JSP 皆是可用作View 之技術規(guī)格,而JavaBean 與Enterprise JavaBean 規(guī)格則可用于Model 程序代碼,一旦應用程序以MVC 模式加以適當之分割,Model 部分程序代碼可在不同使用者接口外觀之應用程序中重復使用。
隨著JSP 與Servlet 技術大量應用于以Web 為基礎之應用程序,Java 開發(fā)人員群體認為應以較佳之模式以提升Web 應用程序之可維護性與重復使用性。早期JSP 規(guī)格書中曾列舉兩種可行之JSP 應用架構,分別為Model1 與Model 2。
在Model 1 架構中,JSP 直接處理Web 瀏覽器送來之請求( Request ),并輔以JavaBean 處理應用相關邏輯。Model 1 架構單純編寫比較容易,但在Model 1 中JSP 可能同時肩負View 與Controller 角色,兩類程序代碼有可能混雜而不易維護。而Model 2 中將Servlet 納入架構中扮演前端Controller 角色,將Web 瀏覽器送出之請求集中送至Servlet ,Servlet 可集中管理使用者登入、權限控制、多國語言轉(zhuǎn)換等前置處理,再視需求轉(zhuǎn)向給對應之JSP 處理。Model 2 中采用了較佳之MVC 模式,但增加了編寫復雜度。
Struts是Apache軟件基金下Jakarta項目的一部分。除Struts之外,還有其他成功的開源產(chǎn)品,包括Tomcat, Ant 和Velocity。2000 年Craig R. McClanahan 先生貢獻了他編寫的JSP Model 2 架構之Application Framework 原始程序代碼給Apache 基金會,成為Apache Jakarta 計劃Struts Framework 前身。
開始的代碼基礎從2000年5月開始開發(fā),直到2001年6月,1.0版本發(fā)布。有30 多個開發(fā)者參與進來,并有數(shù)千人參與到討論組中。Struts 代碼基礎由一個志愿的Commnitter團隊來管理。到2002年,Struts 小組共有9個志愿Commnitter。
Struts框架的主要架構設計和開發(fā)者是Craig R.McClanahan。Craig 也是Tomcat 4的主要架構師,以及Java Web Services Developer Pack的主要架構師和實現(xiàn)者。他現(xiàn)在是Sun的JavaServer Faces (JSR-127) 以及J2EE平臺的Web層架構的規(guī)范領導。Craig R. McClanahan 先生是JCP ExpertGroup 成員之一,曾參與JSP 規(guī)格制定與Tomcat 4 之編寫,因此Struts Framework 廣受Java 開發(fā)人員群體所重視。Borland 自2002 年底開始于開發(fā)工具JBuilder 中支持Struts Framework。
Struts是Apache 基金會Jakarta 項目組的一個Open Source 項目,它采用MVC模式,能夠很好地幫助java 開發(fā)者利用J2EE開發(fā)Web應用。和其他的java架構一樣,Struts 也是面向?qū)ο笤O計,將MVC模式"分離顯示邏輯和業(yè)務邏輯"的能力發(fā)揮得淋漓盡致。Structs 框架的核心是一個彈性的控制層,基于如 Java Servlets,JavaBeans,ResourceBundles與XML等標準技術,以及 Jakarta Commons 的一些類庫。Struts有一組相互協(xié)作的類(組件)、Serlvet以及jsp tag lib組成?;趕truts構架的web應用程序基本上符合JSP Model2的設計標準,可以說是一個傳統(tǒng) MVC設計模式的一種變化類型。
Struts最早是作為Apache Jakarta項目的組成部分問世運作。項目的創(chuàng)立者希望通過對該項目的研究,改進和提高Java Server Pages、Servlet、標簽庫以及面向?qū)ο蟮募夹g水準。
Struts的目的是為了減少在運用MVC設計模型來開發(fā)Web應用的時間。你仍然需要學習和應用該架構,不過它將可以完成其中一些繁重的工作。
Struts跟Tomcat、Turbine等諸多Apache項目一樣,是開源軟件,這是它的一大優(yōu)點,使開發(fā)者能更深入的了解其內(nèi)部實現(xiàn)機制。
除此之外,Struts的優(yōu)點主要集中體現(xiàn)在兩個方面:Taglib和頁面導航。Taglib是Struts的標記庫,靈活動用,能大大提高開發(fā)效率。另外,就目前國內(nèi)的JSP開發(fā)者而言,除了使用JSP自帶的常用標記外,很少開發(fā)自己的標記,或許Struts是一個很好的起點。
關于頁面導航,我認為那將是今后的一個發(fā)展方向,事實上,這樣做,使系統(tǒng)的脈絡更加清晰。通過一個配置文件,即可把握整個系統(tǒng)各部分之間的聯(lián)系,這對于后期的維護有著莫大的好處。尤其是當另一批開發(fā)者接手這個項目時,這種優(yōu)勢體現(xiàn)得更加明顯。
MVC即Model-View-Controller的縮寫,是一種常用的設計模式。MVC 減弱了業(yè)務邏輯接口和數(shù)據(jù)接口之間的耦合,以及讓視圖層更富于變化。Struts 是MVC的一種實現(xiàn),它將 Servlet和 JSP 標記(屬于 J2EE 規(guī)范)用作實現(xiàn)的一部分。Struts繼承了MVC的各項特性,并根據(jù)J2EE的特點,做了相應的變化與擴展。Struts的工作原理,如圖所示:
?
更多文章、技術交流、商務合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
