開(kāi)發(fā)參考jstl網(wǎng)絡(luò)標(biāo)簽與ssh類(lèi)參考手冊(cè)_第1頁(yè)
開(kāi)發(fā)參考jstl網(wǎng)絡(luò)標(biāo)簽與ssh類(lèi)參考手冊(cè)_第2頁(yè)
開(kāi)發(fā)參考jstl網(wǎng)絡(luò)標(biāo)簽與ssh類(lèi)參考手冊(cè)_第3頁(yè)
已閱讀5頁(yè),還剩3頁(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、第 21 章Spring 基礎(chǔ)Spring 框架是個(gè)輕量級(jí)的 Java EE 框架。所謂輕量級(jí),是指不依賴于容器就能運(yùn)行。Struts、Hibernate 也是輕量級(jí)的。輕量級(jí)框架是相對(duì)于重量級(jí)框架而言的,重量級(jí)框架必須依賴特定的容器,例如 EJB 框架就必須運(yùn)行在 Glassfish、J本章重點(diǎn):s 等支持 EJB 的容器中,而不能運(yùn)行在 Tomcat 中。Spring 概述在 MyEclipse 中配置 Spring Spring 實(shí)例:第一個(gè) Spring 例子21.1Spring 概述Spring 是應(yīng)用最廣泛的輕量級(jí) Java EE 框架之一,它以 IoC、AOP 為主要Hibern

2、ate、WebWork、JSF、iBatis 等眾多的框架結(jié)合使用。,能夠與 Struts、21.1.1Spring 的主要特征為了更高效地使用 Spring,需要了解 Spring 的如下特性:Spring 是一個(gè)非(non-invasive)框架。Spring 框架可以使應(yīng)用程序代碼對(duì)框架的依賴最小化。在 Spring 中配置 JavaBean 時(shí)甚至不需要舊系統(tǒng)中未使用 Spring 的 Java 類(lèi)進(jìn)行配置。Spring API,而且還可以對(duì)很多Spring 提供了一種一致的,在任何環(huán)境下都可以使用的編程模型。Spring 應(yīng)用程序不僅可以運(yùn)行在 J2EE 容器和 Web 容器中,也可

3、以運(yùn)行在其他的環(huán)境下,如桌面程序等。在Spring 中提供了一種編程模型來(lái)應(yīng)用程序代碼和運(yùn)行環(huán)境,以使代碼對(duì)它們的運(yùn)行環(huán)境的依到最小化。提高代碼的重用性。Spring 可以盡量避免在程序中硬編碼。Spring 可以將應(yīng)用程序中某些代碼抽象出來(lái)(一般是在 XML 中配置的),以便這些代碼可以在其他的程序中使用。Spring 可以使系統(tǒng)架構(gòu)更容易選擇。Spring 的目標(biāo)之一就是使應(yīng)用的每一層都可以更容易替換。如在中間層可以在不同的 O/R框架之間切換,而這種切換過(guò)程對(duì)商業(yè)邏輯的影響是非常小的?;蚴乔袚Q不同的 MVC 框架(Struts、Spring MVC、WebWork 等),并不影響系統(tǒng)的中

4、間層。Spring 并不重造。盡管 Spring 所涉及的范圍非常廣,但是大多數(shù)應(yīng)用并沒(méi)有自己的實(shí)現(xiàn),如 O/R,就是使用了很多流行的框架,如 Hibernate。還有像連接池、分布式事務(wù)、協(xié)議或其他的系統(tǒng)服務(wù),Spring 也是使用了已經(jīng)存在的解決方案,而不是選擇自己去創(chuàng)造。這樣做的好處是可以盡量保護(hù)投資,也就是說(shuō),可以在 Spring 中使用舊的框架來(lái)實(shí)現(xiàn)自己的應(yīng)用程序。21.1.2Spring 框架的組成元素Spring 框架的組成元素主要有 Core 模塊、AOP 模塊、ORM 模塊、Context 模塊和 Web MVC 模塊。下面詳細(xì)介紹這些模塊的作用。1Core 模塊模塊、Web

5、 模塊、框架的類(lèi)庫(kù),Spring 所有的功能均依賴于該類(lèi)庫(kù)。Core 模塊主要實(shí)現(xiàn)了IoC 功能。Spring的所有功能都是借助 IoC 實(shí)現(xiàn)的。2AOP 模塊Spring 的 AOP 庫(kù),提供了 AOP(也就是器)機(jī)制,并提供各種常用的器,允許自定義、配置方法3ORM 模塊器、的對(duì)象。提供對(duì)常用 ORM 框架的管理、輔助支持。Spring 支持 Hibernate、iBatis、JDO 等各種 ORM框架。Spring 并不提供自己的 ORM 實(shí)現(xiàn),只是對(duì)現(xiàn)有的 ORM 框架進(jìn)行封裝,并提供對(duì)它們的管理,例如事務(wù)管理等。4模塊提供 JDBC 的支持,對(duì) JDBC 進(jìn)行封裝,允許 JDBC 使

6、用 Spring 的資源,并能的事務(wù)。Spring 也不提供 JDBC 實(shí)現(xiàn)。5Web 模塊管理 JDBC提供對(duì) Struts、WebWork、JSF 等各種 Web 框架的支持。Spring 能夠管理這些框架,將 Spring的資源如數(shù)據(jù)源、Bean 等注射給框架,也能在執(zhí)行框架方法前后6Context 模塊Spring 的器。提供框架式 Bean7Web MVC 模塊方式,其他程序可以通過(guò) ContextSpring 的Bean 資源,類(lèi)似于 JNDI。Spring 提供一套輕量級(jí)的 MVC 實(shí)現(xiàn)。在 Spring 框架中,開(kāi)發(fā)者可以選擇 Struts 作為 MVC框架,也可以使用 Spr

7、ing 自帶的 MVC 框架。Spring MVC 與 Struts 等框架相比,更加簡(jiǎn)潔、靈活。21.1.3Spring 的技術(shù)技術(shù)主要有控制反轉(zhuǎn)(Inver在 Spring 中的of Control,IoC)和依賴注入、面向方477第 6 篇Spring 篇面編程(AOP),除此之外,Spring 還提供了異常處理和資源管理等技術(shù)。下面分別對(duì)這些技術(shù)進(jìn)行介紹。1控制反轉(zhuǎn)(Inverof Control,IoC)和依賴注入當(dāng)一個(gè)對(duì)象需要另外一個(gè)對(duì)象時(shí),在傳統(tǒng)的設(shè)計(jì)過(guò)程中,往往需要通過(guò)調(diào)用者來(lái)創(chuàng)建被調(diào)用者的對(duì)象實(shí)例。但在 Spring 中,創(chuàng)建被調(diào)用者的工作不再由調(diào)用者來(lái)完成。因此,這種設(shè)計(jì)模

8、式被稱為控制反轉(zhuǎn)。在控制反轉(zhuǎn)模式下,一般被調(diào)用者的創(chuàng)建是由 Spring IoC 容器來(lái)完成的,因此,也稱為依賴注入(一般通過(guò)接口注入來(lái)實(shí)現(xiàn))。2面向方面編程(AOP)AOP 是近年來(lái)比較熱門(mén)的編程方式。但它并不能取代 OOP。而只是作為 OOP 的擴(kuò)展和補(bǔ)充。在 OOP 中,類(lèi)、接口的關(guān)系是一個(gè)層次結(jié)構(gòu)(或稱為樹(shù)結(jié)構(gòu)),子類(lèi)(子結(jié)點(diǎn))會(huì)自動(dòng)繼承父類(lèi)(父結(jié)點(diǎn))的所有特性。這種繼承關(guān)系雖然使代碼重用達(dá)到了一定的高度。但在某些情況下,代碼仍然會(huì)出現(xiàn)冗余。AOP 采用的是一種“橫向切割”的方式(OOP 實(shí)際上是“縱向繼承”)進(jìn)行編程。所謂橫向切割,就是將類(lèi)層次樹(shù)橫向切一刀,并且會(huì)自動(dòng)在這一刀所波及的

9、類(lèi)(結(jié)點(diǎn))中同樣的代碼。也就是說(shuō),橫向切割的作用就是找到符合某一規(guī)則的類(lèi)(如以 Add 開(kāi)頭的類(lèi)),并在這些類(lèi)中代碼。而這些入的代碼并不在類(lèi)中,而是寫(xiě)在了方面(Aspect)中,Aspect在 AOP 中的地位相當(dāng)于 Class 在 AOP 中的地位。這樣在修改這些代碼時(shí),只需要 Aspect 中的代碼,所有入的代碼就會(huì)自動(dòng)更改。在 Spring 中提供了自己的 AOP 框架,叫 SprinP,當(dāng)然,Spring 也可以使用其他的 AOP框架,如 AspectJ、J3其他技術(shù)s AOP 等。Spring 中還有其他的一些技術(shù),如異常處理、資源管理等。Spring 所使用的大多數(shù)框架并不是自己提

10、供的,而是使用現(xiàn)成的框架。并且對(duì)同類(lèi)的框架提供了相同的接口,如基于MVC 的 Web 框架、ORM 框架等。在 Spring 中提供了層的.springframework. DataAcs的異常類(lèi),如數(shù)據(jù)Exception。而且這些類(lèi)實(shí)際上是 RuntimeException 的子類(lèi),并不需要使用 try.catch 進(jìn)行捕捉,因此,可以使處理異常的代碼最小化。Spring 可以管理很多其他的資源,如 JDBC、JNDI、JTA 等。這使得管理這些資源變得更容易。21.2在 MyEclipse 中配置 Spring在應(yīng)用程序中使用 Spring 框架非常簡(jiǎn)單,只要在 CLASSPATH 環(huán)境變

11、量中指定 Spring 框架的 JAR 包,就可以在程序中像使用其他的 JAR 包一樣使用 Spring。但要想使用 Spring 框架,需要進(jìn)行一些配置。如果系統(tǒng)比較大的話,將會(huì)產(chǎn)生非常大的工作量。因此,要想更好地使用 Spring,就需要一個(gè)支持 Spring 的開(kāi)發(fā)工具。MyEclipse 是基于 Eclipse 的用于開(kāi)發(fā) J2EE 應(yīng)用的開(kāi)發(fā)工具(MyEclipse 是 Eclipse 的一個(gè)插件)。MyEclipse 可以很好地支持 Spring 的開(kāi)發(fā)。47821.2.1使用 MyEclipse 自帶的 JAR 包在 MyEclipse 中新建一個(gè)工程,可以是 Web Proje

12、ct 也可以是 Java Project。這里以 MyEclipse 5.5為例,在 Java Project 中添加 Spring。在 MyEclipse 中新建一個(gè) Java 工程,名稱為 test_spring。創(chuàng)建好工程以后,就可以向工程添加 Spring 了,步驟如下:(1)右擊 test_spring 工程,在彈出的快捷菜單中選擇 MyEclipse|Add Spring Capabilities 命令,彈出 Add Spring Capabilities框,如圖 21-1 所示。(2)在圖 21-1 所示的框中選中要添加的 Spring 相關(guān) JAR 包,選擇要導(dǎo)入 JAR 包的

13、方式,然后單擊 Next 按鈕,進(jìn)入圖 21-2 所示的框。圖 21-1Add Spring Capabilities框圖 21-2導(dǎo)入 Spring 的配置文件(3)在圖 21-2 所示的框中可以設(shè)置 Spring 的配置文件名和保存目錄。在默認(rèn)情況下,Spring 的配置文件名為 applicationContext.xml。一般并不需要修改這一頁(yè)的設(shè)置。單擊 Finish按鈕,MyEclipse 除了向test_spring 工程添加了相關(guān)的包外,還添加了一個(gè) applicationContext.xml文件,該文件用于配置 Spring 框架中所需的資源。MyEclipse 生成的默認(rèn)

14、代碼如下:21.2.2和安裝 Spring可以到 Spring 的Spring 的版本,的地址如下:479第 6 篇Spring 篇可以通過(guò)選擇 Window|Preferen命令,打開(kāi) Preferen框來(lái)Spring 的 JAR 包。在 Preferen框左側(cè)的樹(shù)結(jié)構(gòu)中選擇 MyEclipse|Project Capabilities|Spring 結(jié)點(diǎn)。在右側(cè)出現(xiàn)了 Spring 各種版本的設(shè)置,單擊 Spring,如圖 21-3 所示。圖 21-3Spring 的 JAR 包在圖 21-3 所示的界面中添加或替換相應(yīng)的 JAR 包后,如果當(dāng)前應(yīng)用程序使用了 Spring,這些包就會(huì)自動(dòng)

15、加到當(dāng)前的應(yīng)用程序中。21.3Spring 實(shí)例:第一個(gè) Spring 例子在本節(jié)中給出了一個(gè)簡(jiǎn)單的 Spring 例子。這個(gè)例子用普通的方法編寫(xiě)也非常簡(jiǎn)單,但是在這一節(jié)將使用 Spring 框架通過(guò)裝配 Bean 的方式來(lái)實(shí)現(xiàn)這個(gè)例子。這個(gè)例子的基礎(chǔ)部分非常簡(jiǎn)單,就是通過(guò) Spring 的配置來(lái)實(shí)現(xiàn)類(lèi)的調(diào)用。在 MyEclipse 中新建一個(gè) Java 工程,工程名為 s。把s-logging.jar 和spring.jar 兩個(gè) JAR 包到工程個(gè)目錄下,然后把這些 JAR路徑,加建路徑的方法:dd to Build Path 命令。選中這兩個(gè) JAR右擊,在彈出的快捷菜單中選擇 Buil

16、d Pa這個(gè)例子使用的開(kāi)發(fā)工具是 MyEclipse 5.5 ,實(shí)例中的源代碼見(jiàn)光盤(pán)第 21 章的 spring_injection 工程中。48021.3.1編寫(xiě) MyBean 類(lèi)編寫(xiě)一個(gè)普通的 Java 類(lèi),類(lèi)名為 MyBean,MyBean 類(lèi)的代碼如下:21.3.2編寫(xiě) YouBean 類(lèi)編寫(xiě)一個(gè)普通的 Java 類(lèi),類(lèi)名為 YouBean,在類(lèi)中注入 MyBean 類(lèi),代碼如下:21.3.3編寫(xiě) Spring 的配置文件把 MyBean 類(lèi)和 YouBean 類(lèi)裝配到 Spring 中,在工程 spring_injection 的 src 目錄下新建一個(gè) XML 文件,名為 bean

17、.xml。在文件中編寫(xiě)如下代碼:?xml ver- Application context definition for JPetStores business layer.- Contains bean referento the tranion manager and to thes in- dataAc-sContext-local/jta.xml (see web.xmls contextConfigLocation).21.3.4編寫(xiě)測(cè)試類(lèi)編寫(xiě)一個(gè) Test 類(lèi)來(lái)調(diào)用 YouBean 類(lèi)的 youoWorld 方法,Test 類(lèi)的代碼如下:運(yùn)行該類(lèi),在 MyEclipse 的控制臺(tái)中

18、輸出如下信息:4822010-3-15 17:27:21.springframework.context.support. AbstractApplication Context prepareRefresh信息: Refreshing.springframework.context.support. ClassPathXmlApplicationContext17f1ba3:display name .springframework.context.support. ClassPathXml ApplicationContext17f1ba3; startup date Mar 15 17:

19、27:21 CST 2010; root of context hierarchy2010-3-15 17:27:22.springframework.beans.factory.xml. XmlBeanDefinition Reader loadBeanDefinitions信息: Loading XML bean definitions from class path resource beans.xml2010-3-15 17:27:22.springframework.context.support. AbstractApplication-Context obtainFreshBea

20、nFactory信息: Bean factory for application context .springframework.context. support.ClassPathXmlApplicationContext17f1ba3:.springframework.beans. factory.support. DefaultListabeanFactory1c80b01package com.test;import.springframework.context.ApplicationContext;import.springframework.context.support.ClassPathXmlApplicationContext; import com.beans.YouBean;public class Test public sic void main(String args) /初始化S容器ApplicationContext act = new ClassPathXmlApplicationContext (beans. xml);/獲取容器中的管理對(duì)象YouBean y=(YouBean) act.getBean(

溫馨提示

  • 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)論