JAVA程序設(shè)計(jì)中常用的框架技術(shù)介紹_第1頁(yè)
JAVA程序設(shè)計(jì)中常用的框架技術(shù)介紹_第2頁(yè)
JAVA程序設(shè)計(jì)中常用的框架技術(shù)介紹_第3頁(yè)
JAVA程序設(shè)計(jì)中常用的框架技術(shù)介紹_第4頁(yè)
JAVA程序設(shè)計(jì)中常用的框架技術(shù)介紹_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 湖南科技職業(yè)學(xué)院ISAS 文檔ISAS 題目 Java程序設(shè)計(jì)中常用的框架介紹專 業(yè) 軟件技術(shù)(CMU方向班 級(jí) CMU3091指 導(dǎo) 教 師 金蓮芳小 組 成 員 :麻沖、劉俊、蔣科、張治君、李元?dú)J、劉依玲二一年五月前言面對(duì)日趨完善的軟件市場(chǎng),熟練掌握一門使用的軟件編程框架成為每個(gè)編程人員的必備的技能,那么,面對(duì)那么多的框架,你是否會(huì)感到無(wú)所選擇呢,說(shuō)實(shí)在的,我也是如此,但今天我們小組將要向大家介紹的是JAVA 程序設(shè)計(jì)中常用的幾種框架技術(shù),它們分別是:WebWork 框架技術(shù)Struts 框架技術(shù)Hibernate 框架技術(shù)Spring 框架技術(shù)JSF 框架技術(shù)目錄前言 . . 1一W

2、EB W ORK 框架技術(shù)介紹:(劉?。?. 3 1:W EB W ORK 框架簡(jiǎn)介 . 3 2:W EB W ORK 核心概念 . 3 3:W EB W ORK 框架原理與應(yīng)用 . 4 4:W EB W ORK 實(shí)戰(zhàn)和技巧 . 55:小結(jié) . . 5 二 S TRUTS 框架技術(shù)介紹(李元?dú)J,劉依玲) . 7 什么是S TRUTS . . 7 2. STRUTS 的優(yōu)點(diǎn): . 7 3. STRUTS 的缺點(diǎn): . 8 4. STRUTS1和STRUTS 2的比較. 85. 小結(jié) . . 8 三 H IBERNATE 框架技術(shù)介紹:(麻沖) . 9 1: H IBERNATE 定義 . 9 2

3、: H IBERNATE 的作用 . 9 3:H IBERNATE 的應(yīng)用 . . 9 4:H IBERNATE 在JAVA 中的開(kāi)發(fā)步驟 . . 9 5: H IBERNATE 配置文件 . 10 6:H IBERNATE 的核心接口 . 10 四 S PRING 框架技術(shù)介紹:(張治君) . 12 1:S PRING 的起源和背景: . 122.S PRING 簡(jiǎn)介 . . 123.S PRING 有如下優(yōu)點(diǎn): . 124.S PRING 框架 . 135.S PRING 帶給我們什么 . 146. 熱愛(ài)S PRING 的五個(gè)理由 . 14 五 JSF 框架技術(shù)的介紹(蔣科) . . 15

4、1什么是JSF 框架 . . 152JSF 的設(shè)計(jì)模式: . . 153各種JSF 框架 . . 164:各種JSF 框架比較 . 16六總結(jié) . . 19一WebWork 框架技術(shù)介紹:主講:劉俊1WebWork 框架簡(jiǎn)介 work 簡(jiǎn)潔、靈活功能強(qiáng)大,它是一個(gè)標(biāo)準(zhǔn)的Command 模式框架實(shí)現(xiàn),并且完全從web 層脫離出來(lái)。Xwork 提供了很多核心功能:前端攔截機(jī)(interceptor ),運(yùn)行時(shí)表單屬性驗(yàn)證,類型轉(zhuǎn)換,強(qiáng)大的表達(dá)式語(yǔ)言(OGNL the Object Graph Notation Language),IoC (Inversion of Control依賴倒轉(zhuǎn)控制)容器

5、等。2WebWork 核心概念WebWork 的三個(gè)關(guān)鍵部分1、Actions 。一般一個(gè)Action 代表一次請(qǐng)求或調(diào)用。在WebWork 中,一般Action 類需要實(shí)現(xiàn)Action 接口,或者直接繼承基礎(chǔ)類ActionSupport 。2、Results 。它是一個(gè)結(jié)果頁(yè)面的定義。它用來(lái)指示Action 執(zhí)行之后,如何顯示執(zhí)行的結(jié)果。3、Interceptors 。WebWork 的攔截器,WebWork 截獲Action 請(qǐng)求,在Action 執(zhí)行之前或之后調(diào)用攔截器方法。3WebWork 框架原理與應(yīng)用WebWork 原理WebWork 的網(wǎng)站上提供了一個(gè)完整的WebWork 架構(gòu)圖

