




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Struts的原理和優(yōu)點(diǎn).Struts工作原理MVC即Model-View-Controller的縮寫,是一種常用的設(shè)計(jì)模式。MVC 減弱了業(yè)務(wù)邏輯接口和數(shù)據(jù)接口之間的耦合,以及讓視圖層更富于變化。MVC的工作原理,如下圖1所示:Struts 是MVC的一種實(shí)現(xiàn),它將 Servlet和 JSP 標(biāo)記(屬于 J2EE 規(guī)范)用作實(shí)現(xiàn)的一部分。Struts繼承了MVC的各項(xiàng)特性,并根據(jù)J2EE的特點(diǎn),做了相應(yīng)的變化與擴(kuò)展。Struts的工作原理,視圖:主要由JSP生成頁面完成視圖,Struts提供豐富的JSP 標(biāo)簽庫: Html,Bean,Logic,Template等,這有利于分開表現(xiàn)邏輯和程序
2、邏輯。控制:在Struts中,承擔(dān)MVC中Controller角色的是一個Servlet,叫ActionServlet。ActionServlet是一個通用的控制組件。這個控制組件提供了處理所有發(fā)送到Struts的HTTP請求的入口點(diǎn)。它截取和分發(fā)這些請求到相應(yīng)的動作類(這些動作類都是Action類的子類)。另外控制組件也負(fù)責(zé)用相應(yīng)的請求參數(shù)填充 Action From(通常稱之為FromBean),并傳給動作類(通常稱之為ActionBean)。動作類實(shí)現(xiàn)核心商業(yè)邏輯,它可以訪問java bean 或調(diào)用EJB。最后動作類把控制權(quán)傳給后續(xù)的JSP 文件,后者生成視圖。所有這些控制邏輯利用St
3、ruts-config.xml文件來配置。模型:模型以一個或多個java bean的形式存在。這些bean分為三類:Action Form、Action、JavaBean or EJB。Action Form通常稱之為FormBean,封裝了來自于Client的用戶請求信息,如表單信息。Action通常稱之為ActionBean,獲取從ActionSevlet傳來的FormBean,取出FormBean中的相關(guān)信息,并做出相關(guān)的處理,一般是調(diào)用Java Bean或EJB等。流程:在Struts中,用戶的請求一般以*.do作為請求服務(wù)名,所有的*.do請求均被指向ActionSevlet,Act
4、ionSevlet根據(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)缺點(diǎn)優(yōu)點(diǎn):1.開源軟件,能更深入的了解其內(nèi)部實(shí)現(xiàn)機(jī)制。2.Taglib標(biāo)記庫,靈活動用,能大大提高開發(fā)
5、效率。3.頁面導(dǎo)航使系統(tǒng)的脈絡(luò)更加清晰。通過一個配置文件,即可把握整個系統(tǒng)各部分之間的聯(lián)系,這對于后期的維護(hù)有著莫大的好處。尤其是當(dāng)另一批開發(fā)者接手這個項(xiàng)目時,這種優(yōu)勢體現(xiàn)得更加明顯。4. 提供Exception處理機(jī)制 . 5. 數(shù)據(jù)庫鏈接池管理 6. Struts 的Action必需是threadsafe方式,它僅僅允許一個實(shí)例去處理所有的請求。所以action用到的所有的資源都必需統(tǒng)一同步,這個就引起了線程安全的問題。缺點(diǎn):Taglib是Struts的一大優(yōu)勢,但對于初學(xué)者而言,卻需要一個持續(xù)學(xué)習(xí)的過程,甚至還會打亂你網(wǎng)頁編寫的習(xí)慣,但是,當(dāng)你習(xí)慣了它時,你會覺得它真
6、的很棒。Struts將MVC的Controller一分為三,在獲得結(jié)構(gòu)更加清晰的同時,也增加了系統(tǒng)的復(fù)雜度。ActionForms使用不便、無法進(jìn)行單元測試(StrutsTestCase只能用于集成)Spring的原理和優(yōu)點(diǎn)Spring真正的精華是它的Ioc模式實(shí)現(xiàn)的BeanFactory和AOP,它自己在這個基礎(chǔ)上延伸的功能有些畫蛇添足。Ioc模式是什么可伸縮性和重/輕量,誰是實(shí)用系統(tǒng)的架構(gòu)主選? Spring它是一個開源的項(xiàng)目,而且目前非常活躍;它基于IoC(Inversion of Control,反向控制)和AOP的構(gòu)架多層j2ee系統(tǒng)的框架,但它不強(qiáng)迫你必須在每一層 中必須使用Spr
7、ing,因?yàn)樗K化的很好,允許你根據(jù)自己的需要選擇使用它的某一個模塊;它實(shí)現(xiàn)了很優(yōu)雅的MVC,對不同的數(shù)據(jù)訪問技術(shù)提供了統(tǒng)一的 接口,采用IoC使得可以很容易的實(shí)現(xiàn)bean的裝配,提供了簡潔的AOP并據(jù)此實(shí)現(xiàn)Transcation Managment,等等優(yōu)點(diǎn) a. Spring能有效地組織你的中間層對象,不管你是否選擇使用了EJB。如果你僅僅使用了Struts或其他為J2EE的 API特制的framework,Spring致力于解決剩下的問題。 b. Spring能消除在許多工程中常見的對Singleton的過多使用。根據(jù)我的經(jīng)驗(yàn),這是一個很大的問題,它降低了系統(tǒng)的可測試性和面向?qū)ο蟮某潭?/p>
8、。 c. 通過一種在不同應(yīng)用程序和項(xiàng)目間一致的方法來處理配置文件,Spring能消除各種各樣自定義格式的屬性文件的需要。曾經(jīng)對某個類要尋找的是哪個魔法般的屬性項(xiàng)或系統(tǒng)屬性感到不解,為此不得不去讀Javadoc甚至源編碼?有了Spring,你僅僅需要看看類的JavaBean屬性。Inversion of Control的使用(在下面討論)幫助完成了這種簡化。 d.? 通過把對接口編程而不是對類編程的代價(jià)幾乎減少到?jīng)]有,Spring能夠促進(jìn)養(yǎng)成好的編程習(xí)慣。 e. Spring被設(shè)計(jì)為讓使用它創(chuàng)建的應(yīng)用盡可能少的依賴于他的APIs。在Spring應(yīng)用中的大多數(shù)業(yè)務(wù)對象沒有依賴于Spring。 f.
9、 使用Spring構(gòu)建的應(yīng)用程序易于單元測試。 g. Spring能使EJB的使用成為一個實(shí)現(xiàn)選擇,而不是應(yīng)用架構(gòu)的必然選擇。你能選擇用POJOs或local EJBs來實(shí)現(xiàn)業(yè)務(wù)接口,卻不會影響調(diào)用代碼。 h. Spring幫助你解決許多問題而無需使用EJB。Spring能提供一種EJB的替換物,它們適用于許多web應(yīng)用。例如,Spring能使用AOP提供聲明性事務(wù)管理而不通過EJB容器,如果你僅僅需要與單個數(shù)據(jù)庫打交道,甚至不需要一個JTA實(shí)現(xiàn)。 i. Spring為數(shù)據(jù)存取提供了一個一致的框架,不論是使用的是JDBC還是O/R mapping產(chǎn)品(如Hibernate)。 Spring確實(shí)
10、使你能通過最簡單可行的解決辦法來解決你的問題。而這是有有很大價(jià)值的。缺點(diǎn):使用人數(shù)不多、jsp中要寫很多代碼、控制器過于靈活,缺少一個公用控制器Hibernate的原理和優(yōu)點(diǎn)。Hibernate使用了J2EE架構(gòu)中的如下技術(shù):JDBC、JTA、JNDI。其中JDBC是一個支持關(guān)系數(shù)據(jù)庫操作的一個基礎(chǔ)層;它與JNDI和JTA一起結(jié)合,使得Hibernate可以方便地集成到J2EE應(yīng)用服務(wù)器中去。 在這里,我們不會詳細(xì)地去討論Hibernate API接口中的所有方法,我們只簡要講一下每個主要接口的功能,如果你想了解得更多的話,你可以在Hibernate的源碼包中的net.sf.hibernate
11、子包中去查看這些接口的源代碼。下面我們依次講一下所有的主要接口: 核心接口 以下5個核心接口幾乎在任何實(shí)際開發(fā)中都會用到。通過這些接口,你不僅可以存儲和獲得持久對象,并且能夠進(jìn)行事務(wù)控制。 Session接口 Session接口對于Hibernate 開發(fā)人員來說是一個最重要的接口。然而在Hibernate中,實(shí)例化的Session是一個輕量級的類,創(chuàng)建和銷毀它都不會占用很多資源。這在實(shí)際項(xiàng)目中確實(shí)很重要,因?yàn)樵诳蛻舫绦蛑?,可能會不斷地?chuàng)建以及銷毀Session對象,如果Session的開銷太大,會給系統(tǒng)帶來不良影響。SessionFactory 接口 這里用到了一個設(shè)計(jì)模式工廠模式,用戶程序
12、從工廠類SessionFactory中取得Session的實(shí)例。 令你感到奇怪的是SessionFactory并不是輕量級的!實(shí)際上它的設(shè)計(jì)者的意圖是讓它能在整個應(yīng)用中共享。典型地來說,一個項(xiàng)目通常只需要一個SessionFactory就夠了,但是當(dāng)你的項(xiàng)目要操作多個數(shù)據(jù)庫時,那你必須為每個數(shù)據(jù)庫指定一個SessionFactory。 SessionFactory在Hibernate中實(shí)際起到了一個緩沖區(qū)的作用,它緩沖了Hibernate自動生成的SQL語句和一些其它的映射數(shù)據(jù),還緩沖了一些將來有可能重復(fù)利用的數(shù)據(jù)。 Configuration 接口 Configuration接口的作用是對H
13、ibernate進(jìn)行配置,以及對它進(jìn)行啟動。在Hibernate的啟動過程中,Configuration類的實(shí)例首先定位映射文檔的位置,讀取這些配置,然后創(chuàng)建一個SessionFactory對象。 Query和Criteria接口 Query接口讓你方便地對數(shù)據(jù)庫及持久對象進(jìn)行查詢,它可以有兩種表達(dá)方式:HQL語言或本地?cái)?shù)據(jù)庫的SQL語句。Query經(jīng)常被用來綁定查詢參數(shù)、限制查詢記錄數(shù)量,并最終執(zhí)行查詢操作。 Criteria接口與Query接口非常類似,它允許你創(chuàng)建并執(zhí)行面向?qū)ο蟮臉?biāo)準(zhǔn)化查詢。 值得注意的是Query接口也是輕量級的,它不能在Session之外使用。 Callback 接口
14、 當(dāng)一些有用的事件發(fā)生時例如持久對象的載入、存儲、刪除時,Callback接口會通知Hibernate去接收一個通知消息。一般而言,Callback接口在用戶程序中并不是必須的,但你要在你的項(xiàng)目中創(chuàng)建審計(jì)日志時,你可能會用到它。以下是它的策略接口:· 主鍵的生成 (IdentifierGenerator 接口) · 本地SQL語言支持 (Dialect 抽象類) · 緩沖機(jī)制 (Cache 和CacheProvider 接口) · JDBC 連接管理 (ConnectionProvider接口) .事務(wù)管理 (TransactionFactory, Tr
15、ansaction, 和 TransactionManagerLookup 接口) · ORM 策略 (ClassPersister 接口) · 屬性訪問策略 (PropertyAccessor 接口) · 代理對象的創(chuàng)建 (ProxyFactory接口) Hibernate為以上所列的機(jī)制分別創(chuàng)建了一個缺省的實(shí)現(xiàn),因此如果你只是要增強(qiáng)它的某個策略的功能的話,只需簡單地繼承這個類就可以了,沒有必要從頭開始寫代碼。Hibernate運(yùn)行在兩種環(huán)境下:可管理環(huán)境和不可管理環(huán)境 · 可管理環(huán)境這種環(huán)境可管理如下資源:池資源管理,諸如數(shù)據(jù)庫連接池和,還有事務(wù)管理
16、、安全定義。一些典型的J2EE服務(wù)器(JBoss、Weblogic、WebSphere)已經(jīng)實(shí)現(xiàn)了這些。 · 不可管理環(huán)境只是提供了一些基本的功能,諸如像Jetty或Tomcat這樣的servlet容器環(huán)境。優(yōu)點(diǎn):Hibernate是JDBC的輕量級的對象封裝,它是一個獨(dú)立的對象持久層框架。Hibernate可以用在任何JDBC可以使用的場合,例如Java應(yīng)用程序的數(shù)據(jù)庫訪問代碼,DAO接口的實(shí)現(xiàn)類,甚至可以是BMP里面的訪問數(shù)據(jù)庫的代碼。Hibernate是一個和JDBC密切關(guān)聯(lián)的框架,所以Hibernate的兼容性和JDBC驅(qū)動,和數(shù)據(jù)庫都有一定的關(guān)系,但是和使用它的Java程序
17、,和App Server沒有任何關(guān)系,也不存在兼容性問題。Hibernate不能用來直接和Entity Bean做對比,只有放在整個J2EE項(xiàng)目的框架中才能比較。并且即使是放在軟件整體框架中來看,Hibernate也是做為JDBC的替代者出現(xiàn)的,而不是Entity Bean的替代者出現(xiàn)的,Hibernate是一個開放源代碼的對象關(guān)系映射框架,它對JDBC進(jìn)行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數(shù)據(jù)庫。Hibernate可以應(yīng)用在任何使用JDBC的場合。 Hibernate 使用 Java 反射機(jī)制 而不是字節(jié)碼增強(qiáng)程序來實(shí)現(xiàn)透明性。 Hibernate
18、 的性能非常好,因?yàn)樗莻€輕量級框架。 映射的靈活性很出色。它支持各種關(guān)系數(shù)據(jù)庫,從一對一到多對多的各種復(fù)雜關(guān)系。 缺點(diǎn):它限制您所使用的對象模型。(例如,一個持久性類不能映射到多個表)。讓我再列一次我已經(jīng)列n次的框架結(jié)構(gòu):傳統(tǒng)的架構(gòu):1) Session Bean <-> Entity Bean <-> DB為了解決性能障礙的替代架構(gòu):2) Session Bean <-> DAO <-> JDBC <-> DB使用Hibernate來提高上面架構(gòu)的開發(fā)效率的架構(gòu):3) Session Bean <-> DAO <-> Hibernate <-> DB 就上面3個架構(gòu)來分析:1、內(nèi)存消耗:采用JDBC的架構(gòu)2無疑是最省內(nèi)存的,Hibernate的架構(gòu)次之,EB的架構(gòu)1最差。2、運(yùn)行效率:如果JDBC的代碼寫的非常優(yōu)化,那么JDBC架構(gòu)運(yùn)
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- CO2減排效果評價(jià)體系-洞察及研究
- 中小私營企業(yè)概述
- 精索扭轉(zhuǎn)動物模型微生物學(xué)-洞察及研究
- 2025年la技師考試題及答案
- 幼兒小班健康活動《好玩的圈》說課稿
- 滬教版三下數(shù)學(xué)試卷
- 杭州市高三聯(lián)考數(shù)學(xué)試卷
- 2025-2030中國清潔行業(yè)發(fā)展前景及發(fā)展策略與投資風(fēng)險(xiǎn)研究報(bào)告
- 2025-2030中國水槽濾網(wǎng)行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略研究報(bào)告
- 2025-2030中國數(shù)據(jù)泄漏預(yù)防產(chǎn)品行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略研究報(bào)告
- 水利工程設(shè)計(jì)概估算編制規(guī)定工程部分
- 浙江明體新材料科技有限公司年產(chǎn)10000噸聚醚多元醇彈性體建設(shè)項(xiàng)目環(huán)評報(bào)告
- GB/T 27030-2025合格評定第三方符合性標(biāo)志的通用要求
- 2025年煤礦招聘筆試試題及答案
- 肺癌胸腔積液患者護(hù)理
- 老年法律知識講座
- DB43T-用水定額 第1部分:農(nóng)業(yè)
- 社交媒體在職場人際關(guān)系中的作用分析
- 醫(yī)療行業(yè)員工激勵與穩(wěn)定措施
- 《戶外探險(xiǎn)》課件
- 《老年人出院準(zhǔn)備服務(wù)指南》
評論
0/150
提交評論