成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

對于Struts和Spring兩種MVC框架的比較

開發(fā) 后端
本文敘述對于Struts和Spring兩種MVC框架的比較,先介紹Struts,再介紹Spring。

基于Web的MVC framework在J2EE的世界內(nèi)已是空前繁榮。TTS網(wǎng)站上幾乎每隔一兩個星期就會有新的MVC框架發(fā)布。目前比較好的MVC,老牌的有 Struts、Webwork。新興的MVC框架有Spring MVC、Tapestry、JSF等。Struts和Spring這些大多是著名團隊的作品,另外還有一些邊緣團隊的作品,也相當出色,如Dinamica、VRaptor等。這些框架都提供了較好的層次分隔能力。Struts和Spring在實現(xiàn)良好的MVC 分隔的基礎(chǔ)上,通過提供一些現(xiàn)成的輔助類庫,同時也促進了生產(chǎn)效率的提高。

如何選擇一個好的框架應(yīng)用在你的項目中,將會對你的項目的效率和可重用是至關(guān)重要的。本文將對目前最流行、最常用的Struts和Spring兩種MVC框架的比較。

一、Struts

Struts是Apache軟件基金下Jakarta項目的一部分。Struts框架的主要架構(gòu)設(shè)計和開發(fā)者是Craig R.McClanahan。Struts是目前Java Web MVC框架中不爭的王者。經(jīng)過長達五年的發(fā)展,Struts已經(jīng)逐漸成長為一個穩(wěn)定、成熟的框架,并且占有了MVC框架中最大的市場份額。但是 Struts某些技術(shù)特性上已經(jīng)落后于新興的MVC框架。面對Spring MVC、Webwork2 這些設(shè)計更精密,擴展性更強的框架,Struts受到了前所未有的挑戰(zhàn)。但站在產(chǎn)品開發(fā)的角度而言,Struts仍然是最穩(wěn)妥的選擇。

Struts有一組相互協(xié)作的類(組件)、Serlvet以及jsp tag lib組成?;趕truts構(gòu)架的web應(yīng)用程序基本上符合JSP Model2的設(shè)計標準,可以說是MVC設(shè)計模式的一種變化類型。根據(jù)上面對framework的描述,我們很容易理解為什么說Struts是一個web framwork,而不僅僅是一些標記庫的組合。但 Struts 也包含了豐富的標記庫和獨立于該框架工作的實用程序類。Struts有其自己的控制器(Controller),同時整合了其他的一些技術(shù)去實現(xiàn)模型層(Model)和視圖層(View)。在模型層,Struts可以很容易的與數(shù)據(jù)訪問技術(shù)相結(jié)合,包括EJB,JDBC和Object Relation Bridge。在視圖層,Struts能夠與JSP, Velocity Templates,XSL等等這些表示層組件想結(jié)合。

Struts的體系結(jié)構(gòu)

struts framework是MVC 模式的體現(xiàn),下面我們就從分別從模型、視圖、控制來看看struts的體系結(jié)構(gòu)(Architecture)。

從視圖角度(View)

主要由JSP建立,struts自身包含了一組可擴展的自定義標簽庫(TagLib),可以簡化創(chuàng)建用戶界面的過程。目前包括:Bean Tags,HTML Tags,Logic Tags,Nested Tags,Template Tags這幾個Taglib。有關(guān)它們的詳細資料請參考struts用戶手冊。

從模型角度(Model)

模型主要是表示一個系統(tǒng)的狀態(tài)(有時候,改變系統(tǒng)狀態(tài)的業(yè)務(wù)邏輯操作也劃分到模型中)。在Struts中,系統(tǒng)的狀態(tài)主要有ActiomForm Bean體現(xiàn),一般情況下,這些狀態(tài)是非持久性的。如果需要將這些狀態(tài)轉(zhuǎn)化為持久性數(shù)據(jù)存儲,Struts本身也提供了Utitle包,可以方便的與數(shù)據(jù)庫操作。

從控制器角度(Controller)

在Struts framework中,Controller主要是ActionServlet,但是對于業(yè)務(wù)邏輯的操作則主要由Action、 ActionMapping、ActionForward這幾個組件協(xié)調(diào)完成(也許這幾個組件,應(yīng)該劃分到模型中的業(yè)務(wù)邏輯一塊)。其中,Action扮演了真正的業(yè)務(wù)邏輯的實現(xiàn)者,而ActionMapping和ActionForward則指定了不同業(yè)務(wù)邏輯或流程的運行方向。

對于Struts 如何控制、處理客戶請求,讓我們通過對struts的四個核心組件介紹來具體說明。這幾個組件就是:ActionServlet。Action Classes,Action Mapping(此處包括ActionForward),ActionFrom Bean。

二、Spring

Spring實際上是《Expert One-on-One J2EE Design and Development》一書中所闡述的設(shè)計思想的具體實現(xiàn)。在One-on-One一書中,Rod Johnson 倡導(dǎo)J2EE 實用主義的設(shè)計思想,并隨書提供了一個初步的開發(fā)框架實現(xiàn)(interface21 開發(fā)包)。而Spring 正是這一思想的更全面和具體的體現(xiàn)。Rod Johnson在interface21 開發(fā)包的基礎(chǔ)之上,進行了進一步的改造和擴充,使其發(fā)展為一個更加開放、清晰、全面、高效的開發(fā)框架。

