JavaEE開(kāi)發(fā)技術(shù)與案例教程第1章-Java課件_第1頁(yè)
JavaEE開(kāi)發(fā)技術(shù)與案例教程第1章-Java課件_第2頁(yè)
JavaEE開(kāi)發(fā)技術(shù)與案例教程第1章-Java課件_第3頁(yè)
JavaEE開(kāi)發(fā)技術(shù)與案例教程第1章-Java課件_第4頁(yè)
JavaEE開(kāi)發(fā)技術(shù)與案例教程第1章-Java課件_第5頁(yè)
已閱讀5頁(yè),還剩107頁(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章JavaEE概述1.1JavaEE簡(jiǎn)介1.2JavaEE分層架構(gòu)1.3JavaEE技術(shù)規(guī)范1.4敏捷輕型框架1.5JavaEE開(kāi)發(fā)環(huán)境習(xí)題

第1章JavaEE概述1.1JavaEE簡(jiǎn)介1.1JavaEE簡(jiǎn)介1.1.1什么是JavaEEJavaEE是基于Java的解決方案,是Java平臺(tái)的企業(yè)版,是一套技術(shù)架構(gòu)。JavaEE的核心是一組技術(shù)規(guī)范與指南,它使開(kāi)發(fā)人員能夠開(kāi)發(fā)具有可移植性、安全性和可復(fù)用的企業(yè)級(jí)應(yīng)用。JavaEE良好定義和設(shè)計(jì)的體系結(jié)構(gòu)保證了開(kāi)發(fā)人員更多地將注意力集中于架構(gòu)設(shè)計(jì)和業(yè)務(wù)邏輯上。1.1JavaEE簡(jiǎn)介1.1.1什么是Java1.1.2JavaEE的新特性1、標(biāo)注(Annotation)是JavaEE5引入的一個(gè)新特性。標(biāo)注之于程序是一種元數(shù)據(jù),標(biāo)注這種元數(shù)據(jù)按照其作用可以分為三類:編寫(xiě)文檔、代碼分析、編譯檢查。用于編寫(xiě)文檔是通過(guò)代碼里的標(biāo)注元數(shù)據(jù)生成文檔,例如@Documented,用于定制javadoc不支持的文檔屬性,并在開(kāi)發(fā)中使用。用在代碼分析的標(biāo)注如@Deprecated,指出這是個(gè)不建議使用的方法。1.1.2JavaEE的新特性

引入標(biāo)注可以實(shí)現(xiàn)多種功能的簡(jiǎn)化,例如:(1)定義和使用WebService。(2)開(kāi)發(fā)EJB組件。(3)映射Java類到XML文檔。(4)映射Java類到數(shù)據(jù)庫(kù)。(5)依賴注入。(6)指定部署信息等。有了Annotation,在Web應(yīng)用開(kāi)發(fā)中直接在代碼中使用標(biāo)注就可以告知JavaEE服務(wù)器如何部署及運(yùn)行,而不必再編輯WEB-INF/web.xml文件了。引入標(biāo)注可以實(shí)現(xiàn)多種功能的簡(jiǎn)化,例如:2、EJB3EJB3是EJB2的升級(jí),不像EJB2是重量級(jí)框架,EJB3的持久化變更加簡(jiǎn)化,是輕量級(jí)的。它不再需要EJBhome接口,不再需要實(shí)現(xiàn)SessionBean接口,JDNIAPI也不再是必需的。EJB部署描述符變成可選的功能。此外,EJB3中還引入了攔截器功能。攔截器是AOP在EJB中的實(shí)現(xiàn),是可以對(duì)Bean的業(yè)務(wù)方法進(jìn)行攔截的組件。攔截器可以用于無(wú)狀態(tài)會(huì)話Bean、有狀態(tài)會(huì)話Bean和消息驅(qū)動(dòng)Bean。攔截器用來(lái)監(jiān)聽(tīng)程序的一個(gè)或者多個(gè)方法,它對(duì)方法調(diào)用提供了控制。2、EJB33、JPAJPA(JavaPersistenceAPI),即數(shù)據(jù)持久化API,它是一個(gè)輕量級(jí)的對(duì)象持久化模型,是JavaEE的又一新特性。Sun公司推出JPA規(guī)范目的在于簡(jiǎn)化現(xiàn)有JavaEE和JavaSE應(yīng)用的對(duì)象持久化工作,希望統(tǒng)一ORM技術(shù),因?yàn)樵贘PA出現(xiàn)之前,各種ORM框架之間的API差異很大,使用了某種ORM框架的系統(tǒng)會(huì)受制于該ORM的標(biāo)準(zhǔn)。JPA本質(zhì)上是一種ORM規(guī)范,并未提供ORM實(shí)現(xiàn),其具體實(shí)現(xiàn)由其他的廠商提供。程序員若要使用JPA,需要選擇JPA的實(shí)現(xiàn)框架,Hibernate3即是這樣一個(gè)實(shí)現(xiàn)了JPA的一個(gè)框架。3、JPA4、WebService支持

WebService是建立可互操作的分布式應(yīng)用程序的新平臺(tái),程序員可能使用COM或DCOM建立過(guò)基于組件的分布式應(yīng)用程序,或者使用CORBA、RMI等技術(shù)實(shí)現(xiàn)遠(yuǎn)程調(diào)用。WebService平臺(tái)也是這樣的一套標(biāo)準(zhǔn),而且它做的更好。它定義了應(yīng)用程序如何在Web上實(shí)現(xiàn)互操作。WebService平臺(tái)需要一套協(xié)議來(lái)實(shí)現(xiàn)分布式應(yīng)用程序的創(chuàng)建。4、WebService支持5、依賴注入所謂依賴注入(DependencyInjection)是指當(dāng)某個(gè)角色(可能是一個(gè)Java實(shí)例,調(diào)用者)需要另外一個(gè)角色(另外一個(gè)Java類的實(shí)例,被調(diào)用者)的協(xié)助時(shí),在傳統(tǒng)的程序設(shè)計(jì)過(guò)程中,通常是由調(diào)用者來(lái)創(chuàng)建被調(diào)用者的實(shí)例。在一些輕型框架如Spring中,創(chuàng)建被調(diào)用者的任務(wù)不再由調(diào)用者完成,而是由Spring容器完成,然后以某種方式注入給調(diào)用者,稱為依賴注入,也稱為控制反轉(zhuǎn)。通過(guò)依賴注入降低了代碼的耦合度,也使得資源訪問(wèn)變得更加容易。5、依賴注入6、泛型泛型(Generics)是程序設(shè)計(jì)語(yǔ)言的一種特性,支持泛型的程序設(shè)計(jì)語(yǔ)言允許程序員在編寫(xiě)代碼時(shí)定義一些可變部分,那些部分在使用前必須作出指明。各種程序設(shè)計(jì)語(yǔ)言和其編譯器、運(yùn)行環(huán)境對(duì)泛型的支持均不一樣。將類型參數(shù)化以達(dá)到代碼復(fù)用提高軟件開(kāi)發(fā)工作效率的一種數(shù)據(jù)類型。泛型主要是引入了類型參數(shù)這個(gè)概念。6、泛型JavaEE5通過(guò)引入泛型,使得集合元素類型參數(shù)化,避免了運(yùn)行時(shí)出現(xiàn)類型轉(zhuǎn)換錯(cuò)誤,因此不必要加入顯式強(qiáng)制類型轉(zhuǎn)換的操作了。下面的例子對(duì)此作了說(shuō)明:不使用泛型時(shí):ArrayListlist=newArrayList();list.add(0,newInteger(42));inttotal=((Integer)list.get(0)).inValue();JavaEE5通過(guò)引入泛型,使得集合元素類型參數(shù)化,避免使用了泛型后:ArrayList<Integer>list=newArrayList<Integer>();list.add(0,newInteger(42));inttotal=list.get(0).inValue();讀者可以體會(huì)這兩個(gè)例子之間的微妙差異,進(jìn)而理解用反型的好處。使用了泛型后:7、枚舉枚舉類型是JavaEE5開(kāi)始引入的類型,本質(zhì)上枚舉類型就是一個(gè)命名變量的列表。枚舉類型通過(guò)關(guān)鍵字enum來(lái)聲明。下面是一個(gè)枚舉的例子:publicenumWeek{Monday,

Tuesday,

Wednesday,

Thursday,7、枚舉Friday,

Saturday,

Sunday}對(duì)命名常量可以通過(guò)類似對(duì)象成員的方法或者通過(guò)方法values()、valueOf()、ordinal()、name()等方法進(jìn)行存取操作。下面的for循環(huán)將輸出枚舉的所有命名常量。for(Weekw:Week.values())System.out.println(w);Friday,8、增強(qiáng)的for循環(huán)

