struts

struts

Apache軟件基金會贊助的一個開源項目
Struts是Apache軟件基金會(ASF)贊助的一個開源項目。它最初是Jakarta項目中的一個子項目,并在2004年3月成為ASF的頂級項目。它通過采用Java Servlet/JSP技術,實現了基于Java EE Web應用的Model-View-Controller(MVC)設計模式的應用框架,是MVC經典設計模式中的一個經典産品。Struts的優點主要集中體現在兩個方面,Taglib和頁面導航。Taglib是Struts的标記庫,靈活多用,能大大提高開發效率。Struts這個名字來源于在建築和舊式飛機中使用的支持金屬架。它的目的是為了減少在運用MVC設計模型來開發Web應用的時間。你仍然需要學習和應用該架構,不過它将可以完成其中一些繁重的工作。Struts跟Tomcat、Turbine等諸多Apache項目一樣,是開源軟件,這是它的一大優點,使開發者能更深入的了解其内部實現機制。Struts的漏洞處理機制常被诟病,一來OGNL的功能強大和請求處理機制極易産生遠程執行問題,二來開發組對漏洞處理能力不足,要麼修複後仍可以繞過,要麼無法修複而長期閑置處理[1]。
  • 中文名:struts
  • 外文名:Struts
  • 别名:
  • 使用人員:JavaWeb網站開發人員
  • 實質:基于MVC的WEB框架
  • 平台:Java

結構

在Struts中,已經由一個名為ActionServlet的Servlet充當控制器(Controller)的角色,根據描述模型、視圖、控制器對應關系的struts-config.xml的配置文件,轉發視圖(View)的請求,組裝響應數據模型(Model)。在MVC的模型(Model)部分,經常劃分為兩個主要子系統(系統的内部數據狀态與改變數據狀态的邏輯動作),這兩個概念子系統分别具體對應Struts裡的ActionForm與Action兩個需要繼承實現超類。在這裡,Struts可以與各種标準的數據訪問技術結合在一起,包括Enterprisen Java Beans(EJB),JDBC與JNDI。在Struts的視圖(View)端,除了使用标準的JavaServern Pages(JSP)以外,還提供了大量的标簽庫使用,同時也可以與其他表現層組件技術(産品)進行整合,比如Velocity nTemplates,XSLT等。通過應用Struts的框架,最終用戶可以把大部分的關注點放在自己的業務邏輯(Action)與 n映射關系的配置文件(struts-config.xml)中。n

發展曆程

在Java EE的Web應用發展的初期,除了使用Servlet技術以外,普遍是在JavaServer Pages(JSP)的源代碼中,采用HTML與Java代碼混合的方式進行開發。因為這兩種方式不可避免的要把表現與業務邏輯代碼混合在一起,都給前期開發與後期維護帶來巨大的複雜度。為了擺脫上述的約束與局限,把業務邏輯代碼從表現層中清晰的分離出來,2000年,Craig McClanahan采用了MVC的設計模式開發Struts。後來該框架産品一度被認為是最廣泛、最流行JAVA的WEB應用框架。

2006年,WebWork與Struts的Java EEWeb框架的團體,決定合作共同開發一個新的,整合了WebWork與Struts優點,并且更加優雅、擴展性更強的框架,命名為“Struts 2”,原Struts的1.x版本産品稱為“Struts 1”。Struts項目并行提供與維護兩個主要版本的框架産品——Struts 1與Struts 2。

在2008年12月,Struts1發布了最後一個正式版(1.3.10),而2013年4月5日,Struts開發組宣布終止了Struts 1的軟件開發周期。n

優缺點

Struts的優點主要集中體現在兩個方面,Taglib和頁面導航。Taglib是Struts的标記庫,靈活多用,能大大提高開發效率。

Struts這個名字來源于在建築和舊式飛機中使用的支持金屬架。它的目的是為了減少在運用MVC設計模型來開發Web應用的時間。你仍然需要學習和應用該架構,不過它将可以完成其中一些繁重的工作。Struts跟Tomcat、Turbine等諸多Apache項目一樣,是開源軟件,這是它的一大優點,使開發者能更深入的了解其内部實現機制。

Struts的漏洞處理機制常被诟病,一來OGNL的功能強大和請求處理機制極易産生遠程執行問題,二來開發組對漏洞處理能力不足,要麼修複後仍可以繞過,要麼無法修複而長期閑置處理。n

Apache Struts 2

Apache Struts 2是一個用于開發Java EE網絡應用程序的開放源代碼網頁應用程序架構。它利用并延伸了Java ServletAPI,鼓勵開發者采用MVC架構。

緣起于Apache Struts的WebWork框架,旨在提供相對于Struts框架的增強和改進,同時保留與Struts框架類似的結構。2005年12月,WebWork宣布WebWork 2.2以Apache Struts 2的名義合并至Struts。2007年2月第一個全發布(full release)版本釋出。n

MVC

MVC模式(Model–view–controller)是軟件工程中的一種軟件架構模式,把軟件系統分為三個基本部分:模型(Model)、視圖(View)和控制器(Controller)。

MVC模式最早由Trygve Reenskaug在1978年提出,是施樂帕羅奧多研究中心(Xerox PARC)在20世紀80年代為程序語言Smalltalk發明的一種軟件架構。MVC模式的目的是實現一種動态的程序設計,使後續對程序的修改和擴展簡化,并且使程序某一部分的重複利用成為可能。除此之外,此模式通過對複雜度的簡化,使程序結構更加直觀。軟件系統通過對自身基本部分分離的同時也賦予了各個基本部分應有的功能。專業人員可以通過自身的專長分組:

控制器(Controller)- 負責轉發請求,對請求進行處理。視圖(View) - 界面設計人員進行圖形界面設計。模型(Model) - 程序員編寫程序應有的功能(實現算法等等)、數據庫專家進行數據管理和數據庫設計(可以實現具體的功能)。n

參見

Struts2MVC設計模式Apache軟件基金會J2EE

相關詞條

相關搜索

其它詞條