Spring是一個開源框架,由Rod Johnson創(chuàng)建并且在他的著作《J2EE設(shè)計開發(fā)編程指南》里進行了描述。它是為了解決企業(yè)應(yīng)用開發(fā)的復(fù)雜性而創(chuàng)建的。Spring使使用基本的 JavaBeans來完成以前只可能由EJB完成的事情變得可能了。然而,Spring的用途不僅限于服務(wù)器端的開發(fā)。從簡單性、可測試性和松耦合的角度而言,任何Java應(yīng)用都可以從Spring中受益。

簡單來說,Spring是一個輕量的控制反轉(zhuǎn)和面向切面的容器框架。當然,這個描述有點過于簡單。但它的確概括出了Spring是做什么的。為了更好地理解Spring,讓我們分析一下這個描述:

1、輕量

從大小與開銷兩方面而言Spring都是輕量的。完整的Spring框架可以在一個大小只有1MB多的JAR文件里發(fā)布。并且Spring所需的處理開銷也是微不足道的。此外,Spring是非侵入式的:典型地,Spring應(yīng)用中的對象不依賴于輕量,從大小與開銷兩方面而言Spring都是輕量的。完整的Spring框架可以在一個大小只有1MB多的JAR文件里發(fā)布。并且Spring所需的處理開銷也是微不足道的。此外,Spring是非侵入式的:典型地,Spring應(yīng)用中的對象不依賴于Spring的特定類。

2、控制反轉(zhuǎn)

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

3、面向切面

Spring包含對面向切面編程的豐富支持,允許通過分離應(yīng)用的業(yè)務(wù)邏輯與系統(tǒng)服務(wù)(例如審計與事物管理)進行內(nèi)聚性的開發(fā)。應(yīng)用對象只做它們應(yīng)該做的,完成業(yè)務(wù)邏輯,僅此而已。它們并不負責(甚至是意識)其它的系統(tǒng)關(guān)注點,例如日志或事物支持。

4、容器

Spring包含和管理應(yīng)用對象的配置和生命周期,在這個意義上它是一種容器。你可以配置你的每個bean如何被創(chuàng)建?基于一個配置原形為你的bean 創(chuàng)建一個單獨的實例或者每次需要時都生成一個新的實例以及它們是如何相互關(guān)聯(lián)的。然而,Spring不應(yīng)該被混同于傳統(tǒng)的重量的EJB容器,它們經(jīng)常是龐大與笨重的,難以使用。

框架:Spring是由簡單的組件配置和組合復(fù)雜的應(yīng)用成為可能。在Spring中,應(yīng)用對象被聲明式地組合,典型地是在一個XML文件里。Spring也提供了很多基礎(chǔ)功能(事務(wù)管理、持久性框架集成等等),將應(yīng)用邏輯的開發(fā)留給了你。

所有Spring的這些特征使你能夠編寫更干凈、更可管理、并且更易于測試的代碼。它們也為Spring中的各種子框架提供了基礎(chǔ)。

【編輯推薦】

  1. 讓DWR和Spring一起工作
  2. 詳細介紹Spring框架
  3. Spring 2.0新功能
  4. 如何集成Struts和Spring
  5. Spring對Quartz任務(wù)調(diào)度提供支持
責任編輯:佚名 來源: csdn
相關(guān)推薦

2010-07-14 16:28:58

配線架

2015-05-06 10:05:22

javajava框架spring aop

2010-07-13 10:47:18

Perl面向?qū)ο?/a>

2009-06-23 16:29:51

JSFSpring MVCStruts 2

2012-10-16 09:40:38

洗牌算法

2010-11-22 13:45:43

MySQL表存儲結(jié)構(gòu)

2009-09-08 15:22:20

Spring依賴注入

2022-09-07 08:44:28

UbuntuManjaroLinux 發(fā)行版

2010-09-06 17:26:54

SQL函數(shù)

2009-06-23 18:18:13

SpringHibernate

2009-10-20 13:59:59

網(wǎng)絡(luò)綜合布線系統(tǒng)

2020-06-18 08:18:35

密碼加密安全

2009-06-15 15:02:48

Spring定時器

2009-12-07 13:42:24

WCF框架

2021-02-24 13:51:45

BIMAI建筑技術(shù)

2009-07-31 14:04:11

C#時間比較大小

2009-11-12 10:24:19

ADO.NET代碼

2009-11-02 11:00:42

2010-11-26 13:58:48

MySQL字符串匹配

2011-05-17 09:31:41

點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 二区av | 精品视频在线观看 | 亚洲欧美综合 | 欧美在线一区二区三区 | 国产一区二区三区精品久久久 | 九九久久国产 | 成人免费小视频 | 久久精品亚洲国产奇米99 | 久久精品| 日韩在线播放网址 | 成人综合久久 | 日韩精品在线免费观看 | 国产欧美一区二区三区在线看 | 成人二区三区 | 韩国毛片一区二区三区 | 我要看一级片 | 91久久爽久久爽爽久久片 | 亚洲免费视频网址 | 一级片在线视频 | 久久久久免费精品国产小说色大师 | 日本成人午夜影院 | 亚洲精品福利视频 | 亚洲91精品| 美女久久 | 精品久久香蕉国产线看观看亚洲 | 久久久夜夜夜 | 国产精品日日做人人爱 | 中文字幕第5页 | 妖精视频一区二区三区 | 欧美日韩国产一区二区三区 | 福利久久| 男女羞羞视频网站 | 中文字幕 在线观看 | 婷婷亚洲综合 | 天天碰日日操 | 深夜福利亚洲 | 黄色电影在线免费观看 | 福利一区在线观看 | 97伦理影院 | 曰批视频在线观看 | 中文字幕国产视频 |