當前位置:編程學習大全網 - 編程語言 - struts和spring的區別

struts和spring的區別

壹、Struts

Struts是Apache軟件基金下Jakarta項目的壹部分。Struts框架的主要架構設計和開發者是Craig R.McClanahan。Struts是目前Java Web

MVC框架中不爭的王者。經過長達五年的發展,Struts已經逐漸成長為壹個穩定、成熟的框架,並且占有了MVC框架中最大的市場份額。但是

Struts某些技術特性上已經落後於新興的MVC框架(這裏說的Struts指的是1.0的版本,現在她已經發布了最新的2.0不版本)。面對

Spring MVC、Webwork2

這些設計更精密,擴展性更強的框架,Struts受到了前所未有的挑戰。但站在產品開發的角度而言,Struts仍然是最穩妥的選擇。 

Struts有壹組相互協作的類(組件)、Serlvet以及jsp tag

lib組成。基於struts構架的web應用程序基本上符合JSP

Model2的設計標準,可以說是MVC設計模式的壹種變化類型。根據上面對framework的描述,我們很容易理解為什麽說Struts是壹個web

framwork,而不僅僅是壹些標記庫的組合。但 Struts

也包含了豐富的標記庫和獨立於該框架工作的實用程序類。Struts有其自己的控制器(Controller),同時整合了其他的壹些技術去實現模型層

(Model)和視圖層(View)。在模型層,Struts可以很容易的與數據訪問技術相結合,包括EJB,JDBC和Object Relation

Bridge。在視圖層,Struts能夠與JSP, Velocity Templates,XSL等等這些表示層組件想結合。

Struts的體系結構

struts framework是MVC

模式的體現,下面我們就從分別從模型、視圖、控制來看看struts的體系結構(Architecture)。  從視圖角度(View)

主要由JSP建立(也可以用別的,如Freemaker),struts自身包含了壹組可擴展的自定義標簽庫(TagLib),可以簡化創建用戶界面的過

程。目前包括:Bean Tags,HTML Tags,Logic Tags,Nested Tags,Template

Tags這幾個Taglib。有關它們的詳細資料請參考struts用戶手冊。

從模型角度(Model)

模型主要是表示壹個系統的狀態(有時候,改變系統狀態的業務邏輯操作也劃分到模型中)。在Struts中,系統的狀態主要有ActiomForm

Bean體現,壹般情況下,這些狀態是非持久性的。如果需要將這些狀態轉化為持久性數據存儲,Struts本身也提供了Utitle包,可以方便的與數據

庫操作。 

從控制器角度(Controller) 在Struts

framework中,Controller主要是ActionServlet,但是對於業務邏輯的操作則主要由Action、

ActionMapping、ActionForward這幾個組件協調完成(也許這幾個組件,應該劃分到模型中的業務邏輯壹塊)。其中,Action扮

演了真正的業務邏輯的實現者,而ActionMapping和ActionForward則指定了不同業務邏輯或流程的運行方向。 對於Struts

如何控制、處理客戶請求,讓我們通過對struts的四個核心組件介紹來具體說明。這幾個組件就是:ActionServlet。Action

Classes,Action Mapping(此處包括ActionForward),ActionFrom Bean。 

二、Spring

Spring實際上是《Expert One-on-One J2EE Design and

Development》壹書中所闡述的設計思想的具體實現。在One-on-One壹書中,Rod Johnson 倡導J2EE

實用主義的設計思想,並隨書提供了壹個初步的開發框架實現(interface21 開發包)。而Spring

正是這壹思想的更全面和具體的體現。Rod Johnson在interface21

開發包的基礎之上,進行了進壹步的改造和擴充,使其發展為壹個更加開放、清晰、全面、高效的開發框架。

 Spring是壹個開源框架,由Rod

Johnson創建並且在他的著作《J2EE設計開發編程指南》裏進行了描述。它是為了解決企業應用開發的復雜性而創建的。Spring使使用基本的

JavaBeans來完成以前只可能由EJB完成的事情變得可能了。然而,Spring的用途不僅限於服務器端的開發。從簡單性、可測試性和松耦合的角度

而言,任何Java應用都可以從Spring中受益。

簡單來說,Spring是壹個輕量的控制反轉和面向切面的容器框架。當然,這個描述有點過於簡單。但它的確概括出了Spring是做什麽的。為了更好

地理解Spring,讓我們分析壹下這個描述: 

1、輕量

 從大小與開銷兩方面而言Spring都是輕量的。完整的Spring框架可以在壹個大小只有1MB多的JAR文件裏發布。並且Spring所需的

處理開銷也是微不足道的。此外,Spring是非侵入式的:典型地,Spring應用中的對象不依賴於輕量,從大小與開銷兩方面而言Spring都是輕量

的。完整的Spring框架可以在壹個大小只有1MB多的JAR文件裏發布。並且Spring所需的處理開銷也是微不足道的。此外,Spring是非侵入

式的:典型地,Spring應用中的對象不依賴於Spring的特定類。 

2、控制反轉

 Spring通過壹種稱作控制反轉(IoC)的技術促進了松耦合。當應用了IoC,對象被動地傳遞它們的依賴而不是自己創建或者查找依賴對象。妳可以認為IoC與JNDI相反?不是對象從容器中查找依賴,而是容器在對象初始化時不等被請求就將依賴傳遞給它。

 3、面向切面

 Spring包含對面向切面編程的豐富支持,允許通過分離應用的業務邏輯與系統服務(例如審計與事物管理)進行內聚性的開發。應用對象只做它們應該做的,完成業務邏輯,僅此而已。它們並不負責(甚至是意識)其它的系統關註點,例如日誌或事物支持。

 4、容器

 Spring包含和管理應用對象的配置和生命周期,在這個意義上它是壹種容器。妳可以配置妳的每個bean如何被創建?基於壹個配置原形為妳的

bean創建壹個單獨的實例或者每次需要時都生成壹個新的實例以及它們是如何相互關聯的。然而,Spring不應該被混同於傳統的重量的EJB容器,它們

經常是龐大與笨重的,難以使用。

框架:Spring是由簡單的組件配置和組合復雜的應用成為可能。在Spring中,應用對象被聲明式地組合,典型地是在壹個XML文件裏。

Spring也提供了很多基礎功能(事務管理、持久性框架集成等等),將應用邏輯的開發留給了妳。

所有Spring的這些特征使妳能夠編寫更幹凈、更可管理、並且更易於測試的代碼。它們也為Spring中的各種子框架提供了基礎。 

  • 上一篇:大專,本科,研究生,博士生,博士後..學歷?
  • 下一篇:0x125b557f指令引用0x00000000內存。無法讀取內存。
  • copyright 2024編程學習大全網