6、。它描述了從客戶端的一次請(qǐng)求到最后服務(wù)器端響應(yīng)的的整個(gè)執(zhí)行過(guò)程。架構(gòu)圖如下: 此架構(gòu)圖一個(gè)分為五個(gè)部分,其中五個(gè)部分分別有五中不同顏色表示。1、 淺灰色方框。分別代表了客戶端的一次Http 請(qǐng)求,和服務(wù)器端運(yùn)算結(jié)束之后的一次響應(yīng)。2、 淺紅色方框。表示一次Action 請(qǐng)求所要經(jīng)過(guò)的Servlet filters (Servlet 過(guò)濾器)。我們可以看到最后一個(gè)filter 就是我們前面介紹的WebWork 的前端控制器。3、 藍(lán)色方框。這是WebWork 框架的核心部分。1) 一次請(qǐng)求到了WebWork 的前端控制器,它首先會(huì)根據(jù)請(qǐng)求的URL 解析出對(duì)應(yīng)的action 名稱,然后去咨詢Act

7、ionMapper 這個(gè)action 是否需要被執(zhí)行。2) 如果ActionMapper 決定這個(gè)action 需要被執(zhí)行,前端控制器就把工作委派給ActionProxy 。接著她們會(huì)咨詢WebWork 的配置管理器,并讀取在web.xml 文件中定義的配置信息。接下來(lái)ActionProxy 會(huì)創(chuàng)建ActionInvocation 對(duì)象。3) ActionInvocation是Xwork 原理的(Command 模式)實(shí)現(xiàn)部分。它會(huì)調(diào)用這個(gè)Action 已定義的攔截器(before方法 ,Action 方法,Result 方法。4) 最后,看上面流程的圖的方向,它會(huì)再執(zhí)行攔截器(after 方

8、法),再回到Servlet Filter 部分,最后結(jié)束并傳給用戶一個(gè)結(jié)果響應(yīng)。4、 靛色方框。這是攔截器部分,在上面的攔截器章節(jié)我們已經(jīng)有了詳細(xì)的介紹。5、 黃色方框。這是我們?cè)陂_(kāi)發(fā)Web 應(yīng)用時(shí),需要自己開(kāi)發(fā)的程序。其中包括:Action 類,頁(yè)面模板,配置文件xwork.xml 。4WebWork 實(shí)戰(zhàn)和技巧1、 多視圖支持。2、 Action的數(shù)據(jù)驗(yàn)證功能。3、 類型轉(zhuǎn)換4、 一個(gè)Action 的多個(gè)執(zhí)行方法。5、 Action鏈(Action Chaining)。6、 多模塊支持解決方案。7、 doInput 方法。8、 prepare方法?;拇a方到prepare 方法中。9、A

9、ction 的Model Driven。10、Quick Start。5小結(jié)WebWork 雖然不像Struts1那樣赫赫有名,但也是出身名門,WebWork 來(lái)自另外一個(gè)優(yōu)秀的開(kāi)源組織:opensymphony ,這個(gè)優(yōu)秀的開(kāi)源組織同樣開(kāi)發(fā)了大量?jī)?yōu)秀的開(kāi)源項(xiàng)目,如Qutarz 、OSWorkFlow 等。相對(duì)于Struts1存在的那些先天性不足而言,WebWork 則更加優(yōu)秀,它采用了一種更加松耦合的設(shè)計(jì),讓系統(tǒng)的Action 不再與ServletAPI 耦合。使單元測(cè)試更加方便,允許系統(tǒng)從B/S結(jié)構(gòu)向C/S結(jié)構(gòu)轉(zhuǎn)換。WebWork 則更加優(yōu)秀,它采用了一種更加松耦合的設(shè)計(jì),讓系統(tǒng)的Acti

10、on 不再與ServletAPI 耦合。使單元測(cè)試更加方便,允許系統(tǒng)從B/S結(jié)構(gòu)向C/S結(jié)構(gòu)轉(zhuǎn)換。相對(duì)于Struts1僅支持JSP 表現(xiàn)層技術(shù)的缺陷而言,WebWork 支持更多的表現(xiàn)層技術(shù),如Velocity 、FreeMarker 和XSLT 等。WebWork 可以脫離Web 應(yīng)用使用,這一點(diǎn)似乎并沒(méi)有太多優(yōu)勢(shì),因?yàn)椋粋€(gè)應(yīng)用通常開(kāi)始已經(jīng)確定在怎樣的環(huán)境下使用。WebWork 有自己的控制反轉(zhuǎn)(InversionofControl )容器,通過(guò)控制反轉(zhuǎn),可以讓測(cè)試變得更簡(jiǎn)單,測(cè)試中設(shè)置實(shí)現(xiàn)服務(wù)接口的Mock 對(duì)象完成測(cè)試,而不需要設(shè)置服務(wù)注冊(cè)。WebWork 2使用OGNL 這個(gè)強(qiáng)大的表