JavaEE5中的增強(qiáng)的for循環(huán)簡(jiǎn)化了數(shù)組和集合的遍歷操作,其語(yǔ)法更簡(jiǎn)單,可以防止下標(biāo)越界的問(wèn)題出現(xiàn),而且還可以避免由于強(qiáng)制類型轉(zhuǎn)換導(dǎo)致的錯(cuò)誤。下面是一個(gè)使用增強(qiáng)for循環(huán)對(duì)數(shù)組元素進(jìn)行遍歷的例子。

inta[]={1,2,3,4,5,6}; for(intnum:a)System.out.println(num);8、增強(qiáng)的for循環(huán)9、函數(shù)可變參數(shù)

JavaEE5之前,方法的參數(shù)個(gè)數(shù)是固定的。JavaEE5允許創(chuàng)建具有可變參數(shù)的方法,這使得某些操作變得更方便了。下面的程序例子可以說(shuō)明這一點(diǎn)。

publicclassVarArgument{ publicstaticvoidmain(Stringargs[]){ System.out.println(add(2,3)); System.out.println(add(2,3,4,5)); } publicstaticintadd(int…args){ intsum=0;for(inti=0;i<args.length;i++){sum+=args[i];}returnsum;}}9、函數(shù)可變參數(shù)10、靜態(tài)導(dǎo)入在JavaEE5之前的版本中,程序中使用靜態(tài)成員要在其前面加類名引導(dǎo)。JavaEE5引入靜態(tài)導(dǎo)入意味著不必再寫(xiě)類名,而是直接通過(guò)靜態(tài)成員的名字來(lái)訪問(wèn)它們。例如:

//靜態(tài)導(dǎo)入

importstaticjava.lang.System.*;importstaticjava.lang.Math.*;…//調(diào)用靜態(tài)成員

out.println(sqrt(6));//不再是Math.sqrt(6)10、靜態(tài)導(dǎo)入1.2JavaEE分層架構(gòu)1.2.1分層模式概述分層模式是常見(jiàn)的架構(gòu)模式。分層描述的是這樣一種架構(gòu)設(shè)計(jì)過(guò)程:從最低級(jí)別的抽象開(kāi)始,稱為第1層。在此基礎(chǔ)上逐步向上進(jìn)行抽象。直至達(dá)到功能的最高級(jí)別。分層模式的特點(diǎn)包括:伸縮性:伸縮性是指應(yīng)用程序能支持更多用戶的能力。應(yīng)用的層數(shù)少,可以增加資源(如CPU、內(nèi)存等)的機(jī)會(huì)就少。反之,則可以把每層分布在不同的機(jī)器上??删S護(hù)性:指的是發(fā)生需求變化時(shí),只需修改軟件的局部,不必改動(dòng)其他部分的代碼。1.2JavaEE分層架構(gòu)1.2.1分層模式概述可擴(kuò)展性:可擴(kuò)展性是指在現(xiàn)有系統(tǒng)增加新功能的能力。分層的結(jié)構(gòu)中可擴(kuò)展性較好,這是由于可以每個(gè)層中插入功能擴(kuò)展點(diǎn),而不改變?cè)械恼w框架。可重用性:可重用性指的是同一程序代碼可以滿足多種需求的能力。例如,業(yè)務(wù)邏輯層可以被多種表示層共享,即業(yè)務(wù)邏輯層的代碼被重用了。可管理性:指管理系統(tǒng)的難易程度。可擴(kuò)展性:可擴(kuò)展性是指在現(xiàn)有系統(tǒng)增加新功能的能力。分層的結(jié)構(gòu)1.2.2JavaEE的結(jié)構(gòu)JavaEE使用多層分布式的應(yīng)用模型,該模型通過(guò)四層來(lái)實(shí)現(xiàn),分別為:⑴客戶層:運(yùn)行在客戶計(jì)算機(jī)上的組件。⑵Web層:運(yùn)行在JavaEE服務(wù)器上的組件。⑶業(yè)務(wù)層:同樣是運(yùn)行在JavaEE服務(wù)器上的組件。⑷企業(yè)信息系統(tǒng)層(EIS):是指運(yùn)行在EIS服務(wù)器上的軟件系統(tǒng)。有時(shí)我們把客戶層和Web層視為一個(gè)層,這樣就可以將以上結(jié)構(gòu)按三層來(lái)劃分,如下圖所示。1.2.2JavaEE的結(jié)構(gòu)JavaEE開(kāi)發(fā)技術(shù)與案例教程第1章--Java課件

在這個(gè)分層體系中,客戶層組件可以使基于Web方式的,也可以是基于傳統(tǒng)方式的。Web層組件可以使JSP頁(yè)面或者Servlet。對(duì)于業(yè)務(wù)邏輯層組件,其代碼是處理如銀行、零售等具體行業(yè)或領(lǐng)域的業(yè)務(wù)需要,由運(yùn)行在業(yè)務(wù)層上的EnterpriseBean進(jìn)行處理。企業(yè)信息系統(tǒng)層處理企業(yè)信息系統(tǒng)軟件,包括企業(yè)基礎(chǔ)建設(shè)系統(tǒng),例如企業(yè)資源計(jì)劃(ERP)、大型機(jī)事務(wù)處理、數(shù)據(jù)庫(kù)系統(tǒng)和其他遺留系統(tǒng)。在這個(gè)分層體系中,客戶層組件可以使基1.3JavaEE技術(shù)規(guī)范

1.JDBC(JavaDatabaseConnectivity)JDBCAPI為訪問(wèn)不同的數(shù)據(jù)庫(kù)提供了一種統(tǒng)一的機(jī)制,像ODBC一樣,JDBC使操縱數(shù)據(jù)庫(kù)的細(xì)節(jié)對(duì)開(kāi)發(fā)者透明,另外,JDBC對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)也具有平臺(tái)無(wú)關(guān)性。2.JNDI(JavaNameandDirectoryInterface)名字和目錄服務(wù),為應(yīng)用提供一致的模型來(lái)訪問(wèn)企業(yè)級(jí)資源,如DNS和LDAP、本地文件系統(tǒng)或應(yīng)用服務(wù)器中的對(duì)象。1.3JavaEE技術(shù)規(guī)范

