SSH三大框架優(yōu)缺點_第1頁
SSH三大框架優(yōu)缺點_第2頁
SSH三大框架優(yōu)缺點_第3頁
SSH三大框架優(yōu)缺點_第4頁
SSH三大框架優(yōu)缺點_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

Struts的原理和優(yōu)點.Struts工作原理MVC即Model-View-Controller的縮寫,是一種常用的設(shè)計模式。MVC減弱了業(yè)務(wù)邏輯接口和數(shù)據(jù)接口之間的耦合,以及讓視圖層更富于變化。MVC的工作原理,如下圖1所示:Struts是MVC的一種實現(xiàn),它將Servlet和JSP標(biāo)記(屬于J2EE規(guī)范)用作實現(xiàn)的一部分。Struts繼承了MVC的各項特性,并根據(jù)J2EE的特點,做了相應(yīng)的變化與擴(kuò)展。Struts的工作原理,視圖:主要由JSP生成頁面完成視圖,Struts提供豐富的JSP標(biāo)簽庫:Html,Bean,Logic,Template等,這有利于分開表現(xiàn)邏輯和程序邏輯。控制:在Struts中,承擔(dān)MVC中Controller角色的是一個Servlet,叫ActionServlet。ActionServlet是一個通用的控制組件。這個控制組件提供了處理所有發(fā)送到Struts的HTTP請求的入口點。它截取和分發(fā)這些請求到相應(yīng)的動作類(這些動作類都是Action類的子類)。另外控制組件也負(fù)責(zé)用相應(yīng)的請求參數(shù)填充ActionFrom(通常稱之為FromBean),并傳給動作類(通常稱之為ActionBean)。動作類實現(xiàn)核心商業(yè)邏輯,它可以訪問javabean或調(diào)用EJB。最后動作類把控制權(quán)傳給后續(xù)的JSP文件,后者生成視圖。所有這些控制邏輯利用Struts-config.xml文件來配置。模型:模型以一個或多個javabean的形式存在。這些bean分為三類:ActionForm、Action、JavaBeanorEJB。ActionForm通常稱之為FormBean,封裝了來自于Client的用戶請求信息,如表單信息。Action通常稱之為ActionBean,獲取從ActionSevlet傳來的FormBean,取出FormBean中的相關(guān)信息,并做出相關(guān)的處理,一般是調(diào)用JavaBean或EJB等。流程:在Struts中,用戶的請求一般以*.do作為請求服務(wù)名,所有的*.do請求均被指向ActionSevlet,ActionSevlet根據(jù)Struts-config.xml中的配置信息,將用戶請求封裝成一個指定名稱的FormBean,并將此FormBean傳至指定名稱的ActionBean,由ActionBean完成相應(yīng)的業(yè)務(wù)操作,如文件操作,數(shù)據(jù)庫操作等。每一個*.do均有對應(yīng)的FormBean名稱和ActionBean名稱,這些在Struts-config.xml中配置。核心:Struts的核心是ActionSevlet,ActionSevlet的核心是Struts-config.xml。Struts優(yōu)缺點優(yōu)點:1■開源軟件,能更深入的了解其內(nèi)部實現(xiàn)機制。2,Taglib標(biāo)記庫,靈活動用,能大大提高開發(fā)效率。3?頁面導(dǎo)航使系統(tǒng)的脈絡(luò)更加清晰。通過一個配置文件,即可把握整個系統(tǒng)各部分之間的聯(lián)系,這對于后期的維護(hù)有著莫大的好處。尤其是當(dāng)另一批開發(fā)者接手這個項目時,這種優(yōu)勢體現(xiàn)得更加明顯。4.提供Exception處理機制.5.數(shù)據(jù)庫鏈接池管理6.Struts的Action必需是thread—safe方式,它僅僅允許一個實例去處理所有的請求。所以action用到的所有的資源都必需統(tǒng)一同步,這個就引起了線程安全的問題。缺點:Taglib是struts的一大優(yōu)勢,但對于初學(xué)者而言,卻需要一個持續(xù)學(xué)習(xí)的過程,甚至還會打亂你網(wǎng)頁編寫的習(xí)慣,但是,當(dāng)你習(xí)慣了它時,你會覺得它真的很棒。Struts將MVC的Controller—分為三,在獲得結(jié)構(gòu)更加清晰的同時,也增加了系統(tǒng)的復(fù)雜度。ActionForms使用不便、無法進(jìn)行單元測試(StrutsTestCase只能用于集成)Spring的原理和優(yōu)點Spring真正的精華是它的Ioc模式實現(xiàn)的BeanFactory和AOP,它自己在這個基礎(chǔ)上延伸的功能有些畫蛇添足。Ioc模式是什么可伸縮性和函輕量,誰是實用系統(tǒng)的架構(gòu)主選?Spring它是一個開源的項目,而且目前非?;钴S;它基于IoC(InversionofControl,反向控制)和AOP的構(gòu)架多層j2ee系統(tǒng)的框架,但它不強迫你必須在每一層中必須使用Spring,因為它模塊化的很好,允許你根據(jù)自己的需要選擇使用它的某一個模塊;它實現(xiàn)了很優(yōu)雅的MVC,對不同的數(shù)據(jù)訪問技術(shù)提供了統(tǒng)一的接口,采用IoC使得可以很容易的實現(xiàn)bean的裝配,提供了簡潔的AOP并據(jù)此實現(xiàn)TranscationManagment,等等優(yōu)點Spring能有效地組織你的中間層對象,不管你是否選擇使用了EJB。如果你僅僅使用了Struts或其他為J2EE的API特制的framework,Spring致力于解決剩下的問題。Spring能消除在許多工程中常見的對Singleton的過多使用。根據(jù)我的經(jīng)驗,這是一個很大的問題,它降低了系統(tǒng)的可測試性和面向?qū)ο蟮某潭?。通過一種在不同應(yīng)用程序和項目間一致的方法來處理配置文件,Spring能消除各種各樣自定義格式的屬性文件的需要。曾經(jīng)對某個類要尋找的是哪個魔法般的屬性項或系統(tǒng)屬性感到不解,為此不得不去讀Javadoc甚至源編碼?有了Spring,你僅僅需要看看類的JavaBean屬性。InversionofControl的使用(在下面討論)幫助完成了這種簡化。?通過把對接口編程而不是對類編程的代價幾乎減少到?jīng)]有,Spring能夠促進(jìn)養(yǎng)成好的編程習(xí)慣。Spring被設(shè)計為讓使用它創(chuàng)建的應(yīng)用盡可能少的依賴于他的APIs。在Spring應(yīng)用中的大多數(shù)業(yè)務(wù)對象沒有依賴于Spring。使用Spring構(gòu)建的應(yīng)用程序易于單元測試。Spring能使EJB的使用成為一個實現(xiàn)選擇,而不是應(yīng)用架構(gòu)的必然選擇。你能選擇用POJOs或localEJBs來實現(xiàn)業(yè)務(wù)接口,卻不會影響調(diào)用代碼。Spring幫助你解決許多問題而無需使用EJB。Spring能提供一種EJB的替換物,它們適用于許多web應(yīng)用。例如,Spring能使用AOP提供聲明性事務(wù)管理而不通過EJB容器,如果你僅僅需要與單個數(shù)據(jù)庫打交道,甚至不需要一個JTA實現(xiàn)。i.Spring為數(shù)據(jù)存取提供了一個一致的框架,不論是使用的是JDBC還是0/Rmapping產(chǎn)品(如Hibernate)。Spring確實使你能通過最簡單可行的解決辦法來解決你的問題。而這是有有很大價值的。缺點:使用人數(shù)不多、jsp中要寫很多代碼、控制器過于靈活,缺少一個公用控制器Hibernate的原理和優(yōu)點。Hibernate使用了J2EE架構(gòu)中的如下技術(shù):JDBC、JTA、JNDI。其中JDBC是一個支持關(guān)系數(shù)據(jù)庫操作的一個基礎(chǔ)層;它與JNDI和JTA—起結(jié)合,使得Hibernate可以方便地集成到J2EE應(yīng)用服務(wù)器中去。在這里,我們不會詳細(xì)地去討論HibernateAPI接口中的所有方法,我們只簡要講一下每個主要接口的功能,如果你想了解得更多的話,你可以在Hibernate的源碼包中的net.sf.hibernate子包中去查看這些接口的源代碼。下面我們依次講一下所有的主要接口:核心接口以下5個核心接口幾乎在任何實際開發(fā)中都會用到。通過這些接口,你不僅可以存儲和獲得持久對象,并且能夠進(jìn)行事務(wù)控制。Session接口Session接口對于Hibernate開發(fā)人員來說是一個最重要的接口。然而在Hibernate中,實例化的Session是一個輕量級的類,創(chuàng)建和銷毀它都不會占用很多資源。這在實際項目中確實很重要,因為在客戶程序中,可能會不斷地創(chuàng)建以及銷毀Session對象,如果Session的開銷太大,會給系統(tǒng)帶來不良影響。SessionFactory接口這里用到了一個設(shè)計模式一一工廠模式,用戶程序從工廠類SessionFactory中取得Session的實例。令你感到奇怪的是SessionFactory并不是輕量級的!實際上它的設(shè)計者的意圖是讓它能在整個應(yīng)用中共享。典型地來說,一個項目通常只需要一個SessionFactory就夠了,但是當(dāng)你的項目要操作多個數(shù)據(jù)庫時,那你必須為每個數(shù)據(jù)庫指定一個SessionFactory。SessionFactory在Hibernate中實際起到了一個緩沖區(qū)的作用,它緩沖了Hibernate自動生成的SQL語句和一些其它的映射數(shù)據(jù),還緩沖了一些將來有可能重復(fù)利用的數(shù)據(jù)。Configuration接口Configuration接口的作用是對Hibernate進(jìn)行配置,以及對它進(jìn)行啟動。在Hibernate的啟動過程中,Configuration類的實例首先定位映射文檔的位置,讀取這些配置,然后創(chuàng)建一個SessionFactory對象。Query和Criteria接口Query接口讓你方便地對數(shù)據(jù)庫及持久對象進(jìn)行查詢,它可以有兩種表達(dá)方式:HQL語言或本地數(shù)據(jù)庫的SQL語句。Query經(jīng)常被用來綁定查詢參數(shù)、限制查詢記錄數(shù)量,并最終執(zhí)行查詢操作。Criteria接口與Query接口非常類似,它允許你創(chuàng)建并執(zhí)行面向?qū)ο蟮臉?biāo)準(zhǔn)化查詢。值得注意的是Query接口也是輕量級的,它不能在Session之外使用。Callback接口當(dāng)一些有用的事件發(fā)生時一一例如持久對象的載入、存儲、刪除時,Callback接口會通知Hibernate去接收一個通知消息。一般而言,Callback接口在用戶程序中并不是必須的,但你要在你的項目中創(chuàng)建審計日志時,你可能會用到它。以下是它的策略接口:?主鍵的生成(IdentifierGenerator接口)?本地SQL語言支持(Dialect抽象類)?緩沖機制(Cache和CacheProvider接口)?JDBC連接管理(ConnectionProvider接口).事務(wù)管理(TransactionFactory,Transaction,和TransactionManage「Lookup接口)?ORM策略(ClassPersister接口)?屬性訪問策略(PropertyAccessor接口)?代理對象的創(chuàng)建(ProxyFactory接口)Hibernate為以上所列的機制分別創(chuàng)建了一個缺省的實現(xiàn),因此如果你只是要增強它的某個策略的功能的話,只需簡單地繼承這個類就可以了,沒有必要從頭開始寫代碼。Hibernate運行在兩種環(huán)境下:可管理環(huán)境和不可管理環(huán)境?可管理環(huán)境一一這種環(huán)境可管理如下資源:池資源管理,諸如數(shù)據(jù)庫連接池和,還有事務(wù)管理、安全定義。一些典型的J2EE服務(wù)器(JBoss、Weblogic、WebSphere)已經(jīng)實現(xiàn)了這些。?不可管理環(huán)境——只是提供了一些基本的功能,諸如像Jetty或Tomcat這樣的servlet容器環(huán)境。優(yōu)點:Hibernate是JDBC的輕量級的對象封裝,它是一個獨立的對象持久層框架。Hibernate可以用在任何JDBC可以使用的場合,例如Java應(yīng)用程序的數(shù)據(jù)庫訪問代碼,DAO接口的實現(xiàn)類,甚至可以是BMP里面的訪問數(shù)據(jù)庫的代碼。Hibernate是一個和JDBC密切關(guān)聯(lián)的框架,所以Hibernate的兼容性和JDBC驅(qū)動,和數(shù)據(jù)庫都有一定的關(guān)系,但是和使用它的Java程序,和AppServer沒有任何關(guān)系,也不存在兼容性問題。Hibernate不能用來直接和EntityBean做對比,只有放在整個J2EE項目的框架中才能比較。并且即使是放在軟件整體框架中來看,Hibernate也是做為JDBC的替代者出現(xiàn)的,而不是EntityBean的替代者出現(xiàn)的,Hibernate是一個開放源代碼的對象關(guān)系映射框架,它對JDBC進(jìn)行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數(shù)據(jù)庫。Hibernate可以應(yīng)用在任何使用JDBC的場合。Hibernate使用Java反射機制而不是字節(jié)碼增強程序來實現(xiàn)透明性。Hibernate的性能非常好,因為它是個輕量級框架。映射的靈活性很出色。它支持各種關(guān)系數(shù)據(jù)庫,從一對一到多對多的各種復(fù)雜關(guān)系。缺點:它限制您所使用的對象模型。(例如,一個持久性類不能映射到多個表)。讓我再列一次我已經(jīng)列n次的框架結(jié)構(gòu):傳統(tǒng)的架構(gòu):1)SessionBeanv->EntityBeanv->DB為了解決性能障礙的替代架構(gòu):2)SessionBeanv->DAOv->JDBCv->DB使用Hibernate來提高上面架構(gòu)的開發(fā)效率的架構(gòu):3)SessionBeanv->DAOv->Hibernatev->DB就上面3個架構(gòu)來分析:1>內(nèi)存消耗:采用JDBC的架構(gòu)2無疑是最省內(nèi)存的,Hibernate的架構(gòu)次之,EB的架構(gòu)1最差。2、運行效率:如果JDBC的代碼寫的非常優(yōu)化,那么JDBC架構(gòu)運行效率最高,但是實際項

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論