11、達(dá)式語(yǔ)言,可以訪問(wèn)值棧。OGNL 對(duì)集合和索引屬性的支持非常強(qiáng)大。WebWork 建立在XWork 之上,使用ServletDispatcher 作為該框架的核心控制器,處理HTTP 的響應(yīng)和請(qǐng)求。從處理流程上來(lái)看,WebWork 與Struts 1非常類似,它們的核心都由控制器組成,其中控制器都由兩個(gè)部分組成。核心控制器ServletDispatcher ,該控制器由WebWork 框架提供。業(yè)務(wù)邏輯控制器Action ,該控制器由程序員提供。相對(duì)Struts 1的Action 與ServletAPI 緊緊耦合的弱點(diǎn)來(lái)說(shuō),WebWork 的Action 則完全與ServletAPI 分離,因

12、而該Action 更容易測(cè)試。二 Struts 框架技術(shù)介紹主講:李元?dú)J,劉依玲1. 什么是StrutsStruts 是Apache 基金會(huì)Jakarta 項(xiàng)目組的一個(gè)Open Source(開(kāi)放源碼 項(xiàng)目,它采用MVC 模式,能夠很好地幫助java 開(kāi)發(fā)者利用J2EE 開(kāi)發(fā)Web 應(yīng)用。Structs 框架的核心是一個(gè)彈性的控制層。有其自己的控制器(Controller ),同時(shí)整合了其他的一些技術(shù)去實(shí)現(xiàn)模型層(Model )和視圖層(View )。在模型層,Struts 可以很容易的與數(shù)據(jù)訪問(wèn)技術(shù)相結(jié)合,如 JDBC (Java數(shù)據(jù)庫(kù)連接/ EJB(Java中的商業(yè)應(yīng)用組件技術(shù) ,以及其它

13、第三方類庫(kù)。在視圖層,Struts 能夠與JSP ,包括 JSTL 與 JSF ,以及 Velocity 模板,XSLT 與它表示層技術(shù)。Struts 為每個(gè)專業(yè)的 Web 應(yīng)用程序做背后的支撐幫助,為你的應(yīng)用創(chuàng)建個(gè)擴(kuò)展的開(kāi)發(fā)環(huán)境。 Struts2號(hào)稱是一個(gè)全新的框架,但這僅僅是相對(duì)Struts 1而言。Struts 2 與Struts 1相比,確實(shí)有很多革命性的改進(jìn),但它并不是新發(fā)布的新框架,而是在另一個(gè)框架:WebWork 基礎(chǔ)上發(fā)展起來(lái)的。從某種程度上來(lái)講,Struts2沒(méi)有繼承Struts 1的血統(tǒng),而是繼承WebWork 的血統(tǒng)。因?yàn)镾truts2是WebWork 的升級(jí),而不是一個(gè)

14、全新的框架,因此穩(wěn)定性、性能等各方面都有很好的保證:而且吸收了Struts 1和WebWork 兩者的優(yōu)勢(shì),因此,是一個(gè)非常值得期待的框架。2.struts 的優(yōu)點(diǎn):一Struts 最大的優(yōu)點(diǎn)就是是一種開(kāi)源軟件,能夠使開(kāi)發(fā)者更深入的了解其內(nèi)部實(shí)現(xiàn)機(jī)制。二使開(kāi)發(fā)者在構(gòu)建基于Java Servlet和JavaServer Pages(JSP )技術(shù)的Web 應(yīng)用時(shí)更加容易。也為開(kāi)放者提供了一個(gè)統(tǒng)一的標(biāo)準(zhǔn)框架。三實(shí)現(xiàn)MVC 模式,使結(jié)構(gòu)清晰, 并有豐富的tag(標(biāo)簽,附加語(yǔ) 可以用。四通過(guò)一個(gè)配置文件,即可把握整個(gè)系統(tǒng)各部分之間的聯(lián)系; 提供Exception 處理機(jī)制 . 數(shù)據(jù)庫(kù)鏈接池管理還支持I

15、18N 。3.struts 的缺點(diǎn):一、 轉(zhuǎn)到展示層涉及到轉(zhuǎn)向時(shí),需要配置forward ,有時(shí)還必須重新啟動(dòng)服務(wù)器。二、 Struts 的Action 必需是thread safe 方式,它僅僅允許一個(gè)實(shí)例去處理所有的請(qǐng)求。所以action 用到的所有的資源都必需統(tǒng)一同步,這個(gè)就引起了線程安全的問(wèn)題。三有限的適用范圍Struts 是一種基于 Web 的 MVC 解決方案,所以必須用 HTML 、JSP 文件和 servlet 來(lái)實(shí)現(xiàn)它。4. struts1和struts2的比較Action 類:Struts1要求Action 類繼承一個(gè)抽象基類。Struts1的一個(gè)普遍問(wèn)題是使用抽象類編程而

16、不是接口。Struts 2 Action類可實(shí)現(xiàn)一個(gè)Action 接口,也可實(shí)現(xiàn)其他接口,使可選和定制的服務(wù)成為可能。Struts2提供一個(gè)ActionSupport 基類去實(shí)現(xiàn)常用的接口。Action 接口不是必須的,任何有execute 標(biāo)識(shí)的POJO 對(duì)象都可以用作Struts2的Action 對(duì)象??蓽y(cè)性:測(cè)試Struts1 Action的一個(gè)主要問(wèn)題是execute 方法暴露了servlet API(這使得測(cè)試要依賴于容器)。一個(gè)第三方擴(kuò)展Struts TestCase提供了一套Struts1的模擬對(duì)象(來(lái)進(jìn)行測(cè)試)。Struts 2 Action可以通過(guò)初始化、設(shè)置屬性、調(diào)用方法來(lái)

17、測(cè)試,“依賴注入”支持也使測(cè)試更容易。類型轉(zhuǎn)換:Struts 1 ActionForm 屬性通常是String 類型。Struts1,它使用Commons-Beanutils 進(jìn)行類型轉(zhuǎn)換。每個(gè)類一個(gè)轉(zhuǎn)換器,對(duì)每一個(gè)實(shí)例來(lái)說(shuō)是不可配置的。 Struts2 使用OGNL 進(jìn)行類型轉(zhuǎn)換。提供基本和常用對(duì)象的轉(zhuǎn)換器。5. 小結(jié)從以上的介紹中可知 Struts 是一種靈活使用的話將會(huì)大大提高開(kāi)發(fā)效率它利用頁(yè)面導(dǎo)航可以使系統(tǒng)脈絡(luò)更加清晰。而通過(guò)一個(gè)配置文件,即可把握整個(gè)系統(tǒng)各部分之間的聯(lián)系。表現(xiàn)與邏輯分離。維護(hù)擴(kuò)展比較方便。便于團(tuán)隊(duì)的開(kāi)發(fā)的一種框架技術(shù)。三. Hibernate框架技術(shù)介紹:主講:麻沖1

18、Hibernate 定義Hibernate 是一種Java 語(yǔ)言下的對(duì)象關(guān)系映射解決方案。它是一種自由、開(kāi)源的軟件。它用來(lái)把對(duì)象模型表示的對(duì)象映射到基于SQL 的關(guān)系模型結(jié)構(gòu)中去,為面向?qū)ο蟮念I(lǐng)域模型到傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)的映射,提供了一個(gè)使用方便的框架。2Hibernate 的作用Hibernate 不僅管理Java 類到數(shù)據(jù)庫(kù)表的映射(包括從Java 數(shù)據(jù)類型到SQL 數(shù)據(jù)類型的映射),還提供數(shù)據(jù)查詢和獲取數(shù)據(jù)的方法,可以大幅度減少開(kāi)發(fā)時(shí)人工使用SQL 和JDBC 處理數(shù)據(jù)的時(shí)間。它的設(shè)計(jì)目標(biāo)是將軟件開(kāi)發(fā)人員從大量相同的數(shù)據(jù)持久層相關(guān)編程工作中解放出來(lái)。無(wú)論是從設(shè)計(jì)草案還是從一個(gè)遺留數(shù)據(jù)庫(kù)開(kāi)

19、始,開(kāi)發(fā)人員都可以采用Hibernate 。3Hibernate 的應(yīng)用Hibernate 對(duì)JDBC 進(jìn)行了非常輕量級(jí)的對(duì)象封裝,使得Java 程序員可以隨心所欲的使用對(duì)象編程思維來(lái)操縱數(shù)據(jù)庫(kù)。Hibernate 可以應(yīng)用在任何使用JDBC 的場(chǎng)合,它既可以在Java 的客戶端程序使用,也可以在Servlet/JSP的Web 應(yīng)用中使用。最具革命意義的是,Hibernate 可以在應(yīng)用EJB (EnterpriseJavaBeans 是Java 應(yīng)用于企業(yè)計(jì)算的框架)的J2EE 架構(gòu)中取代CMP ,完成數(shù)據(jù)持久化的重任。4Hibernate 在JAVA 中的開(kāi)發(fā)步驟創(chuàng)建Hibernate 的

20、配置文件創(chuàng)建持久化類創(chuàng)建對(duì)象-關(guān)系的映射文件通過(guò)Hibernate API編寫(xiě)訪問(wèn)數(shù)據(jù)庫(kù)的代碼5Hibernate 配置文件 6Hibernate 的核心接口Hibernate 分為:Session、SessionFactory 、 Transaction、Query 和Configuration5個(gè)接口,這5個(gè)核心接口是在任何開(kāi)發(fā)中都會(huì)用到的。通過(guò)這些接口,不僅可以對(duì)持久化對(duì)象進(jìn)行存取,還能夠進(jìn)行事務(wù)控制。下面對(duì)這五個(gè)核心接口分別加以介紹。Session 接口:Session 接口負(fù)責(zé)執(zhí)行被持久化對(duì)象的CRUD 操作(CRUD的任務(wù)是完成與數(shù)據(jù)庫(kù)的交流, 包含了很多常見(jiàn)的SQL 語(yǔ)句。 。但

21、需要注意的是Session 對(duì)象是非線程安全的。同時(shí),Hibernate 的session 不同于JSP 應(yīng)用中的 HttpSession。這里當(dāng)使用session 這個(gè)術(shù)語(yǔ)時(shí),其實(shí)指的是Hibernate 中的session ,而以后會(huì)將HttpSesion 對(duì)象稱 為用戶session 。SessionFactory 接口:SessionFactory 接口負(fù)責(zé)初始化Hibernate 。它充當(dāng)數(shù)據(jù)存儲(chǔ) 源的代理,并負(fù)責(zé)創(chuàng)建Session 對(duì)象。這里用到了工廠模式。需要注意的是SessionFactory 并不是輕量級(jí)的,因?yàn)橐话闱闆r下,一個(gè)項(xiàng)目通常 只需要一個(gè)SessionFactory

22、 就夠,當(dāng)需要操作多個(gè)數(shù)據(jù)庫(kù)時(shí),可以為每個(gè)數(shù)據(jù)庫(kù)指定一個(gè)SessionFactory 。Configuration 接口:Configuration接口負(fù)責(zé)配置并啟動(dòng)Hibernate ,創(chuàng)建 SessionFactory對(duì)象。在Hibernate 的啟動(dòng)的過(guò)程中,Configuration 類的實(shí)例首先定位映射文檔位置、讀取配置,然后創(chuàng)建 SessionFactory對(duì)象。Transaction 接口:Transaction 接口負(fù)責(zé)事務(wù)相關(guān)的操作。它是可選的,開(kāi)發(fā)人員也可以設(shè)計(jì)編寫(xiě)自 己的底層事務(wù)處理代碼。Query 和Criteria 接口:Query 和Criteria 接口負(fù)責(zé)執(zhí)行各

23、種數(shù)據(jù) 庫(kù)查詢。它可以使用HQL 語(yǔ)言或SQL 語(yǔ)句兩種表達(dá)方式。Hibernate 的核心接口框圖: 四Spring 框架技術(shù)介紹:主講:張治君1pring 的起源和背景:Rod Johson在2002年編著的Expert one to one J2EE design and development一書(shū)中,對(duì)Java EE正統(tǒng)框架臃腫、低效、脫離現(xiàn)實(shí)的種種現(xiàn)狀提出了質(zhì)疑,并積極尋求探索革新之道。以此書(shū)為指導(dǎo)思想,他編寫(xiě)了interface21框架,這是一個(gè)力圖沖破Java EE 傳統(tǒng)開(kāi)發(fā)的困境,從實(shí)際需求出發(fā),著眼于輕便、靈巧,易于開(kāi)發(fā)、測(cè)試和部署的輕量級(jí)開(kāi)發(fā)框架。Spring 框架即以in

24、terface21框架為基礎(chǔ),經(jīng)過(guò)重新設(shè)計(jì),并不斷豐富其內(nèi)涵,于2004年3月24日,發(fā)布了1.0正式版。同年他又推出了一部堪稱經(jīng)典的力作Expert one-to-one J2EE Development without EJB,該書(shū)在Java 世界掀起了軒然大波,不斷改變著Java 開(kāi)發(fā)者程序設(shè)計(jì)和開(kāi)發(fā)的思考方式。在該書(shū)中,作者根據(jù)自己多年豐富的實(shí)踐經(jīng)驗(yàn),對(duì)EJB 的各種笨重臃腫的結(jié)構(gòu)進(jìn)行了逐一的分析和否定,并分別以簡(jiǎn)潔實(shí)用的方式替換之。至此一戰(zhàn)功成,Rod Johnson成為一個(gè)改變Java 世界的大師級(jí)人物。2.Spring 簡(jiǎn)介Spring 是一個(gè)開(kāi)源框架,它由Rod Johnson

25、創(chuàng)建。它是為了解決企業(yè)應(yīng)用開(kāi)發(fā)的復(fù)雜性而創(chuàng)建的。Spring 使用基本的JavaBean 來(lái)完成以前只可能由EJB 完成的事情。然而,Spring 的用途不僅限于服務(wù)器端的開(kāi)發(fā)。從簡(jiǎn)單性、可測(cè)試性和松耦合的角度而言,任何Java 應(yīng)用都可以從Spring 中受益。目的:解決企業(yè)應(yīng)用開(kāi)發(fā)的復(fù)雜性功能:使用基本的JavaBean 代替EJB ,并提供了更多的企業(yè)應(yīng)用功能 范圍:任何Java 應(yīng)用簡(jiǎn)單來(lái)說(shuō),Spring 是一個(gè)輕量級(jí)的控制反轉(zhuǎn)(IoC和面向切面(AOP的容器框架。3.Spring 有如下優(yōu)點(diǎn):低侵入式設(shè)計(jì),代碼污染極低 獨(dú)立于各種應(yīng)用服務(wù)器,可以真正實(shí)現(xiàn)Write Once,Run

26、Anywhere的承諾 Spring 的DI 機(jī)制降低了業(yè)務(wù)對(duì)象替換的復(fù)雜性 Spring 并不完全依賴于Spring ,開(kāi)發(fā)者可自由選用Spring 框架的部分或全部4.Spring 框架Spring 框架是一個(gè)分層架構(gòu),由 7 個(gè)定義良好的模塊組成。Spring 模塊構(gòu)建在核心容器之上,核心容器定義了創(chuàng)建、配置和管理 bean 的方式,如圖所示。 組成 Spring 框架的每個(gè)模塊(或組件)都可以單獨(dú)存在,或者與其他一個(gè)或多個(gè)模塊聯(lián)合實(shí)現(xiàn)。每個(gè)模塊的功能如下:核心容器:核心容器提供 Spring 框架的基本功能。核心容器的主要組件是 BeanFactory ,它是工廠模式的實(shí)現(xiàn)。BeanF

27、actory 使用控制反轉(zhuǎn) (IOC ) 模式將應(yīng)用程序的配置和依賴性規(guī)范與實(shí)際的應(yīng)用程序代碼分開(kāi)。Spring 上下文:Spring 上下文是一個(gè)配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企業(yè)服務(wù),例如 JNDI 、EJB 、電子郵件、國(guó)際化、校驗(yàn)和調(diào)度功能。Spring AOP :通過(guò)配置管理特性,Spring AOP 模塊直接將面向方面的編程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何對(duì)象支持 AOP 。Spring AOP 模塊為基于 Spring 的應(yīng)用程序中的對(duì)象提供了事務(wù)管理服務(wù)。通過(guò)使用 Spring AO

28、P,不用依賴 EJB 組件,就可以將聲明性事務(wù)管理集成到應(yīng)用程序中。Spring DAO:JDBC DAO 抽象層提供了有意義的異常層次結(jié)構(gòu),可用該結(jié)構(gòu)來(lái)管理異常處理和不同數(shù)據(jù)庫(kù)供應(yīng)商拋出的錯(cuò)誤消息。異常層次結(jié)構(gòu)簡(jiǎn)化了錯(cuò)誤處理,并且極大地降低了需要編寫(xiě)的異常代碼數(shù)量(例如打開(kāi)和關(guān)閉連接)。Spring DAO 的面向 JDBC 的異常遵從通用的 DAO 異常層次結(jié)構(gòu)。Spring ORM:Spring 框架插入了若干個(gè) ORM 框架,從而提供了 ORM 的對(duì)象關(guān)系工具,其中包括 JDO 、Hibernate 和 iBatis SQL Map。所有這些都遵從 Spring 的通用事務(wù)和 DAO

29、異常層次結(jié)構(gòu)。Spring Web 模塊:Web 上下文模塊建立在應(yīng)用程序上下文模塊之上,為基于 Web 的應(yīng)用程序提供了上下文。所以,Spring 框架支持與 Jakarta Struts 的集成。Web 模塊還簡(jiǎn)化了處理多部分請(qǐng)求以及將請(qǐng)求參數(shù)綁定到域?qū)ο蟮墓ぷ?。Spring MVC 框架:MVC 框架是一個(gè)全功能的構(gòu)建 Web 應(yīng)用程序的 MVC 實(shí)現(xiàn)。通過(guò)策略接口,MVC 框架變成為高度可配置的,MVC 容納了大量視圖技術(shù),其中包括 JSP 、Velocity 、Tiles 、iText 和 POI 。5.Spring 帶給我們什么方便解耦,簡(jiǎn)化開(kāi)發(fā)通過(guò)Spring 提供的IoC 容器

30、,我們可以將對(duì)象之間的依賴關(guān)系交由Spring 進(jìn)行控制,避免硬編碼所造成的過(guò)度程序耦合。有了Spring ,用戶不必再為單實(shí)例模式類、屬性文件解析等這些很底層的需求編寫(xiě)代碼,可以更專注于上層的應(yīng)用。AOP 編程的支持通過(guò)Spring 提供的AOP 功能,方便進(jìn)行面向切面的編程,許多不容易用傳統(tǒng)OOP 實(shí)現(xiàn)的功能可以通過(guò)AOP 輕松應(yīng)付。聲明式事務(wù)的支持在Spring 中,我們可以從單調(diào)煩悶的事務(wù)管理代碼中解脫出來(lái),通過(guò)聲明式方式靈活地進(jìn)行事務(wù)的管理,提高開(kāi)發(fā)效率和質(zhì)量。方便程序的測(cè)試可以用非容器依賴的編程方式進(jìn)行幾乎所有的測(cè)試工作,在Spring 里,測(cè)試不再是昂貴的操作,而是隨手可做的事情

31、。方便集成各種優(yōu)秀框架Spring 不排斥各種優(yōu)秀的開(kāi)源框架,相反,Spring 可以降低各種框架的使用難度,Spring 提供了對(duì)各種優(yōu)秀框架(如Struts,Hibernate 、Hession 、Quartz )等的直接支持。 降低Java EE API的使用難度Spring 對(duì)很多難用的Java EE API(如JDBC ,JavaMail ,遠(yuǎn)程調(diào)用等)提供了一個(gè)薄薄的封裝層,通過(guò)Spring 的簡(jiǎn)易封裝,這些Java EE API的使用難度大為降低。 Java 源碼是經(jīng)典學(xué)習(xí)范例Spring 的源碼設(shè)計(jì)精妙、結(jié)構(gòu)清晰、匠心獨(dú)用,處處體現(xiàn)著大師對(duì)Java 設(shè)計(jì)模式靈活運(yùn)用以及對(duì)Jav

32、a 技術(shù)的高深造詣。Spring 框架源碼無(wú)疑是Java 技術(shù)的最佳實(shí)踐范例。如果想在短時(shí)間內(nèi)迅速提高自己的Java 技術(shù)水平和應(yīng)用開(kāi)發(fā)水平,學(xué)習(xí)和研究Spring 源碼將會(huì)使你收到意想不到的效果。6. 熱愛(ài)Spring 的五個(gè)理由1.Spring 提供更好的優(yōu)勢(shì)。2.Spring 支持POJO 編程。3. 依賴注入有助于可測(cè)試性。4. 反向控制簡(jiǎn)化了JDBC 。5.Spring 在社區(qū)中的繁榮。五. JSF 框架技術(shù)的介紹(主講:蔣科1什么是JSF 框架JavaServer Faces (JSF 是一種用于構(gòu)建 Web 應(yīng)用程序的新標(biāo)準(zhǔn) Java 框架。它提供了一種以組件為中心來(lái)開(kāi)發(fā) Jav

33、a Web 用戶界面的方法,從而簡(jiǎn)化了開(kāi)發(fā)。JavaServer Faces 還引起了廣大 Java/Web 開(kāi)發(fā)人員的興趣?!捌髽I(yè)開(kāi)發(fā)人員”和 Web 設(shè)計(jì)人員將發(fā)現(xiàn) JSF 開(kāi)發(fā)可以簡(jiǎn)單到只需將用戶界面 (UI 組件拖放到頁(yè)面上,而“系統(tǒng)開(kāi)發(fā)人員”將發(fā)現(xiàn)豐富而強(qiáng)健的 JSF API 為他們提供了無(wú)與倫比的功能和編程靈活性。JSF 還通過(guò)將良好構(gòu)建的模型-視圖-控制器 (MVC 設(shè)計(jì)模式集成到它的體系結(jié)構(gòu)中,確保了應(yīng)用程序具有更高的可維護(hù)性。最后,由于 JSF 是通過(guò) Java Community Process (JCP 開(kāi)發(fā)的一種 Java 標(biāo)準(zhǔn),因此開(kāi)發(fā)工具供應(yīng)商完全能夠?yàn)?JavaS

34、erver Faces 提供易于使用的、高效的可視化開(kāi)發(fā)環(huán)境。2JSF 的設(shè)計(jì)模式:Composite 模式 :Composite 模式讓客戶代碼能夠統(tǒng)一處理復(fù)合對(duì)象和基本對(duì)象。復(fù)合對(duì)象是基本對(duì)象的容器。在第一階段(Restore View 階段)和最后一個(gè)階段(Render Response 階段),使用 JSF UI 組件構(gòu)造 UI View 。UIComponentBase 就是 Composite 模式中 Component 抽象類的一個(gè)例子。UIViewRoot 是 Composite 類,而 UIOutput(比方說(shuō))就是葉子(或者基本類)。UIComponentBase 類定義了

35、葉子和復(fù)合對(duì)象的公共方法,如編碼/解碼值和子節(jié)點(diǎn)管理函數(shù)。子節(jié)點(diǎn)管理函數(shù),如 getChildren,對(duì)于葉子節(jié)點(diǎn)返回空列表,對(duì)于復(fù)合節(jié)點(diǎn)則返回其子節(jié)點(diǎn)。Decorator 模式 :Decorator 模式的目的是不通過(guò)子類化動(dòng)態(tài)擴(kuò)展對(duì)象的行為。JSF 框架有很多擴(kuò)展點(diǎn)(即可插入機(jī)制)。JSF 實(shí)現(xiàn)可使用 Decorator 模式替換默認(rèn)的 PropertyResolver 、VariableResolver 、ActionListener 、NavigationHandler 、 ViewHandler 或 StateManager。通常自定義實(shí)現(xiàn)接受通過(guò)構(gòu)造函數(shù)傳遞給它的默認(rèn)實(shí)現(xiàn)的引用。自

36、定義實(shí)現(xiàn)僅僅改寫(xiě)功能的一個(gè)子集,而將其他功能委托給默認(rèn)實(shí)現(xiàn)。Strategy 模式:Strategy 模式的目的是封裝不同的概念。JSF 框架采用 Strategy 模式使用委托實(shí)現(xiàn)模型呈現(xiàn) UI 組件。JSF 技術(shù)支持兩種呈現(xiàn)模型。在直接實(shí)現(xiàn)模型中,UI 組件對(duì)收到的請(qǐng)求中的數(shù)據(jù)進(jìn)行解碼,然后編碼這些數(shù)據(jù)進(jìn)行顯示。在委托實(shí)現(xiàn)模型中,解碼和編碼操作委托給和組建關(guān)聯(lián)的專門呈現(xiàn)器。后一種模型利用了 Strategy 設(shè)計(jì)模式,比直接實(shí)現(xiàn)更靈活。在 Strategy 模式中,將不同的算法封裝在單獨(dú)的對(duì)象中,從而可以動(dòng)態(tài)地改變算法。JSF 實(shí)現(xiàn)可以用已有的 renderkit 實(shí)例注冊(cè)另外的呈現(xiàn)器,當(dāng)

37、應(yīng)用程序啟動(dòng)的時(shí)候,JSF 實(shí)現(xiàn)讀取配置文件將這些呈現(xiàn)器和 UI 組件聯(lián)系在一起。Template Method 模式:Template Method 模式的目的是將變化的步驟推遲到子類中,而在父類中定義那些固定的算法步驟。JSF 框架通過(guò) PhraseListeners 展現(xiàn)了 Template Method 模式提供的功能。采用 Template Method(或者 “hook”)使得 Web 作者可以為不同階段之間的可選步驟提供實(shí)現(xiàn),而主要階段仍然和 JSF 框架的定義一致。JSF 框架提供了 PhaseListeners,概念上類似于 Template Method 模式中的可變步驟。

38、JSF 框架有六個(gè)預(yù)定義的階段,在每個(gè)階段之間,Web 作者可以實(shí)現(xiàn) PhaseListeners 來(lái)提供類似于 Template Method hook 的 hook。事實(shí)上,這種結(jié)構(gòu)比 Template Method 模式更具有擴(kuò)展性??梢酝ㄟ^(guò)注冊(cè) PhraseId 為 ANY_PHRASE 的 PhaseListener 在每個(gè)階段后提供 hook。如果 PhaseId 是 ANY_PHASE,JSF 實(shí)現(xiàn)就會(huì)在每個(gè)階段之前和之后調(diào)用該 PhaseListener。JSF 框架中的實(shí)現(xiàn)略有不同,因?yàn)榭梢愿緵](méi)有 PhaseListener,但是在 Template Method 模式中,

39、子類通常重新定義父類中抽象的可變步驟。Observer 模式:Observer 模式的目的是當(dāng)目標(biāo)對(duì)象的狀態(tài)改變時(shí)自動(dòng)通知所有依賴的對(duì)象(即觀察器)。JSF 在 UI 組件中實(shí)現(xiàn)了 Observer 模式。JSF 有兩類內(nèi)建事件:ActionEvent 和 ValueChangedEvent。ActionEvent 用于確定用戶界面組件(如按鈕)的激活。當(dāng)用戶單擊按鈕時(shí),JSF 實(shí)現(xiàn)通知添加到該按鈕上的一個(gè)或多個(gè)動(dòng)作監(jiān)聽(tīng)程序。于是該按鈕被激活,或者說(shuō)按鈕(主體)的狀態(tài)改變了。添加到按鈕上的所有監(jiān)聽(tīng)程序(即觀察器)都收到通 知該主體狀態(tài)已經(jīng)改變。類似的,當(dāng)輸入 UI 組件中的值改變時(shí),JSF 實(shí)

40、現(xiàn)通知 ValueChangeListener 。JSF 框架利用了 Singleton、Model-View-Controller 、Factory Method、State 、Composite 、Decorator 、Strategy 、Template Method 和 Observer 設(shè)計(jì)模式。因?yàn)樗捏w系結(jié)構(gòu)建立在已經(jīng)驗(yàn)證的設(shè)計(jì)模式的基礎(chǔ)上,這是一個(gè)健壯的框架,模式在 JSF 框架中得到了很好的利用。3各種JSF 框架1、bean 公司的workshop2、sun 公司netbean4、myeclipse 開(kāi)發(fā)工具5、aom6、oracle jdevelop 11g7、icefa

41、ces8、Myfaces Trinidad9、Myfaces tomahawk4:各種JSF 框架比較1、Myfaces tomahawk考慮到apache 的背景,可以作為一個(gè)選擇,但不是最好選擇。2、Myfaces Trinidad個(gè)人認(rèn)為這個(gè)組件受oracle 公司捐贈(zèng)的影響,目前Oracle Jdevelop 11g的組件非常豐富,是rich component,計(jì)劃有進(jìn)一步捐贈(zèng)動(dòng)作,但時(shí)間不詳。考慮到apache 的背景,可以作為一個(gè)選擇,但不是最好選擇。3、icefaces這是一個(gè)比較美觀的JSF 框架,部分組件支持ajax ,目前支持JSF1.1,sun ri 與Myfaces 的實(shí)現(xiàn)都可以使用,組件數(shù)量夠用,但需要進(jìn)一步豐富,取法布局組件,對(duì)收費(fèi)用戶提供最新版本,社區(qū)用戶可以使用次新版本,但可以從 SVN上下載最新版本自己編譯(不知為何,我自己下載沒(méi)有成功),文檔豐富,例子也不錯(cuò),icesoft 公司是一個(gè)商業(yè)公司,版本更新速度很快,也推出了 eclipse、workshop 、netbean 的插件,支持可視化設(shè)計(jì),但eclipse 下的響應(yīng)速度很慢??梢宰鳛橐粋€(gè)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論