1.JDBC(JavaD

3.EJB(Enterprise

JavBean)企業(yè)Java組件,提供一個(gè)框架來(lái)描述分布式商務(wù)邏輯,開(kāi)發(fā)具有可伸縮性和復(fù)雜的企業(yè)級(jí)應(yīng)用。EJB規(guī)范定義了組件何時(shí)如何與它們的容器進(jìn)行交互。容器負(fù)責(zé)提供公用的服務(wù),如目錄、事務(wù)管理、安全性等。需要說(shuō)明的是,EJB并不是實(shí)現(xiàn)JavaEE企業(yè)應(yīng)用的惟一渠道,它的意義在于它是專為分布式大型企業(yè)應(yīng)用而設(shè)計(jì),用它編寫(xiě)的程序具有良好的可擴(kuò)展性和安全性。3.EJB(EnterpriseJav4.RMI(RemoteMethodInvoke)遠(yuǎn)程方法調(diào)用,顧名思義,它用于調(diào)用遠(yuǎn)程對(duì)象的方法。它使用了序列化方式在客戶端和服務(wù)器端傳遞數(shù)據(jù)。5.JavaIDL/CORBA(JavaInterfaceDefinitionLanguage/CommonObjectRequestBrokerArchitecture)

Java接口定義語(yǔ)言/公用對(duì)象請(qǐng)求代理結(jié)構(gòu)。為Java平臺(tái)添加了CORBA(CommonObjectRequestBrokerArchitecture,公用對(duì)象請(qǐng)求代理體系結(jié)構(gòu))功能,從而可提供基于標(biāo)準(zhǔn)的互操作性和連接性。4.RMI(RemoteMethodInvoke)JavaIDL使分布式、支持Web的Java應(yīng)用程序可利用ObjectManagementGroup定義的行業(yè)標(biāo)準(zhǔn)OMGIDL(ObjectManagementGroupInterfaceDefinitionLanguage,對(duì)象管理組接口定義語(yǔ)言)及IIOP(InternetInter-ORBProtocol,Internet對(duì)象請(qǐng)求代理間協(xié)議)來(lái)透明地調(diào)用遠(yuǎn)程網(wǎng)絡(luò)服務(wù)。運(yùn)行時(shí)組件包括一個(gè)全兼容的JavaORB,用于通過(guò)IIOP通訊進(jìn)行分布式計(jì)算。JavaIDL使分布式、支持Web的Java應(yīng)用6.JSP(JavaServerPages)JSP頁(yè)面由HTML代碼和嵌入其中的Java代碼組成。服務(wù)器在頁(yè)面被客戶端請(qǐng)求以后,對(duì)這些Java代碼進(jìn)行處理,然后將生成的HTML頁(yè)面返回給客戶端的瀏覽器。7.JavaServletServlet是運(yùn)行在服務(wù)器端的Java程序,它擴(kuò)展了Web服務(wù)器的功能。作為一種服務(wù)器端的應(yīng)用,當(dāng)被請(qǐng)求時(shí)開(kāi)始執(zhí)行。Servlet提供的功能和JSP一致,只是二者的構(gòu)成不同。JSP通常是HTML代碼中嵌入Java代碼,而Servlet全部由Java寫(xiě)成并且生成HTML。6.JSP(JavaServerPages)8.XML(eXtensibleMarkupLanguage)擴(kuò)展的標(biāo)記語(yǔ)言,用來(lái)定義其他標(biāo)記語(yǔ)言的語(yǔ)言。作為數(shù)據(jù)交換和數(shù)據(jù)共享的語(yǔ)言,適用于很多的應(yīng)用領(lǐng)域。9.JMS(JavaMessageService)

Java消息服務(wù),是Java平臺(tái)上用于建立面向消息中間件(MOM)的技術(shù)規(guī)范,它便于消息系統(tǒng)中的Java應(yīng)用程序進(jìn)行消息交換,并且通過(guò)提供標(biāo)準(zhǔn)的產(chǎn)生、發(fā)送、接收消息的接口簡(jiǎn)化企業(yè)應(yīng)用的開(kāi)發(fā)。8.XML(eXtensibleMarkupLangua

許多廠商目前都支持JMS,包括IBM的MQSeries、BEA的WeblogicJMSservice等等。使用JMS能夠通過(guò)消息收發(fā)服務(wù)(有時(shí)稱為消息中介程序或路由器)從一個(gè)JMS客戶機(jī)向另一個(gè)JMS客戶機(jī)發(fā)送消息。消息是JMS中的一種類型對(duì)象,由兩部分組成:報(bào)頭和消息主體。報(bào)頭由路由信息以及有關(guān)該消息的元數(shù)據(jù)組成。消息主體則攜帶著應(yīng)用程序的數(shù)據(jù)或有效負(fù)載。許多廠商目前都支持JMS,包括I10.JTA(JavaTransactionArchitecture)

Java事務(wù)體系結(jié)構(gòu),定義了一組標(biāo)準(zhǔn)的API,用于訪問(wèn)各種事務(wù)監(jiān)控。11.JTS(JavaTransactionService)

Java事務(wù)服務(wù),是CORBAOTS(ObjectTransactionService)事務(wù)監(jiān)控的基本實(shí)現(xiàn)。10.JTA(JavaTransactionArchit12.JavaMail

是用于存取郵件服務(wù)器的API,它提供了一套郵件服務(wù)器的抽象類。它不僅支持SMTP服務(wù)器,也支持IMAP服務(wù)器。13.JAF(JavaBeansActivationFramework)

JavaMail利用JAF來(lái)處理MIME編碼的郵件附件。MIME的字節(jié)流可以被轉(zhuǎn)換成Java對(duì)象,或者相反。12.JavaMail1.4敏捷輕型框架

框架,即framework。其實(shí)就是某種應(yīng)用的半成品,就是一組組件,供你選用完成你自己的系統(tǒng)。這些組件是把不同的應(yīng)用中有共性的任務(wù)抽取出來(lái)加以實(shí)現(xiàn),做成程序供人使用。簡(jiǎn)單說(shuō)就是使用別人搭好的舞臺(tái),你來(lái)做表演。而且,框架一般是成熟的,不斷升級(jí)的軟件??蚣艿母拍钭钤缙鹪从赟malltalk環(huán)境,其中最著名的框架是Smalltalk80的用戶界面框架MVC(Model-View-Controller)。1.4敏捷輕型框架框架,即framewor

框架可分為重型框架和輕型框架。一般稱EJB這樣的框架為重型框架,因其軟件架構(gòu)較復(fù)雜,啟動(dòng)加載時(shí)間較長(zhǎng),系統(tǒng)相對(duì)昂貴,需啟動(dòng)應(yīng)用服務(wù)器加載EJB組件。而輕型框架則不需要昂貴的設(shè)備和軟件費(fèi)用,且系統(tǒng)搭建容易,服務(wù)器啟動(dòng)快捷,適合于中小型企業(yè)或項(xiàng)目。目前,使用輕型框架開(kāi)發(fā)項(xiàng)目非常普遍,常用的輕型框架包括Hibernate、Struts、Spring、WebWork、Tapestry、JSF等。框架可分為重型框架和輕型框架。一般1.4.1輕型框架簡(jiǎn)介

1.使用輕型框架的好處軟件技術(shù)發(fā)展至今,面臨各類復(fù)雜的應(yīng)用系統(tǒng)開(kāi)發(fā)。軟件系統(tǒng)開(kāi)發(fā)任務(wù)涉及到的知識(shí)更綜合、內(nèi)容更豐富、問(wèn)題更繁多。如何能使程序開(kāi)發(fā)效率高、工作效果好,這是輕型框架設(shè)計(jì)的目的所在??蚣芸梢酝瓿砷_(kāi)發(fā)中的一些基礎(chǔ)性工作,開(kāi)發(fā)人員可以集中精力完成系統(tǒng)的業(yè)務(wù)邏輯設(shè)計(jì)??傮w而言,適用輕型框架的好處有以下幾方面:⑴減少重復(fù)開(kāi)發(fā)工作量、縮短開(kāi)發(fā)周期、降低開(kāi)發(fā)成本。⑵使程序設(shè)計(jì)總體上更為規(guī)范、程序運(yùn)行更穩(wěn)定。⑶軟件開(kāi)發(fā)更能適應(yīng)需求變化,且運(yùn)行維護(hù)費(fèi)用也較低。1.4.1輕型框架簡(jiǎn)介2.目前流行的框架組合開(kāi)發(fā)人員可以根據(jù)自己對(duì)框架的熟悉程度,在充分了解不同框架的性能,根據(jù)其滿足系統(tǒng)功能和性能要求的前提下,自由地選擇不同框架的搭配使用。下面是一些常見(jiàn)的框架組合。⑴JSP+Servlet+JavaBean+JDBC⑵Struts+MySQL+JDBC⑶Hibernate+JDBC+JSP⑷Struts+Hibernate⑸Hibernate+Spring2.目前流行的框架組合⑹Spring+Struts+JDBC⑺Struts+Hibernate+Spring⑻Struts+EJB⑼JSF+Hibernate⑽Tapestry+Hibernate+Spring⑾Freemaker+Struts+Hibernate+Spring⑿JSP+EJB+Oracle⑹Spring+Struts+JDBC1.4.2Hibernate框架簡(jiǎn)介

Hibernate是一個(gè)面向Java環(huán)境的對(duì)象/關(guān)系映射工具,即ORM(Object-RelationMapping)。它的作用是封裝了JDBC的功能,即隱藏了數(shù)據(jù)訪問(wèn)的細(xì)節(jié),負(fù)責(zé)Java對(duì)象的持久化。Hibernate的工作原理是通過(guò)文件把值對(duì)象和數(shù)據(jù)庫(kù)表之間建立起一個(gè)映射關(guān)系,這樣,我們?cè)趹?yīng)用程序中只需要借助Hibernate所提供的一些基本類通過(guò)操作這些值對(duì)象即可達(dá)到訪問(wèn)數(shù)據(jù)庫(kù)的目的。這就使得Java程序員使用其所熟悉的面向?qū)ο蠓妒竭M(jìn)行開(kāi)發(fā)。1.4.2Hibernate框架簡(jiǎn)介

了解了Hibernate,我們需要進(jìn)一步了解JPA。前面已經(jīng)介紹了JPA即Java持久化API(JavaPersistenceAPI)。由于ORM框架產(chǎn)品多,且各具特點(diǎn),互不相通,這就給開(kāi)發(fā)者一個(gè)又一個(gè)難題,也成了應(yīng)用移植的障礙。JPA是JCP組織發(fā)布的JavaEE標(biāo)準(zhǔn)之一,任何符合JPA標(biāo)準(zhǔn)的框架都遵循同樣的架構(gòu),提供相同的API,這就保證了基于JPA開(kāi)發(fā)的企業(yè)應(yīng)用經(jīng)過(guò)小的修改即能夠在不同的JPA框架下運(yùn)行。就是說(shuō),JPA是一個(gè)ORM模型和標(biāo)準(zhǔn),而不是一個(gè)實(shí)際的框架。了解了Hibernate,我們需要進(jìn)1.4.3strutsStruts是一種基于JavaEE平臺(tái)的MVC框架。它主要是用Servlet和JSP技術(shù)實(shí)現(xiàn)的。它使開(kāi)發(fā)過(guò)程各個(gè)模塊化分清晰易掌控。利用taglib獲得可重用的代碼;利用ActionServlet配合struts-config.xml實(shí)現(xiàn)對(duì)整個(gè)系統(tǒng)進(jìn)行導(dǎo)航式建構(gòu),開(kāi)發(fā)人員易于對(duì)系統(tǒng)的整體把握;用戶界面、業(yè)務(wù)邏輯和控制的分離,帶來(lái)系統(tǒng)結(jié)構(gòu)更清晰,更容易分工協(xié)作,且系統(tǒng)具有良好的可擴(kuò)展性和易維護(hù)性。1.4.3struts1.4.4SpringSpring是一個(gè)應(yīng)用于JavaEE領(lǐng)域的輕量級(jí)的、功能強(qiáng)大的、靈活的應(yīng)用程序框架??梢蕴峁┛焖俚腏avaWeb應(yīng)用程序開(kāi)發(fā)。Spring項(xiàng)目是個(gè)非?;钴S的開(kāi)源項(xiàng)目,因此它提供了眾多優(yōu)秀項(xiàng)目的集成,例如對(duì)MVC框架和視圖技術(shù)的集成、與開(kāi)源持久層ORM的集成、與動(dòng)態(tài)語(yǔ)言的集成以及與其他企業(yè)級(jí)應(yīng)用的集成。1.4.4SpringSpring提供了一個(gè)完整的MVC框架,為模型、視圖、控制器之間進(jìn)行了非常清晰的劃分,各部分耦合度極低。視圖不再要求必須使用JSP,而可以選擇Velocity、Freemaker或者其他視圖技術(shù)。

Spring支持依賴注入(DI)和面向方面編程技術(shù)(AOP),更容易實(shí)現(xiàn)復(fù)雜的需求。支持事務(wù)管理,可以很容易地實(shí)現(xiàn)支持多個(gè)事務(wù)資源。支持JMS和JCA等技術(shù),能方便地訪問(wèn)EJB。Spring提供了一個(gè)完整的MVC1.4.5JSFJSF(JavaServerFaces)是一種以組件為中心的用于構(gòu)建Web應(yīng)用程序的輕型框架,它主要可用于開(kāi)發(fā)應(yīng)用程序的用戶界面。一般而言,用戶界面設(shè)計(jì)是一件很費(fèi)時(shí)的過(guò)程,JSF以組件為中心的結(jié)構(gòu)可以極大地簡(jiǎn)化界面的設(shè)計(jì)工作。它為開(kāi)發(fā)人員提供了標(biāo)準(zhǔn)的編程接口、豐富的UI組件庫(kù)以及事件驅(qū)動(dòng)模型等完整的應(yīng)用框架,通過(guò)JSF,可以在頁(yè)面中輕松地使用Web組件,捕獲用戶行為產(chǎn)生的事件,執(zhí)行驗(yàn)證,建立頁(yè)面導(dǎo)航等任務(wù)。1.4.5JSFJSF的應(yīng)用架構(gòu)完全實(shí)現(xiàn)了MVC模式。用戶界面代碼(視圖)與處理邏輯(模型)相分離,這使得JSF程序易于管理,而所有與應(yīng)用程序的用戶交互均由一個(gè)前端(FacesServlet)(控制器)來(lái)處理。JSF的應(yīng)用架構(gòu)完全實(shí)現(xiàn)了MVC模1.5JavaEE開(kāi)發(fā)環(huán)境1.5.1JDK的下載和安裝

JDK(JavaDevelopmentKit,Java開(kāi)發(fā)工具包)是JavaEE平臺(tái)的應(yīng)用程序的基礎(chǔ),利用它構(gòu)建組件、開(kāi)發(fā)應(yīng)用程序。JDK是開(kāi)源免費(fèi)的工具,可以到Sun公司官網(wǎng)下載。網(wǎng)址為/javase/downloads/index.jsp。例如下載jdk-6u21-windows-i586.exe文件后,可以直接雙擊運(yùn)行該文件進(jìn)行安裝。按安裝過(guò)程提示選擇好安裝路徑及安裝組件即可。。1.5JavaEE開(kāi)發(fā)環(huán)境1.5.1JDK的下載

安裝后需要設(shè)置環(huán)境變量JAVA_HOME、PATH及CLASSPATH。配置環(huán)境變量的目的是為了設(shè)置Java程序的編譯和運(yùn)行有關(guān)的環(huán)境信息。其中JAVA_HOME設(shè)置為JDK的安裝目錄。PATH設(shè)置為JDK的程序(即exe文件)目錄。CLASSPATH則用于設(shè)置JDK類庫(kù)搜索路徑。安裝后需要設(shè)置環(huán)境變量JAVA_HOME、PATH及CJDK目錄結(jié)構(gòu)為:bin目錄:包含編譯器、解釋器和一些其他工具。lib目錄:包含類庫(kù)文件。demo目錄:包含演示例子。include目錄:包含C語(yǔ)言頭文件,支持Java本地接口與Java虛擬機(jī)調(diào)試程序接口的本地編程技術(shù)。jre目錄:包含Java虛擬機(jī)、運(yùn)行時(shí)類包和應(yīng)用啟動(dòng)器。sample目錄:附帶的輔助學(xué)習(xí)者學(xué)習(xí)的Java程序例子。src.zip:是源代碼壓縮文件。JDK目錄結(jié)構(gòu)為:在bin目錄下包含Java開(kāi)發(fā)工具,其中最常用的幾個(gè)如下:javac.exe:Java語(yǔ)言編譯器,將Java源代碼編譯轉(zhuǎn)換為字節(jié)碼文件(擴(kuò)展名為.class),也稱為類文件。java.exe:Java解釋器,它啟動(dòng)Java虛擬機(jī)(JVM),提供Java程序運(yùn)行環(huán)境。appletviewer.exe:Java小程序?yàn)g覽器,提供Java小應(yīng)用程序(applet)測(cè)試及運(yùn)行環(huán)境。javadoc.exe:幫助文檔生成器,建立關(guān)于類的信息的描述文檔。jar.exe:對(duì)類進(jìn)行打包的工具。在bin目錄下包含Java開(kāi)發(fā)工具,其中最常用的幾個(gè)如下:1.5.2集成開(kāi)發(fā)環(huán)境的安裝和使用

