![JavaEE開發(fā)四大常用框架(程序員必看,精心整理,免分?jǐn)?shù))_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/12/0809b0cb-5d0e-4ae2-8da4-4ea37e6b30af/0809b0cb-5d0e-4ae2-8da4-4ea37e6b30af1.gif)
![JavaEE開發(fā)四大常用框架(程序員必看,精心整理,免分?jǐn)?shù))_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/12/0809b0cb-5d0e-4ae2-8da4-4ea37e6b30af/0809b0cb-5d0e-4ae2-8da4-4ea37e6b30af2.gif)
![JavaEE開發(fā)四大常用框架(程序員必看,精心整理,免分?jǐn)?shù))_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/12/0809b0cb-5d0e-4ae2-8da4-4ea37e6b30af/0809b0cb-5d0e-4ae2-8da4-4ea37e6b30af3.gif)
![JavaEE開發(fā)四大常用框架(程序員必看,精心整理,免分?jǐn)?shù))_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/12/0809b0cb-5d0e-4ae2-8da4-4ea37e6b30af/0809b0cb-5d0e-4ae2-8da4-4ea37e6b30af4.gif)
![JavaEE開發(fā)四大常用框架(程序員必看,精心整理,免分?jǐn)?shù))_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/12/0809b0cb-5d0e-4ae2-8da4-4ea37e6b30af/0809b0cb-5d0e-4ae2-8da4-4ea37e6b30af5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Java EE開發(fā)四大常用框架我們對(duì)Java EE的框架有過很多介紹, 本文將對(duì)Java EE中常用的四個(gè)框架做一下系統(tǒng)的歸納,希望大家喜歡。StrutsStruts是一個(gè)基于Sun Java EE平臺(tái)的MVC框架,主要是采用Servlet和JSP技術(shù)來實(shí)現(xiàn)的。Struts框架可分為以下四個(gè)主要部分,其中三個(gè)就和MVC模式緊密相關(guān):1、模型 (Model,本質(zhì)上來說在Struts中Model是一個(gè)Action類(這個(gè)會(huì)在后面詳細(xì)討論,開發(fā)者通過其實(shí)現(xiàn)商業(yè)邏輯,同時(shí)用戶請(qǐng)求通過控制器(Controller向Action的轉(zhuǎn)發(fā)過程是基于由struts-config.xml文件描述的配置信息的。2、
2、視圖(View,View是由與控制器Servlet配合工作的一整套JSP定制標(biāo)簽庫構(gòu)成,利用她們我們可以快速建立應(yīng)用系統(tǒng)的界面。3、控制器(Controller,本質(zhì)上是一個(gè)Servlet,將客戶端請(qǐng)求轉(zhuǎn)發(fā)到相應(yīng)的Action類。4、一堆用來做XML文件解析的工具包,Struts是用XML來描述如何自動(dòng)產(chǎn)生一些JavaBean的屬性的,此外Struts還利用XML來描述在國際化應(yīng)用中的用戶提示信息的(這樣一來就實(shí)現(xiàn)了應(yīng)用系統(tǒng)的多語言支持。SpringSpring是輕量級(jí)的Java EE應(yīng)用程序框架。Spring的核心是個(gè)輕量級(jí)容器(container,實(shí)現(xiàn)了IoC(Inversion of C
3、ontrol模式的容器,Spring的目標(biāo)是實(shí)現(xiàn)一個(gè)全方位的整合框架,在Spring框架下實(shí)現(xiàn)多個(gè)子框架的組合,這些子框架之間彼此可以獨(dú)立,也可以使用其它的框架方案加以替代,Spring希望提供one-stop shop的框架整合方案 。Spring不會(huì)特別去提出一些子框架來與現(xiàn)有的OpenSource框架競(jìng)爭(zhēng),除非它覺得所提出的框架夠新夠好,例如Spring有自己的 MVC框架方案,因?yàn)樗X得現(xiàn)有的MVC方案有很多可以改進(jìn)的地方,但它不強(qiáng)迫您使用它提供的方案,您可以選用您所希望的框架來取代其子框架,例如您仍可以在Spring中整合您的Struts框架 。Spring的核心概念是IoC,IoC
4、的抽象概念是依賴關(guān)系的轉(zhuǎn)移,像是高層模組不應(yīng)該依賴低層模組,而是模組都必須依賴于抽象是 IoC的一種表現(xiàn),實(shí)現(xiàn)必須依賴抽象,而不是抽象依賴實(shí)現(xiàn)也是IoC的一種表現(xiàn),應(yīng)用程序不應(yīng)依賴于容器,而是容器服務(wù)于應(yīng)用程序也是IoC的一種表現(xiàn)。Spring的架構(gòu)性的好處Spring能有效地組織你的中間層對(duì)象,無論你是否選擇使用了EJB。如果你僅僅使用了Struts或其他的包含了Java EE特有APIs的framework,你會(huì)發(fā)現(xiàn)Spring關(guān)注了遺留下的問題。Spring能消除在許多工程上對(duì)Singleton的過多使用。根據(jù)我的經(jīng)驗(yàn),這是一個(gè)主要的問題,它減少了系統(tǒng)的可測(cè)試性和面向?qū)ο筇匦?。Sprin
5、g 能消除使用各種各樣格式的屬性定制文件的需要,在整個(gè)應(yīng)用和工程中,可通過一種一致的方法來進(jìn)行配置。曾經(jīng)感到迷惑,一個(gè)特定類要查找迷幻般的屬性關(guān)鍵字或系統(tǒng)屬性,為此不得不讀Javadoc乃至源編碼嗎?有了Spring,你可很簡(jiǎn)單地看到類的JavaBean屬性。倒置控制的使用(在下面討論幫助完成這種簡(jiǎn)化。Spring能通過接口而不是類促進(jìn)好的編程習(xí)慣,減少編程代價(jià)到幾乎為零。Spring被設(shè)計(jì)為讓使用它創(chuàng)建的應(yīng)用盡可能少的依賴于他的APIs。在Spring應(yīng)用中的大多數(shù)業(yè)務(wù)對(duì)象沒有依賴于Spring。使用Spring構(gòu)建的應(yīng)用程序易于單元測(cè)試。Spring能使EJB的使用成為一個(gè)實(shí)現(xiàn)選擇,而不是
6、應(yīng)用架構(gòu)的必然選擇。你能選擇用POJOs或local EJBs來實(shí)現(xiàn)業(yè)務(wù)接口,卻不會(huì)影響調(diào)用代碼。Spring幫助你解決許多問題而無需使用EJB。Spring能提供一種EJB的替換物,它們適于許多web應(yīng)用。例如,Spring能使用AOP提供聲明性事務(wù)而不通過使用EJB容器,如果你僅僅需要與單個(gè)的數(shù)據(jù)庫打交道,甚至不需要JTA實(shí)現(xiàn)。Spring為數(shù)據(jù)存取提供了一致的框架,不論是使用JDBC或O/R mapping產(chǎn)品(如Hibernate。Spring確實(shí)使你能通過最簡(jiǎn)單可行的解決辦法解決你的問題。這些特性是有很大價(jià)值的。Spring能做什么?Spring提供許多功能,在此我將快速地依次展示其
7、各個(gè)主要方面。任務(wù)描述:首先,讓我們明確Spring范圍。盡管Spring覆蓋了許多方面,但我們已經(jīng)有清楚的概念,它什么應(yīng)該涉及和什么不應(yīng)該涉及。Spring的主要目的是使Java EE易用和促進(jìn)好編程習(xí)慣。Spring 不重新開發(fā)已有的東西。因此,在Spring中你將發(fā)現(xiàn)沒有日志記錄的包,沒有連接池,沒有分布事務(wù)調(diào)度。這些均有開源項(xiàng)目提供(例如 Commons Logging 用來做所有的日志輸出,或Commons DBCP用來作數(shù)據(jù)連接池,或由你的應(yīng)用程序服務(wù)器提供。因?yàn)橥瑯拥牡脑?,我們沒有提供O/R mapping層,對(duì)此,已有有好的解決辦法如Hibernate和JDO。Spring的
8、目標(biāo)是使已存在的技術(shù)更加易用。例如,盡管我們沒有底層事務(wù)協(xié)調(diào)處理,但我們提供了一個(gè)抽象層覆蓋了JTA或任何其他的事務(wù)策略。Spring沒有直接和其他的開源項(xiàng)目競(jìng)爭(zhēng),除非我們感到我們能提供新的一些東西。例如,象許多開發(fā)人員,我們從來沒有為Struts高興過,并且感到在MVC web framework中還有改進(jìn)的余地。在某些領(lǐng)域,例如輕量級(jí)的 IoC容器和AOP框架,Spring有直接的競(jìng)爭(zhēng),但是在這些領(lǐng)域還沒有已經(jīng)較為流行的解決方案。(Spring在這些區(qū)域是開路先鋒。Spring也得益于內(nèi)在的一致性。所有的開發(fā)者都在唱同樣的的贊歌,基礎(chǔ)想法依然是Expert One-on-One Java
9、EE設(shè)計(jì)與開發(fā)的那些。并且我們已經(jīng)能夠使用一些主要的概念,例如倒置控制,來處理多個(gè)領(lǐng)域。Spring在應(yīng)用服務(wù)器之間是可移植的。當(dāng)然保證可移植性總是一次挑戰(zhàn),但是我們避免任何特定平臺(tái)或非標(biāo)準(zhǔn)化,并且支持在WebLogic,Tomcat,Resin,JBoss,WebSphere和其他的應(yīng)用服務(wù)器上的用戶。Spring的核心即是個(gè)IoC/DI的容器,它可以幫程序設(shè)計(jì)人員完成組件之間的依賴關(guān)系注入,使得組件之間的依賴達(dá)到最小,進(jìn)而提高組件的重用性,Spring是個(gè)低侵入性(invasive的框架,Spring中的組件并不會(huì)意識(shí)到它正置身于Spring中,這使得組件可以輕易的從框架中脫離,而幾乎不用
10、任何的修改,反過來說,組件也可以簡(jiǎn)單的方式加入至框架中,使得組件甚至框架的整合變得容易。Spring最為人重視的另一方面是支持AOP(Aspect-Oriented Programming,然而AOP框架只是Spring支持的一個(gè)子框架,說Spring框架是AOP框架并不是一件適當(dāng)?shù)拿枋?,人們?duì)于新奇的 AOP關(guān)注映射至Spring上,使得人們對(duì)于Spring的關(guān)注集中在它的AOP框架上,雖然有所誤解,但也突顯了Spring的另一個(gè)令人關(guān)注的特色。Spring也提供MVC Web框架的解決方案,但您也可以將自己所熟悉的MVC Web框架與Spring解合,像是Struts、Webwork等等,
11、都可以與Spring整合而成為進(jìn)用于自己的解決方案。Spring也提供其它方面的整合,像是持久層的整合如JDBC、O/R Mapping工具(Hibernate、iBATIS、事務(wù)處理等等,Spring作了對(duì)多方面整合的努力,故說Spring是個(gè)全方位的應(yīng)用程序框架。HibernateHibernate是一個(gè)開放源代碼的對(duì)象關(guān)系映射框架,它對(duì)JDBC進(jìn)行了輕量級(jí)的對(duì)象封裝,使得Java程序員可以使用對(duì)象編程思維來操縱數(shù)據(jù)庫。Hibernate可以在應(yīng)用EJB的Java EE架構(gòu)中取代CMP,完成數(shù)據(jù)持久化。它還可以應(yīng)用在任何使用JDBC的場(chǎng)合,既可以在Java的客戶端程序?qū)嵱?,也可以在Serv
12、let/JSP的Web應(yīng)用中使用Hibernate的工作方式Hibernate不會(huì)對(duì)您造成妨礙,也不會(huì)強(qiáng)迫您修改對(duì)象的行為方式。它們不需要實(shí)現(xiàn)任何不可思議的接口以便能夠持續(xù)存在。惟一需要做的就是創(chuàng)建一份 XML“映射文檔”,告訴Hibernate您希望能夠保存在數(shù)據(jù)庫中的類,以及它們?nèi)绾侮P(guān)聯(lián)到該數(shù)據(jù)庫中的表和列,然后就可以要求它以對(duì)象的形式獲取數(shù)據(jù),或者把對(duì)象保存為數(shù)據(jù)。與其他解決方案相比,它幾乎已經(jīng)很完美了。由于本文只是一篇介紹性的文章,所以不會(huì)引入構(gòu)建和使用Hibernate映射文檔的具體例子(我在Hibernate: A Developer's Notebook一書的頭幾章中已經(jīng)
13、介紹了一個(gè)例子。此外,在網(wǎng)上和Hibernate的在線文檔中,還可以找到一些不錯(cuò)的例子,請(qǐng)參見下面的“其他信息”部分。它實(shí)際上相當(dāng)直觀。應(yīng)用程序?qū)ο笾械膶傩砸砸环N簡(jiǎn)單而自然的方式與正確的數(shù)據(jù)庫結(jié)構(gòu)相關(guān)聯(lián)。運(yùn)行時(shí),Hibernate讀取映射文檔,然后動(dòng)態(tài)構(gòu)建Java類,以便管理數(shù)據(jù)庫與Java之間的轉(zhuǎn)換。在 Hibernate中有一個(gè)簡(jiǎn)單而直觀的API,用于對(duì)數(shù)據(jù)庫所表示的對(duì)象執(zhí)行查詢。要修改這些對(duì)象,(一般情況下只需在程序中與它們進(jìn)行交互,然后告訴Hibernate保存修改即可。類似地,創(chuàng)建新對(duì)象也很簡(jiǎn)單;只需以常規(guī)方式創(chuàng)建它們,然后告訴Hibernate有關(guān)它們的信息,這樣就能在數(shù)據(jù)庫中保存
14、它們。Hibernate API學(xué)習(xí)起來很簡(jiǎn)單,而且它與程序流的交互相當(dāng)自然。在適當(dāng)?shù)奈恢谜{(diào)用它,就可以達(dá)成目的。它帶來了很多自動(dòng)化和代碼節(jié)省方面的好處,所以花一點(diǎn)時(shí)間學(xué)習(xí)它是值得的。而且還可以獲得另一個(gè)好處,即代碼不用關(guān)心要使用的數(shù)據(jù)庫種類(否則的話甚至必須知道。我所在的公司就曾有過在開發(fā)過程后期被迫更換數(shù)據(jù)庫廠商的經(jīng)歷。這會(huì)造成巨大的災(zāi)難,但是借助于Hibernate,只需要簡(jiǎn)單地修改Hibernate配置文件即可。這里的討論假定您已經(jīng)通過創(chuàng)建Hibernate映射文檔,建立了一個(gè)關(guān)系數(shù)據(jù)庫,并且擁有要映射的Java 類。有一個(gè)Hibernate“工具集”可在編譯時(shí)使用,以支持不同的工作流
15、。例如,如果您已經(jīng)擁有Java類和映射文檔,Hibernate可以為您創(chuàng)建(或更新必需的數(shù)據(jù)庫表?;蛘撸瑑H僅從映射文檔開始,Hibernate也能夠生成數(shù)據(jù)類。或者,它可以反向設(shè)計(jì)您的數(shù)據(jù)庫和類,從而擬定映射文檔。還有一些用于Eclipse的alpha 插件,它們可以在IDE中提供智能的編輯支持以及對(duì)這些工具的圖形訪問。使用Hibernate的場(chǎng)合既然Hibernate看起來如此靈活好用,為什么還要使用其他的工具呢?下面有一些場(chǎng)景,可以幫助您做出判斷(或許通過提供一些比較和上下文,可以有助于鑒別非常適用Hibernate的場(chǎng)合。如果應(yīng)用對(duì)于數(shù)據(jù)存儲(chǔ)的需要十分簡(jiǎn)單例如,您只想管理一組用戶優(yōu)先選擇
16、您根本不需要數(shù)據(jù)庫,更不用說一個(gè)優(yōu)秀的對(duì)象-關(guān)系映射系統(tǒng)了(即使它也如Hibernate這般易于使用!從Java 1.4開始,有一個(gè)標(biāo)準(zhǔn)的Java Preferences API可以很好地發(fā)揮這個(gè)作用。對(duì)于熟悉使用關(guān)系數(shù)據(jù)庫和了解如何執(zhí)行完美的SQL查詢與企業(yè)數(shù)據(jù)庫交互的人來說,Hibernate似乎有些礙手礙腳,這就像帶有動(dòng)力和自動(dòng)排擋的快艇車會(huì)使注重性能的賽車駕駛員不耐煩一樣。如果您屬于這種人,如果您所在的項(xiàng)目團(tuán)隊(duì)擁有一個(gè)強(qiáng)大的DBA,或者有一些存儲(chǔ)過程要處理,您可能想研究一下iBATIS。Hibernate的創(chuàng)建者本身就把iBATIS當(dāng)作是另一種有趣的選擇。我對(duì)它很有興趣,因?yàn)槲覀冊(cè)鵀橐粋€(gè)電子商務(wù)站點(diǎn)開發(fā)了一個(gè)類似的系統(tǒng)(其功能更為強(qiáng)大,而且從那時(shí)到現(xiàn)在,我們已經(jīng)在其他環(huán)境中使用過它,盡管在發(fā)現(xiàn)Hibernate之后,在新項(xiàng)目中我們通常更喜歡使用Hibernate。您可以認(rèn)為,以SQL為中心的解決方案(比如iBATIS是“反向的”對(duì)象/關(guān)系映射工具,而 Hibernate是一個(gè)更為傳統(tǒng)的ORM。當(dāng)然,還有其他的外部原因會(huì)導(dǎo)致采用另外的方法。比如,在一個(gè)企業(yè)環(huán)境中,必須使用成熟的EJB架構(gòu)(或者其他的一些非普通對(duì)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年個(gè)人債權(quán)轉(zhuǎn)讓合同簡(jiǎn)單版(三篇)
- 2025個(gè)人門面出租合同(合同版本)
- 2025年9月文言實(shí)詞知識(shí)點(diǎn)總結(jié)范文(二篇)
- 2025年8月環(huán)保工作總結(jié)范例(二篇)
- 2025年個(gè)人業(yè)務(wù)工作心得模版(2篇)
- 2025年上半年交通安全的工作總結(jié)樣本(四篇)
- 2025商城特殊商品買賣合同
- 2025年一年級(jí)上學(xué)期科研總結(jié)樣本(二篇)
- 2025年東風(fēng)餐車采購合同(2篇)
- 2025年三方轉(zhuǎn)款協(xié)議(2篇)
- 2024年廣東省公務(wù)員錄用考試《行測(cè)》真題及解析
- 高中英語必背3500單詞表(完整版)
- 禁止送禮的協(xié)議書
- 2024年版《輸變電工程標(biāo)準(zhǔn)工藝應(yīng)用圖冊(cè)》
- 2024年高考數(shù)學(xué)試卷(北京)(空白卷)
- 2024從洞見到生意:阿里健康特色人群消費(fèi)趨勢(shì)報(bào)告-阿里健康x一財(cái)商學(xué)院
- 人教版2024年新教材七年級(jí)上冊(cè)英語starter unit 1 -unit7重點(diǎn)短語句型清單
- 護(hù)理服務(wù)在產(chǎn)科中的應(yīng)用課件
- 2024年小升初語文入學(xué)分班測(cè)試卷四(統(tǒng)編版)
- 流行文化對(duì)青少年價(jià)值觀的影響研究
- 中國保險(xiǎn)行業(yè)協(xié)會(huì)官方-2023年度商業(yè)健康保險(xiǎn)經(jīng)營數(shù)據(jù)分析報(bào)告-2024年3月
評(píng)論
0/150
提交評(píng)論