Eclipse是IBM推出的開(kāi)放源碼的通用開(kāi)發(fā)平臺(tái)。它支持包括Java在內(nèi)的多種開(kāi)發(fā)語(yǔ)言。Eclipse采用插件機(jī)制,使一種可擴(kuò)展的、可配置的集成開(kāi)發(fā)環(huán)境(IDE)。

MyEclipse本質(zhì)上是Eclipse插件。其企業(yè)級(jí)開(kāi)發(fā)平臺(tái)(MyEclipseEnterpriseWorkbench)是功能強(qiáng)大的JavaEE集成開(kāi)發(fā)環(huán)境,在其上可以進(jìn)行代碼編寫(xiě)、配置、調(diào)試、發(fā)布等工作,支持HTML、JavaScript、CSS、JSF、Spring、Struts、Hibernate等開(kāi)發(fā)。下面對(duì)MyEclipse的安裝配置、使用方法進(jìn)行概要介紹。1.5.2集成開(kāi)發(fā)環(huán)境的安裝和使用1.安裝與配置從MyEclipse官網(wǎng)()下載MyElipse企業(yè)級(jí)開(kāi)發(fā)平臺(tái)。在列表中選擇所用的平臺(tái)的安裝包下載,例如MyEclipse.6.0GA版的安裝包文件是MyEclipse10.5。下載后雙擊該文件即啟動(dòng)安裝向?qū)?,按提示選擇安裝路徑,其余選項(xiàng)可以按默認(rèn)進(jìn)行安裝。在此過(guò)程中會(huì)自動(dòng)搜索JDK進(jìn)行環(huán)境配置,或者使用自帶的JDK。1.安裝與配置

為了能夠在MyEclipse中管理服務(wù)器,需要對(duì)其進(jìn)行配置。具體配置過(guò)程如下:?jiǎn)?dòng)MyEclipse,選擇Window中的Preferences,在彈出的窗口中選擇MyEclipse→Servers→Tomcat→Tomcat6.x,然后進(jìn)入如圖1-2所示的配置窗口。選擇Tomcat的安裝目錄,然后選擇上面的Enable單選項(xiàng),最后單擊OK按鈕完成配置。然后配置JDK路徑。為了能夠在MyEclipse中管理服JavaEE開(kāi)發(fā)技術(shù)與案例教程第1章--Java課件2.使用方法⑴啟動(dòng)首次啟動(dòng)MyEclipse,選擇【開(kāi)始】→【程序】→MyEclipse6.0→MyEclipse6.0.1之后系統(tǒng)會(huì)彈出一個(gè)對(duì)話框,讓用戶來(lái)設(shè)置工作區(qū)。所謂工作區(qū)(workspace)是指用于存放源程序文件和配置文件的文件夾。選擇一個(gè)文件夾設(shè)置為默認(rèn)工作區(qū)之后,再次啟動(dòng)MyEclipse時(shí)就會(huì)直接使用該工作區(qū)并且裝入其中的程序。2.使用方法一個(gè)工作區(qū)中可以包含同一個(gè)企業(yè)級(jí)應(yīng)用的所有應(yīng)用程序(application),每個(gè)應(yīng)用程序?qū)?yīng)著一個(gè)項(xiàng)目(project),MyEclipse正是以項(xiàng)目為單位管理應(yīng)用程序的。一個(gè)工作區(qū)中可以包含同一個(gè)企業(yè)級(jí)應(yīng)用的所有應(yīng)用程序(appl⑵用戶界面MyEclipse的主界面如圖1-3所示。其中包括菜單欄、工具欄、視圖、編輯器和狀態(tài)欄等。菜單包括File(文件)、Edit(編輯)、Source(源代碼)、Refactor(重構(gòu))、Navigate(導(dǎo)航)、Search(搜索)、Project(項(xiàng)目)、MyEclipse、Run(運(yùn)行)、Window(窗口)和Help(幫助)。⑵用戶界面

主界面窗口劃分為不同的子窗口,稱為視圖(View)。若干視圖合為一個(gè)透視圖(Perspective)。在window菜單中有多個(gè)命令與視圖及透視圖有關(guān)。例如:showview、openperspective、customizeperspective、saveperspective、closeperspective等,有時(shí)候因?yàn)檫^(guò)多的操作改變了視圖形狀及大小而想要回到初始狀態(tài),則可以使用resetperspective命令恢復(fù)到默認(rèn)的透視圖狀態(tài)。主界面窗口劃分為不同的子窗口,稱為視圖(View)⑶應(yīng)用開(kāi)發(fā)在MyEclipse中進(jìn)行應(yīng)用開(kāi)發(fā)的步驟如下。①創(chuàng)建工作區(qū):若非首次啟動(dòng)MyEclipse,則可經(jīng)新建Web項(xiàng)目,并指定存儲(chǔ)位置和目錄,可創(chuàng)建一新的工作區(qū)。然后選擇File|SwitichWorkspace命令切換到該工作區(qū)。②創(chuàng)建項(xiàng)目:在默認(rèn)打開(kāi)的某工作區(qū)中創(chuàng)建新的項(xiàng)目,選擇File|New|Project,輸入項(xiàng)目名稱,存儲(chǔ)位置(location)勾選usedefaultlocation即可。⑶應(yīng)用開(kāi)發(fā)③創(chuàng)建應(yīng)用程序:選擇File|New菜單中列出的常用組件(class、interface、applet、servlet、HTML、JSP)之一,進(jìn)入相應(yīng)的窗口,編寫(xiě)組件代碼。④編譯:編寫(xiě)及保存的代碼可進(jìn)行編譯。默認(rèn)的編譯方式為即時(shí)編譯(JIT),也可以用project菜單的buildproject命令進(jìn)行字節(jié)碼編譯。⑤打包/發(fā)布應(yīng)用:選擇File|Export打包組件準(zhǔn)備發(fā)布。③創(chuàng)建應(yīng)用程序:選擇File|New菜單中列出的常用組件(c第1章JavaEE概述1.1JavaEE簡(jiǎn)介1.2JavaEE分層架構(gòu)1.3JavaEE技術(shù)規(guī)范1.4敏捷輕型框架1.5JavaEE開(kāi)發(fā)環(huán)境習(xí)題

第1章JavaEE概述1.1JavaEE簡(jiǎn)介1.1JavaEE簡(jiǎn)介1.1.1什么是JavaEEJavaEE是基于Java的解決方案,是Java平臺(tái)的企業(yè)版,是一套技術(shù)架構(gòu)。JavaEE的核心是一組技術(shù)規(guī)范與指南,它使開(kāi)發(fā)人員能夠開(kāi)發(fā)具有可移植性、安全性和可復(fù)用的企業(yè)級(jí)應(yīng)用。JavaEE良好定義和設(shè)計(jì)的體系結(jié)構(gòu)保證了開(kāi)發(fā)人員更多地將注意力集中于架構(gòu)設(shè)計(jì)和業(yè)務(wù)邏輯上。1.1JavaEE簡(jiǎn)介1.1.1什么是Java1.1.2JavaEE的新特性1、標(biāo)注(Annotation)是JavaEE5引入的一個(gè)新特性。標(biāo)注之于程序是一種元數(shù)據(jù),標(biāo)注這種元數(shù)據(jù)按照其作用可以分為三類:編寫(xiě)文檔、代碼分析、編譯檢查。用于編寫(xiě)文檔是通過(guò)代碼里的標(biāo)注元數(shù)據(jù)生成文檔,例如@Documented,用于定制javadoc不支持的文檔屬性,并在開(kāi)發(fā)中使用。用在代碼分析的標(biāo)注如@Deprecated,指出這是個(gè)不建議使用的方法。1.1.2JavaEE的新特性

引入標(biāo)注可以實(shí)現(xiàn)多種功能的簡(jiǎn)化,例如:(1)定義和使用WebService。(2)開(kāi)發(fā)EJB組件。(3)映射Java類到XML文檔。(4)映射Java類到數(shù)據(jù)庫(kù)。(5)依賴注入。(6)指定部署信息等。有了Annotation,在Web應(yīng)用開(kāi)發(fā)中直接在代碼中使用標(biāo)注就可以告知JavaEE服務(wù)器如何部署及運(yùn)行,而不必再編輯WEB-INF/web.xml文件了。引入標(biāo)注可以實(shí)現(xiàn)多種功能的簡(jiǎn)化,例如:2、EJB3EJB3是EJB2的升級(jí),不像EJB2是重量級(jí)框架,EJB3的持久化變更加簡(jiǎn)化,是輕量級(jí)的。它不再需要EJBhome接口,不再需要實(shí)現(xiàn)SessionBean接口,JDNIAPI也不再是必需的。EJB部署描述符變成可選的功能。此外,EJB3中還引入了攔截器功能。攔截器是AOP在EJB中的實(shí)現(xiàn),是可以對(duì)Bean的業(yè)務(wù)方法進(jìn)行攔截的組件。攔截器可以用于無(wú)狀態(tài)會(huì)話Bean、有狀態(tài)會(huì)話Bean和消息驅(qū)動(dòng)Bean。攔截器用來(lái)監(jiān)聽(tīng)程序的一個(gè)或者多個(gè)方法,它對(duì)方法調(diào)用提供了控制。2、EJB33、JPAJPA(JavaPersistenceAPI),即數(shù)據(jù)持久化API,它是一個(gè)輕量級(jí)的對(duì)象持久化模型,是JavaEE的又一新特性。Sun公司推出JPA規(guī)范目的在于簡(jiǎn)化現(xiàn)有JavaEE和JavaSE應(yīng)用的對(duì)象持久化工作,希望統(tǒng)一ORM技術(shù),因?yàn)樵贘PA出現(xiàn)之前,各種ORM框架之間的API差異很大,使用了某種ORM框架的系統(tǒng)會(huì)受制于該ORM的標(biāo)準(zhǔn)。JPA本質(zhì)上是一種ORM規(guī)范,并未提供ORM實(shí)現(xiàn),其具體實(shí)現(xiàn)由其他的廠商提供。程序員若要使用JPA,需要選擇JPA的實(shí)現(xiàn)框架,Hibernate3即是這樣一個(gè)實(shí)現(xiàn)了JPA的一個(gè)框架。3、JPA4、WebService支持

WebService是建立可互操作的分布式應(yīng)用程序的新平臺(tái),程序員可能使用COM或DCOM建立過(guò)基于組件的分布式應(yīng)用程序,或者使用CORBA、RMI等技術(shù)實(shí)現(xiàn)遠(yuǎn)程調(diào)用。WebService平臺(tái)也是這樣的一套標(biāo)準(zhǔn),而且它做的更好。它定義了應(yīng)用程序如何在Web上實(shí)現(xiàn)互操作。WebService平臺(tái)需要一套協(xié)議來(lái)實(shí)現(xiàn)分布式應(yīng)用程序的創(chuàng)建。4、WebService支持5、依賴注入所謂依賴注入(DependencyInjection)是指當(dāng)某個(gè)角色(可能是一個(gè)Java實(shí)例,調(diào)用者)需要另外一個(gè)角色(另外一個(gè)Java類的實(shí)例,被調(diào)用者)的協(xié)助時(shí),在傳統(tǒng)的程序設(shè)計(jì)過(guò)程中,通常是由調(diào)用者來(lái)創(chuàng)建被調(diào)用者的實(shí)例。在一些輕型框架如Spring中,創(chuàng)建被調(diào)用者的任務(wù)不再由調(diào)用者完成,而是由Spring容器完成,然后以某種方式注入給調(diào)用者,稱為依賴注入,也稱為控制反轉(zhuǎn)。通過(guò)依賴注入降低了代碼的耦合度,也使得資源訪問(wèn)變得更加容易。5、依賴注入6、泛型泛型(Generics)是程序設(shè)計(jì)語(yǔ)言的一種特性,支持泛型的程序設(shè)計(jì)語(yǔ)言允許程序員在編寫(xiě)代碼時(shí)定義一些可變部分,那些部分在使用前必須作出指明。各種程序設(shè)計(jì)語(yǔ)言和其編譯器、運(yùn)行環(huán)境對(duì)泛型的支持均不一樣。將類型參數(shù)化以達(dá)到代碼復(fù)用提高軟件開(kāi)發(fā)工作效率的一種數(shù)據(jù)類型。泛型主要是引入了類型參數(shù)這個(gè)概念。6、泛型JavaEE5通過(guò)引入泛型,使得集合元素類型參數(shù)化,避免了運(yùn)行時(shí)出現(xiàn)類型轉(zhuǎn)換錯(cuò)誤,因此不必要加入顯式強(qiáng)制類型轉(zhuǎn)換的操作了。下面的例子對(duì)此作了說(shuō)明:不使用泛型時(shí):ArrayListlist=newArrayList();list.add(0,newInteger(42));inttotal=((Integer)list.get(0)).inValue();JavaEE5通過(guò)引入泛型,使得集合元素類型參數(shù)化,避免使用了泛型后:ArrayList<Integer>list=newArrayList<Integer>();list.add(0,newInteger(42));inttotal=list.get(0).inValue();讀者可以體會(huì)這兩個(gè)例子之間的微妙差異,進(jìn)而理解用反型的好處。使用了泛型后:7、枚舉枚舉類型是JavaEE5開(kāi)始引入的類型,本質(zhì)上枚舉類型就是一個(gè)命名變量的列表。枚舉類型通過(guò)關(guān)鍵字enum來(lái)聲明。下面是一個(gè)枚舉的例子:publicenumWeek{Monday,

Tuesday,

Wednesday,

Thursday,7、枚舉Friday,

Saturday,

Sunday}對(duì)命名常量可以通過(guò)類似對(duì)象成員的方法或者通過(guò)方法values()、valueOf()、ordinal()、name()等方法進(jìn)行存取操作。下面的for循環(huán)將輸出枚舉的所有命名常量。for(Weekw:Week.values())System.out.println(w);Friday,8、增強(qiáng)的for循環(huán)

JavaEE5中的增強(qiáng)的for循環(huán)簡(jiǎn)化了數(shù)組和集合的遍歷操作,其語(yǔ)法更簡(jiǎn)單,可以防止下標(biāo)越界的問(wèn)題出現(xiàn),而且還可以避免由于強(qiáng)制類型轉(zhuǎn)換導(dǎo)致的錯(cuò)誤。下面是一個(gè)使用增強(qiáng)for循環(huán)對(duì)數(shù)組元素進(jìn)行遍歷的例子。

inta[]={1,2,3,4,5,6}; for(intnum:a)System.out.println(num);8、增強(qiáng)的for循環(huán)9、函數(shù)可變參數(shù)

JavaEE5之前,方法的參數(shù)個(gè)數(shù)是固定的。JavaEE5允許創(chuàng)建具有可變參數(shù)的方法,這使得某些操作變得更方便了。下面的程序例子可以說(shuō)明這一點(diǎn)。

publicclassVarArgument{ publicstaticvoidmain(Stringargs[]){ System.out.println(add(2,3)); System.out.println(add(2,3,4,5)); } publicstaticintadd(int…args){ intsum=0;for(inti=0;i<args.length;i++){sum+=args[i];}returnsum;}}9、函數(shù)可變參數(shù)10、靜態(tài)導(dǎo)入在JavaEE5之前的版本中,程序中使用靜態(tài)成員要在其前面加類名引導(dǎo)。JavaEE5引入靜態(tài)導(dǎo)入意味著不必再寫(xiě)類名,而是直接通過(guò)靜態(tài)成員的名字來(lái)訪問(wèn)它們。例如:

//靜態(tài)導(dǎo)入

importstaticjava.lang.System.*;importstaticjava.lang.Math.*;…//調(diào)用靜態(tài)成員

out.println(sqrt(6));//不再是Math.sqrt(6)10、靜態(tài)導(dǎo)入1.2JavaEE分層架構(gòu)1.2.1分層模式概述分層模式是常見(jiàn)的架構(gòu)模式。分層描述的是這樣一種架構(gòu)設(shè)計(jì)過(guò)程:從最低級(jí)別的抽象開(kāi)始,稱為第1層。在此基礎(chǔ)上逐步向上進(jìn)行抽象。直至達(dá)到功能的最高級(jí)別。分層模式的特點(diǎn)包括:伸縮性:伸縮性是指應(yīng)用程序能支持更多用戶的能力。應(yīng)用的層數(shù)少,可以增加資源(如CPU、內(nèi)存等)的機(jī)會(huì)就少。反之,則可以把每層分布在不同的機(jī)器上??删S護(hù)性:指的是發(fā)生需求變化時(shí),只需修改軟件的局部,不必改動(dòng)其他部分的代碼。1.2JavaEE分層架構(gòu)1.2.1分層模式概述可擴(kuò)展性:可擴(kuò)展性是指在現(xiàn)有系統(tǒng)增加新功能的能力。分層的結(jié)構(gòu)中可擴(kuò)展性較好,這是由于可以每個(gè)層中插入功能擴(kuò)展點(diǎn),而不改變?cè)械恼w框架。可重用性:可重用性指的是同一程序代碼可以滿足多種需求的能力。例如,業(yè)務(wù)邏輯層可以被多種表示層共享,即業(yè)務(wù)邏輯層的代碼被重用了??晒芾硇裕褐腹芾硐到y(tǒng)的難易程度??蓴U(kuò)展性:可擴(kuò)展性是指在現(xiàn)有系統(tǒng)增加新功能的能力。分層的結(jié)構(gòu)1.2.2JavaEE的結(jié)構(gòu)JavaEE使用多層分布式的應(yīng)用模型,該模型通過(guò)四層來(lái)實(shí)現(xiàn),分別為:⑴客戶層:運(yùn)行在客戶計(jì)算機(jī)上的組件。⑵Web層:運(yùn)行在JavaEE服務(wù)器上的組件。⑶業(yè)務(wù)層:同樣是運(yùn)行在JavaEE服務(wù)器上的組件。⑷企業(yè)信息系統(tǒng)層(EIS):是指運(yùn)行在EIS服務(wù)器上的軟件系統(tǒng)。有時(shí)我們把客戶層和Web層視為一個(gè)層,這樣就可以將以上結(jié)構(gòu)按三層來(lái)劃分,如下圖所示。1.2.2JavaEE的結(jié)構(gòu)JavaEE開(kāi)發(fā)技術(shù)與案例教程第1章--Java課件

在這個(gè)分層體系中,客戶層組件可以使基于Web方式的,也可以是基于傳統(tǒng)方式的。Web層組件可以使JSP頁(yè)面或者Servlet。對(duì)于業(yè)務(wù)邏輯層組件,其代碼是處理如銀行、零售等具體行業(yè)或領(lǐng)域的業(yè)務(wù)需要,由運(yùn)行在業(yè)務(wù)層上的EnterpriseBean進(jìn)行處理。企業(yè)信息系統(tǒng)層處理企業(yè)信息系統(tǒng)軟件,包括企業(yè)基礎(chǔ)建設(shè)系統(tǒng),例如企業(yè)資源計(jì)劃(ERP)、大型機(jī)事務(wù)處理、數(shù)據(jù)庫(kù)系統(tǒng)和其他遺留系統(tǒng)。在這個(gè)分層體系中,客戶層組件可以使基1.3JavaEE技術(shù)規(guī)范

1.JDBC(JavaDatabaseConnectivity)JDBCAPI為訪問(wèn)不同的數(shù)據(jù)庫(kù)提供了一種統(tǒng)一的機(jī)制,像ODBC一樣,JDBC使操縱數(shù)據(jù)庫(kù)的細(xì)節(jié)對(duì)開(kāi)發(fā)者透明,另外,JDBC對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)也具有平臺(tái)無(wú)關(guān)性。2.JNDI(JavaNameandDirectoryInterface)名字和目錄服務(wù),為應(yīng)用提供一致的模型來(lái)訪問(wèn)企業(yè)級(jí)資源,如DNS和LDAP、本地文件系統(tǒng)或應(yīng)用服務(wù)器中的對(duì)象。1.3JavaEE技術(shù)規(guī)范

1.JDBC(JavaD

3.EJB(Enterprise

JavBean)企業(yè)Java組件,提供一個(gè)框架來(lái)描述分布式商務(wù)邏輯,開(kāi)發(fā)具有可伸縮性和復(fù)雜的企業(yè)級(jí)應(yīng)用。EJB規(guī)范定義了組件何時(shí)如何與它們的容器進(jìn)行交互。容器負(fù)責(zé)提供公用的服務(wù),如目錄、事務(wù)管理、安全性等。需要說(shuō)明的是,EJB并不是實(shí)現(xiàn)JavaEE企業(yè)應(yīng)用的惟一渠道,它的意義在于它是專為分布式大型企業(yè)應(yīng)用而設(shè)計(jì),用它編寫(xiě)的程序具有良好的可擴(kuò)展性和安全性。3.EJB(EnterpriseJav4.RMI(RemoteMethodInvoke)遠(yuǎn)程方法調(diào)用,顧名思義,它用于調(diào)用遠(yuǎn)程對(duì)象的方法。它使用了序列化方式在客戶端和服務(wù)器端傳遞數(shù)據(jù)。5.JavaIDL/CORBA(JavaInterfaceDefinitionLanguage/CommonObjectRequestBrokerArchitecture)

Java接口定義語(yǔ)言/公用對(duì)象請(qǐng)求代理結(jié)構(gòu)。為Java平臺(tái)添加了CORBA(CommonObjectRequestBrokerArchitecture,公用對(duì)象請(qǐng)求代理體系結(jié)構(gòu))功能,從而可提供基于標(biāo)準(zhǔn)的互操作性和連接性。4.RMI(RemoteMethodInvoke)JavaIDL使分布式、支持Web的Java應(yīng)用程序可利用ObjectManagementGroup定義的行業(yè)標(biāo)準(zhǔn)OMGIDL(ObjectManagementGroupInterfaceDefinitionLanguage,對(duì)象管理組接口定義語(yǔ)言)及IIOP(InternetInter-ORBProtocol,Internet對(duì)象請(qǐng)求代理間協(xié)議)來(lái)透明地調(diào)用遠(yuǎn)程網(wǎng)絡(luò)服務(wù)。運(yùn)行時(shí)組件包括一個(gè)全兼容的JavaORB,用于通過(guò)IIOP通訊進(jìn)行分布式計(jì)算。JavaIDL使分布式、支持Web的Java應(yīng)用6.JSP(JavaServerPages)JSP頁(yè)面由HTML代碼和嵌入其中的Java代碼組成。服務(wù)器在頁(yè)面被客戶端請(qǐng)求以后,對(duì)這些Java代碼進(jìn)行處理,然后將生成的HTML頁(yè)面返回給客戶端的瀏覽器。7.JavaServletServlet是運(yùn)行在服務(wù)器端的Java程序,它擴(kuò)展了Web服務(wù)器的功能。作為一種服務(wù)器端的應(yīng)用,當(dāng)被請(qǐng)求時(shí)開(kāi)始執(zhí)行。Servlet提供的功能和JSP一致,只是二者的構(gòu)成不同。JSP通常是HTML代碼中嵌入Java代碼,而Servlet全部由Java寫(xiě)成并且生成HTML。6.JSP(JavaServerPages)8.XML(eXtensibleMarkupLanguage)擴(kuò)展的標(biāo)記語(yǔ)言,用來(lái)定義其他標(biāo)記語(yǔ)言的語(yǔ)言。作為數(shù)據(jù)交換和數(shù)據(jù)共享的語(yǔ)言,適用于很多的應(yīng)用領(lǐng)域。9.JMS(JavaMessageService)

Java消息服務(wù),是Java平臺(tái)上用于建立面向消息中間件(MOM)的技術(shù)規(guī)范,它便于消息系統(tǒng)中的Java應(yīng)用程序進(jìn)行消息交換,并且通過(guò)提供標(biāo)準(zhǔn)的產(chǎn)生、發(fā)送、接收消息的接口簡(jiǎn)化企業(yè)應(yīng)用的開(kāi)發(fā)。8.XML(eXtensibleMarkupLangua

許多廠商目前都支持JMS,包括IBM的MQSeries、BEA的WeblogicJMSservice等等。使用JMS能夠通過(guò)消息收發(fā)服務(wù)(有時(shí)稱為消息中介程序或路由器)從一個(gè)JMS客戶機(jī)向另一個(gè)JMS客戶機(jī)發(fā)送消息。消息是JMS中的一種類型對(duì)象,由兩部分組成:報(bào)頭和消息主體。報(bào)頭由路由信息以及有關(guān)該消息的元數(shù)據(jù)組成。消息主體則攜帶著應(yīng)用程序的數(shù)據(jù)或有效負(fù)載。許多廠商目前都支持JMS,包括I10.JTA(JavaTransactionArchitecture)

Java事務(wù)體系結(jié)構(gòu),定義了一組標(biāo)準(zhǔn)的API,用于訪問(wèn)各種事務(wù)監(jiān)控。11.JTS(JavaTransactionService)

Java事務(wù)服務(wù),是CORBAOTS(ObjectTransactionService)事務(wù)監(jiān)控的基本實(shí)現(xiàn)。10.JTA(JavaTransactionArchit12.JavaMail

是用于存取郵件服務(wù)器的API,它提供了一套郵件服務(wù)器的抽象類。它不僅支持SMTP服務(wù)器,也支持IMAP服務(wù)器。13.JAF(JavaBeansActivationFramework)

JavaMail利用JAF來(lái)處理MIME編碼的郵件附件。MIME的字節(jié)流可以被轉(zhuǎn)換成Java對(duì)象,或者相反。12.JavaMail1.4敏捷輕型框架

框架,即framework。其實(shí)就是某種應(yīng)用的半成品,就是一組組件,供你選用完成你自己的系統(tǒng)。這些組件是把不同的應(yīng)用中有共性的任務(wù)抽取出來(lái)加以實(shí)現(xiàn),做成程序供人使用。簡(jiǎn)單說(shuō)就是使用別人搭好的舞臺(tái),你來(lái)做表演。而且,框架一般是成熟的,不斷升級(jí)的軟件??蚣艿母拍钭钤缙鹪从赟malltalk環(huán)境,其中最著名的框架是Smalltalk80的用戶界面框架MVC(Model-View-Controller)。1.4敏捷輕型框架框架,即framewor

框架可分為重型框架和輕型框架。一般稱EJB這樣的框架為重型框架,因其軟件架構(gòu)較復(fù)雜,啟動(dòng)加載時(shí)間較長(zhǎng),系統(tǒng)相對(duì)昂貴,需啟動(dòng)應(yīng)用服務(wù)器加載EJB組件。而輕型框架則不需要昂貴的設(shè)備和軟件費(fèi)用,且系統(tǒng)搭建容易,服務(wù)器啟動(dòng)快捷,適合于中小型企業(yè)或項(xiàng)目。目前,使用輕型框架開(kāi)發(fā)項(xiàng)目非常普遍,常用的輕型框架包括Hibernate、Struts、Spring、WebWork、Tapestry、JSF等??蚣芸煞譃橹匦涂蚣芎洼p型框架。一般1.4.1輕型框架簡(jiǎn)介

1.使用輕型框架的好處軟件技術(shù)發(fā)展至今,面臨各類復(fù)雜的應(yīng)用系統(tǒng)開(kāi)發(fā)。軟件系統(tǒng)開(kāi)發(fā)任務(wù)涉及到的知識(shí)更綜合、內(nèi)容更豐富、問(wèn)題更繁多。如何能使程序開(kāi)發(fā)效率高、工作效果好,這是輕型框架設(shè)計(jì)的目的所在。框架可以完成開(kāi)發(fā)中的一些基礎(chǔ)性工作,開(kāi)發(fā)人員可以集中精力完成系統(tǒng)的業(yè)務(wù)邏輯設(shè)計(jì)。總體而言,適用輕型框架的好處有以下幾方面:⑴減少重復(fù)開(kāi)發(fā)工作量、縮短開(kāi)發(fā)周期、降低開(kāi)發(fā)成本。⑵使程序設(shè)計(jì)總體上更為規(guī)范、程序運(yùn)行更穩(wěn)定。⑶軟件開(kāi)發(fā)更能適應(yīng)需求變化,且運(yùn)行維護(hù)費(fèi)用也較低。1.4.1輕型框架簡(jiǎn)介2.目前流行的框架組合開(kāi)發(fā)人員可以根據(jù)自己對(duì)框架的熟悉程度,在充分了解不同框架的性能,根據(jù)其滿足系統(tǒng)功能和性能要求的前提下,自由地選擇不同框架的搭配使用。下面是一些常見(jiàn)的框架組合。⑴JSP+Servlet+JavaBean+JDBC⑵Struts+MySQL+JDBC⑶Hibernate+JDBC+JSP⑷Struts+Hibernate⑸Hibernate+Spring2.目前流行的框架組合⑹Spring+Struts+JDBC⑺Struts+Hibernate+Spring⑻Struts+EJB⑼JSF+Hibernate⑽Tapestry+Hibernate+Spring⑾Freemaker+Struts+Hibernate+Spring⑿JSP+EJB+Oracle⑹Spring+Struts+JDBC1.4.2Hibernate框架簡(jiǎn)介

Hibernate是一個(gè)面向Java環(huán)境的對(duì)象/關(guān)系映射工具,即ORM(Object-RelationMapping)。它的作用是封裝了JDBC的功能,即隱藏了數(shù)據(jù)訪問(wèn)的細(xì)節(jié),負(fù)責(zé)Java對(duì)象的持久化。Hibernate的工作原理是通過(guò)文件把值對(duì)象和數(shù)據(jù)庫(kù)表之間建立起一個(gè)映射關(guān)系,這樣,我們?cè)趹?yīng)用程序中只需要借助Hibernate所提供的一些基本類通過(guò)操作這些值對(duì)象即可達(dá)到訪問(wèn)數(shù)據(jù)庫(kù)的目的。這就使得Java程序員使用其所熟悉的面向?qū)ο蠓妒竭M(jìn)行開(kāi)發(fā)。1.4.2Hibernate框架簡(jiǎn)介

了解了Hibernate,我們需要進(jìn)一步了解JPA。前面已經(jīng)介紹了JPA即Java持久化API(JavaPersistenceAPI)。由于ORM框架產(chǎn)品多,且各具特點(diǎn),互不相通,這就給開(kāi)發(fā)者一個(gè)又一個(gè)難題,也成了應(yīng)用移植的障礙。JPA是JCP組織發(fā)布的JavaEE標(biāo)準(zhǔn)之一,任何符合JPA標(biāo)準(zhǔn)的框架都遵循同樣的架構(gòu),提供相同的API,這就保證了基于JPA開(kāi)發(fā)的企業(yè)應(yīng)用經(jīng)過(guò)小的修改即能夠在不同的JPA框架下運(yùn)行。就是說(shuō),JPA是一個(gè)ORM模型和標(biāo)準(zhǔn),而不是一個(gè)實(shí)際的框架。了解了Hibernate,我們需要進(jìn)1.4.3strutsStruts是一種基于JavaEE平臺(tái)的MVC框架。它主要是用Servlet和JSP技術(shù)實(shí)現(xiàn)的。它使開(kāi)發(fā)過(guò)程各個(gè)模塊化分清晰易掌控。利用taglib獲得可重用的代碼;利用ActionServlet配合struts-config.xml實(shí)現(xiàn)對(duì)整個(gè)系統(tǒng)進(jìn)行導(dǎo)航式建構(gòu),開(kāi)發(fā)人員易于對(duì)系統(tǒng)的整體把握;用戶界面、業(yè)務(wù)邏輯和控制的分離,帶來(lái)系統(tǒng)結(jié)構(gòu)更清晰,更容易分工協(xié)作,且系統(tǒng)具有良好的可擴(kuò)展性和易維護(hù)性。1.4.3struts1.4.4SpringSpring是一個(gè)應(yīng)用于JavaEE領(lǐng)域的輕量級(jí)的、功能強(qiáng)大的、靈活的應(yīng)用程序框架??梢蕴峁┛焖俚腏avaWeb應(yīng)用程序開(kāi)發(fā)。Spring項(xiàng)目是個(gè)非?;钴S的開(kāi)源項(xiàng)目,因此它提供了眾多優(yōu)秀項(xiàng)目的集成,例如對(duì)MVC框架和視圖技術(shù)的集成、與開(kāi)源持久層ORM的集成、與動(dòng)態(tài)語(yǔ)言的集成以及與其他企業(yè)級(jí)應(yīng)用的集成。1.4.4SpringSpring提供了一個(gè)完整的MVC框架,為模型、視圖、控制器之間進(jìn)行了非常清晰的劃分,各部分耦合度極低。視圖不再要求必須使用JSP,而可以選擇Velocity、Freemaker或者其他視圖技術(shù)。

Spring支持依賴注入(DI)和面向方面編程技術(shù)(AOP),更容易實(shí)現(xiàn)復(fù)雜的需求。支持事務(wù)管理,可以很容易地實(shí)現(xiàn)支持多個(gè)事務(wù)資源。支持JMS和JCA等技術(shù),能方便地訪問(wèn)EJB。Spring提供了一個(gè)完整的MVC1.4.5JSFJSF(JavaServerFaces)是一種以組件為中心的用于構(gòu)建Web應(yīng)用程序的輕型框架,它主要可用于開(kāi)發(fā)應(yīng)用程序的用戶界面。一般而言,用戶界面設(shè)計(jì)是一件很費(fèi)時(shí)的過(guò)程,JSF以組件為中心的結(jié)構(gòu)可以極大地簡(jiǎn)化界面的設(shè)計(jì)工作。它為開(kāi)發(fā)人員提供了標(biāo)準(zhǔn)的編程接口、豐富的UI組件庫(kù)以及事件驅(qū)動(dòng)模型等完整的應(yīng)用框架,通過(guò)JSF,可以在頁(yè)面中輕松地使用Web組件,捕獲用戶行為產(chǎn)生的事件,執(zhí)行驗(yàn)證,建立頁(yè)面導(dǎo)航等任務(wù)。1.4.5JSFJSF的應(yīng)用架構(gòu)完全實(shí)現(xiàn)了MVC模式。用戶界面代碼(視圖)與處理邏輯(模型)相分離,這使得JSF程序易于管理,而所有與應(yīng)用程序的用戶交互均由一個(gè)前端(FacesServlet)(控制器)來(lái)處理。JSF的應(yīng)用架構(gòu)完全實(shí)現(xiàn)了MVC模1.5JavaEE開(kāi)發(fā)環(huán)境1.5.1JDK的下載和安裝

JDK(JavaDevelopmentKit,Java開(kāi)發(fā)工具包)是JavaEE平臺(tái)的應(yīng)用程序的基礎(chǔ),利用它構(gòu)建組件、開(kāi)發(fā)應(yīng)用程序。JDK是開(kāi)源免費(fèi)的工具,可以到Sun公司官網(wǎng)下載。網(wǎng)址為/javase/downloads/index.jsp。例如下載jdk-6u21-windows-i586.exe文件后,可以直接雙擊運(yùn)行該文件進(jìn)行安裝。按安裝過(guò)程提示選擇好安裝路徑及安裝組件即可。。1.5JavaEE開(kāi)發(fā)環(huán)境1.5.1JDK的下載

安裝后需要設(shè)置環(huán)境變量JAVA_HOME、PATH及CLASSPATH。配置環(huán)境變量的目的是為了設(shè)置Java程序的編譯和運(yùn)行有關(guān)的環(huán)境信息。其中JAVA_HOME設(shè)置為JDK的安裝目錄。PATH設(shè)置為JDK的程序(即exe文件)目錄。CLASSPATH則用于設(shè)置JDK類庫(kù)搜索路徑。

溫馨提示

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