




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第1章JavaEE概述1.1JavaEE簡介1.2JavaEE分層架構1.3JavaEE技術規(guī)范1.4敏捷輕型框架1.5JavaEE開發(fā)環(huán)境習題
第1章JavaEE概述1.1JavaEE簡介1.1JavaEE簡介1.1.1什么是JavaEEJavaEE是基于Java的解決方案,是Java平臺的企業(yè)版,是一套技術架構。JavaEE的核心是一組技術規(guī)范與指南,它使開發(fā)人員能夠開發(fā)具有可移植性、安全性和可復用的企業(yè)級應用。JavaEE良好定義和設計的體系結構保證了開發(fā)人員更多地將注意力集中于架構設計和業(yè)務邏輯上。1.1JavaEE簡介1.1.1什么是Java1.1.2JavaEE的新特性1、標注(Annotation)是JavaEE5引入的一個新特性。標注之于程序是一種元數據,標注這種元數據按照其作用可以分為三類:編寫文檔、代碼分析、編譯檢查。用于編寫文檔是通過代碼里的標注元數據生成文檔,例如@Documented,用于定制javadoc不支持的文檔屬性,并在開發(fā)中使用。用在代碼分析的標注如@Deprecated,指出這是個不建議使用的方法。1.1.2JavaEE的新特性
引入標注可以實現多種功能的簡化,例如:(1)定義和使用WebService。(2)開發(fā)EJB組件。(3)映射Java類到XML文檔。(4)映射Java類到數據庫。(5)依賴注入。(6)指定部署信息等。有了Annotation,在Web應用開發(fā)中直接在代碼中使用標注就可以告知JavaEE服務器如何部署及運行,而不必再編輯WEB-INF/web.xml文件了。引入標注可以實現多種功能的簡化,例如:2、EJB3EJB3是EJB2的升級,不像EJB2是重量級框架,EJB3的持久化變更加簡化,是輕量級的。它不再需要EJBhome接口,不再需要實現SessionBean接口,JDNIAPI也不再是必需的。EJB部署描述符變成可選的功能。此外,EJB3中還引入了攔截器功能。攔截器是AOP在EJB中的實現,是可以對Bean的業(yè)務方法進行攔截的組件。攔截器可以用于無狀態(tài)會話Bean、有狀態(tài)會話Bean和消息驅動Bean。攔截器用來監(jiān)聽程序的一個或者多個方法,它對方法調用提供了控制。2、EJB33、JPAJPA(JavaPersistenceAPI),即數據持久化API,它是一個輕量級的對象持久化模型,是JavaEE的又一新特性。Sun公司推出JPA規(guī)范目的在于簡化現有JavaEE和JavaSE應用的對象持久化工作,希望統(tǒng)一ORM技術,因為在JPA出現之前,各種ORM框架之間的API差異很大,使用了某種ORM框架的系統(tǒng)會受制于該ORM的標準。JPA本質上是一種ORM規(guī)范,并未提供ORM實現,其具體實現由其他的廠商提供。程序員若要使用JPA,需要選擇JPA的實現框架,Hibernate3即是這樣一個實現了JPA的一個框架。3、JPA4、WebService支持
WebService是建立可互操作的分布式應用程序的新平臺,程序員可能使用COM或DCOM建立過基于組件的分布式應用程序,或者使用CORBA、RMI等技術實現遠程調用。WebService平臺也是這樣的一套標準,而且它做的更好。它定義了應用程序如何在Web上實現互操作。WebService平臺需要一套協(xié)議來實現分布式應用程序的創(chuàng)建。4、WebService支持5、依賴注入所謂依賴注入(DependencyInjection)是指當某個角色(可能是一個Java實例,調用者)需要另外一個角色(另外一個Java類的實例,被調用者)的協(xié)助時,在傳統(tǒng)的程序設計過程中,通常是由調用者來創(chuàng)建被調用者的實例。在一些輕型框架如Spring中,創(chuàng)建被調用者的任務不再由調用者完成,而是由Spring容器完成,然后以某種方式注入給調用者,稱為依賴注入,也稱為控制反轉。通過依賴注入降低了代碼的耦合度,也使得資源訪問變得更加容易。5、依賴注入6、泛型泛型(Generics)是程序設計語言的一種特性,支持泛型的程序設計語言允許程序員在編寫代碼時定義一些可變部分,那些部分在使用前必須作出指明。各種程序設計語言和其編譯器、運行環(huán)境對泛型的支持均不一樣。將類型參數化以達到代碼復用提高軟件開發(fā)工作效率的一種數據類型。泛型主要是引入了類型參數這個概念。6、泛型JavaEE5通過引入泛型,使得集合元素類型參數化,避免了運行時出現類型轉換錯誤,因此不必要加入顯式強制類型轉換的操作了。下面的例子對此作了說明:不使用泛型時:ArrayListlist=newArrayList();list.add(0,newInteger(42));inttotal=((Integer)list.get(0)).inValue();JavaEE5通過引入泛型,使得集合元素類型參數化,避免使用了泛型后:ArrayList<Integer>list=newArrayList<Integer>();list.add(0,newInteger(42));inttotal=list.get(0).inValue();讀者可以體會這兩個例子之間的微妙差異,進而理解用反型的好處。使用了泛型后:7、枚舉枚舉類型是JavaEE5開始引入的類型,本質上枚舉類型就是一個命名變量的列表。枚舉類型通過關鍵字enum來聲明。下面是一個枚舉的例子:publicenumWeek{Monday,
Tuesday,
Wednesday,
Thursday,7、枚舉Friday,
Saturday,
Sunday}對命名常量可以通過類似對象成員的方法或者通過方法values()、valueOf()、ordinal()、name()等方法進行存取操作。下面的for循環(huán)將輸出枚舉的所有命名常量。for(Weekw:Week.values())System.out.println(w);Friday,8、增強的for循環(huán)
JavaEE5中的增強的for循環(huán)簡化了數組和集合的遍歷操作,其語法更簡單,可以防止下標越界的問題出現,而且還可以避免由于強制類型轉換導致的錯誤。下面是一個使用增強for循環(huán)對數組元素進行遍歷的例子。
inta[]={1,2,3,4,5,6}; for(intnum:a)System.out.println(num);8、增強的for循環(huán)9、函數可變參數
JavaEE5之前,方法的參數個數是固定的。JavaEE5允許創(chuàng)建具有可變參數的方法,這使得某些操作變得更方便了。下面的程序例子可以說明這一點。
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、函數可變參數10、靜態(tài)導入在JavaEE5之前的版本中,程序中使用靜態(tài)成員要在其前面加類名引導。JavaEE5引入靜態(tài)導入意味著不必再寫類名,而是直接通過靜態(tài)成員的名字來訪問它們。例如:
//靜態(tài)導入
importstaticjava.lang.System.*;importstaticjava.lang.Math.*;…//調用靜態(tài)成員
out.println(sqrt(6));//不再是Math.sqrt(6)10、靜態(tài)導入1.2JavaEE分層架構1.2.1分層模式概述分層模式是常見的架構模式。分層描述的是這樣一種架構設計過程:從最低級別的抽象開始,稱為第1層。在此基礎上逐步向上進行抽象。直至達到功能的最高級別。分層模式的特點包括:伸縮性:伸縮性是指應用程序能支持更多用戶的能力。應用的層數少,可以增加資源(如CPU、內存等)的機會就少。反之,則可以把每層分布在不同的機器上??删S護性:指的是發(fā)生需求變化時,只需修改軟件的局部,不必改動其他部分的代碼。1.2JavaEE分層架構1.2.1分層模式概述可擴展性:可擴展性是指在現有系統(tǒng)增加新功能的能力。分層的結構中可擴展性較好,這是由于可以每個層中插入功能擴展點,而不改變原有的整體框架??芍赜眯裕嚎芍赜眯灾傅氖峭怀绦虼a可以滿足多種需求的能力。例如,業(yè)務邏輯層可以被多種表示層共享,即業(yè)務邏輯層的代碼被重用了??晒芾硇裕褐腹芾硐到y(tǒng)的難易程度。可擴展性:可擴展性是指在現有系統(tǒng)增加新功能的能力。分層的結構1.2.2JavaEE的結構JavaEE使用多層分布式的應用模型,該模型通過四層來實現,分別為:⑴客戶層:運行在客戶計算機上的組件。⑵Web層:運行在JavaEE服務器上的組件。⑶業(yè)務層:同樣是運行在JavaEE服務器上的組件。⑷企業(yè)信息系統(tǒng)層(EIS):是指運行在EIS服務器上的軟件系統(tǒng)。有時我們把客戶層和Web層視為一個層,這樣就可以將以上結構按三層來劃分,如下圖所示。1.2.2JavaEE的結構JavaEE開發(fā)技術與案例教程第1章--Java課件
在這個分層體系中,客戶層組件可以使基于Web方式的,也可以是基于傳統(tǒng)方式的。Web層組件可以使JSP頁面或者Servlet。對于業(yè)務邏輯層組件,其代碼是處理如銀行、零售等具體行業(yè)或領域的業(yè)務需要,由運行在業(yè)務層上的EnterpriseBean進行處理。企業(yè)信息系統(tǒng)層處理企業(yè)信息系統(tǒng)軟件,包括企業(yè)基礎建設系統(tǒng),例如企業(yè)資源計劃(ERP)、大型機事務處理、數據庫系統(tǒng)和其他遺留系統(tǒng)。在這個分層體系中,客戶層組件可以使基1.3JavaEE技術規(guī)范
1.JDBC(JavaDatabaseConnectivity)JDBCAPI為訪問不同的數據庫提供了一種統(tǒng)一的機制,像ODBC一樣,JDBC使操縱數據庫的細節(jié)對開發(fā)者透明,另外,JDBC對數據庫的訪問也具有平臺無關性。2.JNDI(JavaNameandDirectoryInterface)名字和目錄服務,為應用提供一致的模型來訪問企業(yè)級資源,如DNS和LDAP、本地文件系統(tǒng)或應用服務器中的對象。1.3JavaEE技術規(guī)范
1.JDBC(JavaD
3.EJB(Enterprise
JavBean)企業(yè)Java組件,提供一個框架來描述分布式商務邏輯,開發(fā)具有可伸縮性和復雜的企業(yè)級應用。EJB規(guī)范定義了組件何時如何與它們的容器進行交互。容器負責提供公用的服務,如目錄、事務管理、安全性等。需要說明的是,EJB并不是實現JavaEE企業(yè)應用的惟一渠道,它的意義在于它是專為分布式大型企業(yè)應用而設計,用它編寫的程序具有良好的可擴展性和安全性。3.EJB(EnterpriseJav4.RMI(RemoteMethodInvoke)遠程方法調用,顧名思義,它用于調用遠程對象的方法。它使用了序列化方式在客戶端和服務器端傳遞數據。5.JavaIDL/CORBA(JavaInterfaceDefinitionLanguage/CommonObjectRequestBrokerArchitecture)
Java接口定義語言/公用對象請求代理結構。為Java平臺添加了CORBA(CommonObjectRequestBrokerArchitecture,公用對象請求代理體系結構)功能,從而可提供基于標準的互操作性和連接性。4.RMI(RemoteMethodInvoke)JavaIDL使分布式、支持Web的Java應用程序可利用ObjectManagementGroup定義的行業(yè)標準OMGIDL(ObjectManagementGroupInterfaceDefinitionLanguage,對象管理組接口定義語言)及IIOP(InternetInter-ORBProtocol,Internet對象請求代理間協(xié)議)來透明地調用遠程網絡服務。運行時組件包括一個全兼容的JavaORB,用于通過IIOP通訊進行分布式計算。JavaIDL使分布式、支持Web的Java應用6.JSP(JavaServerPages)JSP頁面由HTML代碼和嵌入其中的Java代碼組成。服務器在頁面被客戶端請求以后,對這些Java代碼進行處理,然后將生成的HTML頁面返回給客戶端的瀏覽器。7.JavaServletServlet是運行在服務器端的Java程序,它擴展了Web服務器的功能。作為一種服務器端的應用,當被請求時開始執(zhí)行。Servlet提供的功能和JSP一致,只是二者的構成不同。JSP通常是HTML代碼中嵌入Java代碼,而Servlet全部由Java寫成并且生成HTML。6.JSP(JavaServerPages)8.XML(eXtensibleMarkupLanguage)擴展的標記語言,用來定義其他標記語言的語言。作為數據交換和數據共享的語言,適用于很多的應用領域。9.JMS(JavaMessageService)
Java消息服務,是Java平臺上用于建立面向消息中間件(MOM)的技術規(guī)范,它便于消息系統(tǒng)中的Java應用程序進行消息交換,并且通過提供標準的產生、發(fā)送、接收消息的接口簡化企業(yè)應用的開發(fā)。8.XML(eXtensibleMarkupLangua
許多廠商目前都支持JMS,包括IBM的MQSeries、BEA的WeblogicJMSservice等等。使用JMS能夠通過消息收發(fā)服務(有時稱為消息中介程序或路由器)從一個JMS客戶機向另一個JMS客戶機發(fā)送消息。消息是JMS中的一種類型對象,由兩部分組成:報頭和消息主體。報頭由路由信息以及有關該消息的元數據組成。消息主體則攜帶著應用程序的數據或有效負載。許多廠商目前都支持JMS,包括I10.JTA(JavaTransactionArchitecture)
Java事務體系結構,定義了一組標準的API,用于訪問各種事務監(jiān)控。11.JTS(JavaTransactionService)
Java事務服務,是CORBAOTS(ObjectTransactionService)事務監(jiān)控的基本實現。10.JTA(JavaTransactionArchit12.JavaMail
是用于存取郵件服務器的API,它提供了一套郵件服務器的抽象類。它不僅支持SMTP服務器,也支持IMAP服務器。13.JAF(JavaBeansActivationFramework)
JavaMail利用JAF來處理MIME編碼的郵件附件。MIME的字節(jié)流可以被轉換成Java對象,或者相反。12.JavaMail1.4敏捷輕型框架
框架,即framework。其實就是某種應用的半成品,就是一組組件,供你選用完成你自己的系統(tǒng)。這些組件是把不同的應用中有共性的任務抽取出來加以實現,做成程序供人使用。簡單說就是使用別人搭好的舞臺,你來做表演。而且,框架一般是成熟的,不斷升級的軟件??蚣艿母拍钭钤缙鹪从赟malltalk環(huán)境,其中最著名的框架是Smalltalk80的用戶界面框架MVC(Model-View-Controller)。1.4敏捷輕型框架框架,即framewor
框架可分為重型框架和輕型框架。一般稱EJB這樣的框架為重型框架,因其軟件架構較復雜,啟動加載時間較長,系統(tǒng)相對昂貴,需啟動應用服務器加載EJB組件。而輕型框架則不需要昂貴的設備和軟件費用,且系統(tǒng)搭建容易,服務器啟動快捷,適合于中小型企業(yè)或項目。目前,使用輕型框架開發(fā)項目非常普遍,常用的輕型框架包括Hibernate、Struts、Spring、WebWork、Tapestry、JSF等。框架可分為重型框架和輕型框架。一般1.4.1輕型框架簡介
1.使用輕型框架的好處軟件技術發(fā)展至今,面臨各類復雜的應用系統(tǒng)開發(fā)。軟件系統(tǒng)開發(fā)任務涉及到的知識更綜合、內容更豐富、問題更繁多。如何能使程序開發(fā)效率高、工作效果好,這是輕型框架設計的目的所在??蚣芸梢酝瓿砷_發(fā)中的一些基礎性工作,開發(fā)人員可以集中精力完成系統(tǒng)的業(yè)務邏輯設計??傮w而言,適用輕型框架的好處有以下幾方面:⑴減少重復開發(fā)工作量、縮短開發(fā)周期、降低開發(fā)成本。⑵使程序設計總體上更為規(guī)范、程序運行更穩(wěn)定。⑶軟件開發(fā)更能適應需求變化,且運行維護費用也較低。1.4.1輕型框架簡介2.目前流行的框架組合開發(fā)人員可以根據自己對框架的熟悉程度,在充分了解不同框架的性能,根據其滿足系統(tǒng)功能和性能要求的前提下,自由地選擇不同框架的搭配使用。下面是一些常見的框架組合。⑴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框架簡介
Hibernate是一個面向Java環(huán)境的對象/關系映射工具,即ORM(Object-RelationMapping)。它的作用是封裝了JDBC的功能,即隱藏了數據訪問的細節(jié),負責Java對象的持久化。Hibernate的工作原理是通過文件把值對象和數據庫表之間建立起一個映射關系,這樣,我們在應用程序中只需要借助Hibernate所提供的一些基本類通過操作這些值對象即可達到訪問數據庫的目的。這就使得Java程序員使用其所熟悉的面向對象范式進行開發(fā)。1.4.2Hibernate框架簡介
了解了Hibernate,我們需要進一步了解JPA。前面已經介紹了JPA即Java持久化API(JavaPersistenceAPI)。由于ORM框架產品多,且各具特點,互不相通,這就給開發(fā)者一個又一個難題,也成了應用移植的障礙。JPA是JCP組織發(fā)布的JavaEE標準之一,任何符合JPA標準的框架都遵循同樣的架構,提供相同的API,這就保證了基于JPA開發(fā)的企業(yè)應用經過小的修改即能夠在不同的JPA框架下運行。就是說,JPA是一個ORM模型和標準,而不是一個實際的框架。了解了Hibernate,我們需要進1.4.3strutsStruts是一種基于JavaEE平臺的MVC框架。它主要是用Servlet和JSP技術實現的。它使開發(fā)過程各個模塊化分清晰易掌控。利用taglib獲得可重用的代碼;利用ActionServlet配合struts-config.xml實現對整個系統(tǒng)進行導航式建構,開發(fā)人員易于對系統(tǒng)的整體把握;用戶界面、業(yè)務邏輯和控制的分離,帶來系統(tǒng)結構更清晰,更容易分工協(xié)作,且系統(tǒng)具有良好的可擴展性和易維護性。1.4.3struts1.4.4SpringSpring是一個應用于JavaEE領域的輕量級的、功能強大的、靈活的應用程序框架??梢蕴峁┛焖俚腏avaWeb應用程序開發(fā)。Spring項目是個非?;钴S的開源項目,因此它提供了眾多優(yōu)秀項目的集成,例如對MVC框架和視圖技術的集成、與開源持久層ORM的集成、與動態(tài)語言的集成以及與其他企業(yè)級應用的集成。1.4.4SpringSpring提供了一個完整的MVC框架,為模型、視圖、控制器之間進行了非常清晰的劃分,各部分耦合度極低。視圖不再要求必須使用JSP,而可以選擇Velocity、Freemaker或者其他視圖技術。
Spring支持依賴注入(DI)和面向方面編程技術(AOP),更容易實現復雜的需求。支持事務管理,可以很容易地實現支持多個事務資源。支持JMS和JCA等技術,能方便地訪問EJB。Spring提供了一個完整的MVC1.4.5JSFJSF(JavaServerFaces)是一種以組件為中心的用于構建Web應用程序的輕型框架,它主要可用于開發(fā)應用程序的用戶界面。一般而言,用戶界面設計是一件很費時的過程,JSF以組件為中心的結構可以極大地簡化界面的設計工作。它為開發(fā)人員提供了標準的編程接口、豐富的UI組件庫以及事件驅動模型等完整的應用框架,通過JSF,可以在頁面中輕松地使用Web組件,捕獲用戶行為產生的事件,執(zhí)行驗證,建立頁面導航等任務。1.4.5JSFJSF的應用架構完全實現了MVC模式。用戶界面代碼(視圖)與處理邏輯(模型)相分離,這使得JSF程序易于管理,而所有與應用程序的用戶交互均由一個前端(FacesServlet)(控制器)來處理。JSF的應用架構完全實現了MVC模1.5JavaEE開發(fā)環(huán)境1.5.1JDK的下載和安裝
JDK(JavaDevelopmentKit,Java開發(fā)工具包)是JavaEE平臺的應用程序的基礎,利用它構建組件、開發(fā)應用程序。JDK是開源免費的工具,可以到Sun公司官網下載。網址為/javase/downloads/index.jsp。例如下載jdk-6u21-windows-i586.exe文件后,可以直接雙擊運行該文件進行安裝。按安裝過程提示選擇好安裝路徑及安裝組件即可。。1.5JavaEE開發(fā)環(huán)境1.5.1JDK的下載
安裝后需要設置環(huán)境變量JAVA_HOME、PATH及CLASSPATH。配置環(huán)境變量的目的是為了設置Java程序的編譯和運行有關的環(huán)境信息。其中JAVA_HOME設置為JDK的安裝目錄。PATH設置為JDK的程序(即exe文件)目錄。CLASSPATH則用于設置JDK類庫搜索路徑。安裝后需要設置環(huán)境變量JAVA_HOME、PATH及CJDK目錄結構為:bin目錄:包含編譯器、解釋器和一些其他工具。lib目錄:包含類庫文件。demo目錄:包含演示例子。include目錄:包含C語言頭文件,支持Java本地接口與Java虛擬機調試程序接口的本地編程技術。jre目錄:包含Java虛擬機、運行時類包和應用啟動器。sample目錄:附帶的輔助學習者學習的Java程序例子。src.zip:是源代碼壓縮文件。JDK目錄結構為:在bin目錄下包含Java開發(fā)工具,其中最常用的幾個如下:javac.exe:Java語言編譯器,將Java源代碼編譯轉換為字節(jié)碼文件(擴展名為.class),也稱為類文件。java.exe:Java解釋器,它啟動Java虛擬機(JVM),提供Java程序運行環(huán)境。appletviewer.exe:Java小程序瀏覽器,提供Java小應用程序(applet)測試及運行環(huán)境。javadoc.exe:幫助文檔生成器,建立關于類的信息的描述文檔。jar.exe:對類進行打包的工具。在bin目錄下包含Java開發(fā)工具,其中最常用的幾個如下:1.5.2集成開發(fā)環(huán)境的安裝和使用
Eclipse是IBM推出的開放源碼的通用開發(fā)平臺。它支持包括Java在內的多種開發(fā)語言。Eclipse采用插件機制,使一種可擴展的、可配置的集成開發(fā)環(huán)境(IDE)。
MyEclipse本質上是Eclipse插件。其企業(yè)級開發(fā)平臺(MyEclipseEnterpriseWorkbench)是功能強大的JavaEE集成開發(fā)環(huán)境,在其上可以進行代碼編寫、配置、調試、發(fā)布等工作,支持HTML、JavaScript、CSS、JSF、Spring、Struts、Hibernate等開發(fā)。下面對MyEclipse的安裝配置、使用方法進行概要介紹。1.5.2集成開發(fā)環(huán)境的安裝和使用1.安裝與配置從MyEclipse官網()下載MyElipse企業(yè)級開發(fā)平臺。在列表中選擇所用的平臺的安裝包下載,例如MyEclipse.6.0GA版的安裝包文件是MyEclipse10.5。下載后雙擊該文件即啟動安裝向導,按提示選擇安裝路徑,其余選項可以按默認進行安裝。在此過程中會自動搜索JDK進行環(huán)境配置,或者使用自帶的JDK。1.安裝與配置
為了能夠在MyEclipse中管理服務器,需要對其進行配置。具體配置過程如下:啟動MyEclipse,選擇Window中的Preferences,在彈出的窗口中選擇MyEclipse→Servers→Tomcat→Tomcat6.x,然后進入如圖1-2所示的配置窗口。選擇Tomcat的安裝目錄,然后選擇上面的Enable單選項,最后單擊OK按鈕完成配置。然后配置JDK路徑。為了能夠在MyEclipse中管理服JavaEE開發(fā)技術與案例教程第1章--Java課件2.使用方法⑴啟動首次啟動MyEclipse,選擇【開始】→【程序】→MyEclipse6.0→MyEclipse6.0.1之后系統(tǒng)會彈出一個對話框,讓用戶來設置工作區(qū)。所謂工作區(qū)(workspace)是指用于存放源程序文件和配置文件的文件夾。選擇一個文件夾設置為默認工作區(qū)之后,再次啟動MyEclipse時就會直接使用該工作區(qū)并且裝入其中的程序。2.使用方法一個工作區(qū)中可以包含同一個企業(yè)級應用的所有應用程序(application),每個應用程序對應著一個項目(project),MyEclipse正是以項目為單位管理應用程序的。一個工作區(qū)中可以包含同一個企業(yè)級應用的所有應用程序(appl⑵用戶界面MyEclipse的主界面如圖1-3所示。其中包括菜單欄、工具欄、視圖、編輯器和狀態(tài)欄等。菜單包括File(文件)、Edit(編輯)、Source(源代碼)、Refactor(重構)、Navigate(導航)、Search(搜索)、Project(項目)、MyEclipse、Run(運行)、Window(窗口)和Help(幫助)。⑵用戶界面
主界面窗口劃分為不同的子窗口,稱為視圖(View)。若干視圖合為一個透視圖(Perspective)。在window菜單中有多個命令與視圖及透視圖有關。例如:showview、openperspective、customizeperspective、saveperspective、closeperspective等,有時候因為過多的操作改變了視圖形狀及大小而想要回到初始狀態(tài),則可以使用resetperspective命令恢復到默認的透視圖狀態(tài)。主界面窗口劃分為不同的子窗口,稱為視圖(View)⑶應用開發(fā)在MyEclipse中進行應用開發(fā)的步驟如下。①創(chuàng)建工作區(qū):若非首次啟動MyEclipse,則可經新建Web項目,并指定存儲位置和目錄,可創(chuàng)建一新的工作區(qū)。然后選擇File|SwitichWorkspace命令切換到該工作區(qū)。②創(chuàng)建項目:在默認打開的某工作區(qū)中創(chuàng)建新的項目,選擇File|New|Project,輸入項目名稱,存儲位置(location)勾選usedefaultlocation即可。⑶應用開發(fā)③創(chuàng)建應用程序:選擇File|New菜單中列出的常用組件(class、interface、applet、servlet、HTML、JSP)之一,進入相應的窗口,編寫組件代碼。④編譯:編寫及保存的代碼可進行編譯。默認的編譯方式為即時編譯(JIT),也可以用project菜單的buildproject命令進行字節(jié)碼編譯。⑤打包/發(fā)布應用:選擇File|Export打包組件準備發(fā)布。③創(chuàng)建應用程序:選擇File|New菜單中列出的常用組件(c第1章JavaEE概述1.1JavaEE簡介1.2JavaEE分層架構1.3JavaEE技術規(guī)范1.4敏捷輕型框架1.5JavaEE開發(fā)環(huán)境習題
第1章JavaEE概述1.1JavaEE簡介1.1JavaEE簡介1.1.1什么是JavaEEJavaEE是基于Java的解決方案,是Java平臺的企業(yè)版,是一套技術架構。JavaEE的核心是一組技術規(guī)范與指南,它使開發(fā)人員能夠開發(fā)具有可移植性、安全性和可復用的企業(yè)級應用。JavaEE良好定義和設計的體系結構保證了開發(fā)人員更多地將注意力集中于架構設計和業(yè)務邏輯上。1.1JavaEE簡介1.1.1什么是Java1.1.2JavaEE的新特性1、標注(Annotation)是JavaEE5引入的一個新特性。標注之于程序是一種元數據,標注這種元數據按照其作用可以分為三類:編寫文檔、代碼分析、編譯檢查。用于編寫文檔是通過代碼里的標注元數據生成文檔,例如@Documented,用于定制javadoc不支持的文檔屬性,并在開發(fā)中使用。用在代碼分析的標注如@Deprecated,指出這是個不建議使用的方法。1.1.2JavaEE的新特性
引入標注可以實現多種功能的簡化,例如:(1)定義和使用WebService。(2)開發(fā)EJB組件。(3)映射Java類到XML文檔。(4)映射Java類到數據庫。(5)依賴注入。(6)指定部署信息等。有了Annotation,在Web應用開發(fā)中直接在代碼中使用標注就可以告知JavaEE服務器如何部署及運行,而不必再編輯WEB-INF/web.xml文件了。引入標注可以實現多種功能的簡化,例如:2、EJB3EJB3是EJB2的升級,不像EJB2是重量級框架,EJB3的持久化變更加簡化,是輕量級的。它不再需要EJBhome接口,不再需要實現SessionBean接口,JDNIAPI也不再是必需的。EJB部署描述符變成可選的功能。此外,EJB3中還引入了攔截器功能。攔截器是AOP在EJB中的實現,是可以對Bean的業(yè)務方法進行攔截的組件。攔截器可以用于無狀態(tài)會話Bean、有狀態(tài)會話Bean和消息驅動Bean。攔截器用來監(jiān)聽程序的一個或者多個方法,它對方法調用提供了控制。2、EJB33、JPAJPA(JavaPersistenceAPI),即數據持久化API,它是一個輕量級的對象持久化模型,是JavaEE的又一新特性。Sun公司推出JPA規(guī)范目的在于簡化現有JavaEE和JavaSE應用的對象持久化工作,希望統(tǒng)一ORM技術,因為在JPA出現之前,各種ORM框架之間的API差異很大,使用了某種ORM框架的系統(tǒng)會受制于該ORM的標準。JPA本質上是一種ORM規(guī)范,并未提供ORM實現,其具體實現由其他的廠商提供。程序員若要使用JPA,需要選擇JPA的實現框架,Hibernate3即是這樣一個實現了JPA的一個框架。3、JPA4、WebService支持
WebService是建立可互操作的分布式應用程序的新平臺,程序員可能使用COM或DCOM建立過基于組件的分布式應用程序,或者使用CORBA、RMI等技術實現遠程調用。WebService平臺也是這樣的一套標準,而且它做的更好。它定義了應用程序如何在Web上實現互操作。WebService平臺需要一套協(xié)議來實現分布式應用程序的創(chuàng)建。4、WebService支持5、依賴注入所謂依賴注入(DependencyInjection)是指當某個角色(可能是一個Java實例,調用者)需要另外一個角色(另外一個Java類的實例,被調用者)的協(xié)助時,在傳統(tǒng)的程序設計過程中,通常是由調用者來創(chuàng)建被調用者的實例。在一些輕型框架如Spring中,創(chuàng)建被調用者的任務不再由調用者完成,而是由Spring容器完成,然后以某種方式注入給調用者,稱為依賴注入,也稱為控制反轉。通過依賴注入降低了代碼的耦合度,也使得資源訪問變得更加容易。5、依賴注入6、泛型泛型(Generics)是程序設計語言的一種特性,支持泛型的程序設計語言允許程序員在編寫代碼時定義一些可變部分,那些部分在使用前必須作出指明。各種程序設計語言和其編譯器、運行環(huán)境對泛型的支持均不一樣。將類型參數化以達到代碼復用提高軟件開發(fā)工作效率的一種數據類型。泛型主要是引入了類型參數這個概念。6、泛型JavaEE5通過引入泛型,使得集合元素類型參數化,避免了運行時出現類型轉換錯誤,因此不必要加入顯式強制類型轉換的操作了。下面的例子對此作了說明:不使用泛型時:ArrayListlist=newArrayList();list.add(0,newInteger(42));inttotal=((Integer)list.get(0)).inValue();JavaEE5通過引入泛型,使得集合元素類型參數化,避免使用了泛型后:ArrayList<Integer>list=newArrayList<Integer>();list.add(0,newInteger(42));inttotal=list.get(0).inValue();讀者可以體會這兩個例子之間的微妙差異,進而理解用反型的好處。使用了泛型后:7、枚舉枚舉類型是JavaEE5開始引入的類型,本質上枚舉類型就是一個命名變量的列表。枚舉類型通過關鍵字enum來聲明。下面是一個枚舉的例子:publicenumWeek{Monday,
Tuesday,
Wednesday,
Thursday,7、枚舉Friday,
Saturday,
Sunday}對命名常量可以通過類似對象成員的方法或者通過方法values()、valueOf()、ordinal()、name()等方法進行存取操作。下面的for循環(huán)將輸出枚舉的所有命名常量。for(Weekw:Week.values())System.out.println(w);Friday,8、增強的for循環(huán)
JavaEE5中的增強的for循環(huán)簡化了數組和集合的遍歷操作,其語法更簡單,可以防止下標越界的問題出現,而且還可以避免由于強制類型轉換導致的錯誤。下面是一個使用增強for循環(huán)對數組元素進行遍歷的例子。
inta[]={1,2,3,4,5,6}; for(intnum:a)System.out.println(num);8、增強的for循環(huán)9、函數可變參數
JavaEE5之前,方法的參數個數是固定的。JavaEE5允許創(chuàng)建具有可變參數的方法,這使得某些操作變得更方便了。下面的程序例子可以說明這一點。
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、函數可變參數10、靜態(tài)導入在JavaEE5之前的版本中,程序中使用靜態(tài)成員要在其前面加類名引導。JavaEE5引入靜態(tài)導入意味著不必再寫類名,而是直接通過靜態(tài)成員的名字來訪問它們。例如:
//靜態(tài)導入
importstaticjava.lang.System.*;importstaticjava.lang.Math.*;…//調用靜態(tài)成員
out.println(sqrt(6));//不再是Math.sqrt(6)10、靜態(tài)導入1.2JavaEE分層架構1.2.1分層模式概述分層模式是常見的架構模式。分層描述的是這樣一種架構設計過程:從最低級別的抽象開始,稱為第1層。在此基礎上逐步向上進行抽象。直至達到功能的最高級別。分層模式的特點包括:伸縮性:伸縮性是指應用程序能支持更多用戶的能力。應用的層數少,可以增加資源(如CPU、內存等)的機會就少。反之,則可以把每層分布在不同的機器上??删S護性:指的是發(fā)生需求變化時,只需修改軟件的局部,不必改動其他部分的代碼。1.2JavaEE分層架構1.2.1分層模式概述可擴展性:可擴展性是指在現有系統(tǒng)增加新功能的能力。分層的結構中可擴展性較好,這是由于可以每個層中插入功能擴展點,而不改變原有的整體框架??芍赜眯裕嚎芍赜眯灾傅氖峭怀绦虼a可以滿足多種需求的能力。例如,業(yè)務邏輯層可以被多種表示層共享,即業(yè)務邏輯層的代碼被重用了??晒芾硇裕褐腹芾硐到y(tǒng)的難易程度??蓴U展性:可擴展性是指在現有系統(tǒng)增加新功能的能力。分層的結構1.2.2JavaEE的結構JavaEE使用多層分布式的應用模型,該模型通過四層來實現,分別為:⑴客戶層:運行在客戶計算機上的組件。⑵Web層:運行在JavaEE服務器上的組件。⑶業(yè)務層:同樣是運行在JavaEE服務器上的組件。⑷企業(yè)信息系統(tǒng)層(EIS):是指運行在EIS服務器上的軟件系統(tǒng)。有時我們把客戶層和Web層視為一個層,這樣就可以將以上結構按三層來劃分,如下圖所示。1.2.2JavaEE的結構JavaEE開發(fā)技術與案例教程第1章--Java課件
在這個分層體系中,客戶層組件可以使基于Web方式的,也可以是基于傳統(tǒng)方式的。Web層組件可以使JSP頁面或者Servlet。對于業(yè)務邏輯層組件,其代碼是處理如銀行、零售等具體行業(yè)或領域的業(yè)務需要,由運行在業(yè)務層上的EnterpriseBean進行處理。企業(yè)信息系統(tǒng)層處理企業(yè)信息系統(tǒng)軟件,包括企業(yè)基礎建設系統(tǒng),例如企業(yè)資源計劃(ERP)、大型機事務處理、數據庫系統(tǒng)和其他遺留系統(tǒng)。在這個分層體系中,客戶層組件可以使基1.3JavaEE技術規(guī)范
1.JDBC(JavaDatabaseConnectivity)JDBCAPI為訪問不同的數據庫提供了一種統(tǒng)一的機制,像ODBC一樣,JDBC使操縱數據庫的細節(jié)對開發(fā)者透明,另外,JDBC對數據庫的訪問也具有平臺無關性。2.JNDI(JavaNameandDirectoryInterface)名字和目錄服務,為應用提供一致的模型來訪問企業(yè)級資源,如DNS和LDAP、本地文件系統(tǒng)或應用服務器中的對象。1.3JavaEE技術規(guī)范
1.JDBC(JavaD
3.EJB(Enterprise
JavBean)企業(yè)Java組件,提供一個框架來描述分布式商務邏輯,開發(fā)具有可伸縮性和復雜的企業(yè)級應用。EJB規(guī)范定義了組件何時如何與它們的容器進行交互。容器負責提供公用的服務,如目錄、事務管理、安全性等。需要說明的是,EJB并不是實現JavaEE企業(yè)應用的惟一渠道,它的意義在于它是專為分布式大型企業(yè)應用而設計,用它編寫的程序具有良好的可擴展性和安全性。3.EJB(EnterpriseJav4.RMI(RemoteMethodInvoke)遠程方法調用,顧名思義,它用于調用遠程對象的方法。它使用了序列化方式在客戶端和服務器端傳遞數據。5.JavaIDL/CORBA(JavaInterfaceDefinitionLanguage/CommonObjectRequestBrokerArchitecture)
Java接口定義語言/公用對象請求代理結構。為Java平臺添加了CORBA(CommonObjectRequestBrokerArchitecture,公用對象請求代理體系結構)功能,從而可提供基于標準的互操作性和連接性。4.RMI(RemoteMethodInvoke)JavaIDL使分布式、支持Web的Java應用程序可利用ObjectManagementGroup定義的行業(yè)標準OMGIDL(ObjectManagementGroupInterfaceDefinitionLanguage,對象管理組接口定義語言)及IIOP(InternetInter-ORBProtocol,Internet對象請求代理間協(xié)議)來透明地調用遠程網絡服務。運行時組件包括一個全兼容的JavaORB,用于通過IIOP通訊進行分布式計算。JavaIDL使分布式、支持Web的Java應用6.JSP(JavaServerPages)JSP頁面由HTML代碼和嵌入其中的Java代碼組成。服務器在頁面被客戶端請求以后,對這些Java代碼進行處理,然后將生成的HTML頁面返回給客戶端的瀏覽器。7.JavaServletServlet是運行在服務器端的Java程序,它擴展了Web服務器的功能。作為一種服務器端的應用,當被請求時開始執(zhí)行。Servlet提供的功能和JSP一致,只是二者的構成不同。JSP通常是HTML代碼中嵌入Java代碼,而Servlet全部由Java寫成并且生成HTML。6.JSP(JavaServerPages)8.XML(eXtensibleMarkupLanguage)擴展的標記語言,用來定義其他標記語言的語言。作為數據交換和數據共享的語言,適用于很多的應用領域。9.JMS(JavaMessageService)
Java消息服務,是Java平臺上用于建立面向消息中間件(MOM)的技術規(guī)范,它便于消息系統(tǒng)中的Java應用程序進行消息交換,并且通過提供標準的產生、發(fā)送、接收消息的接口簡化企業(yè)應用的開發(fā)。8.XML(eXtensibleMarkupLangua
許多廠商目前都支持JMS,包括IBM的MQSeries、BEA的WeblogicJMSservice等等。使用JMS能夠通過消息收發(fā)服務(有時稱為消息中介程序或路由器)從一個JMS客戶機向另一個JMS客戶機發(fā)送消息。消息是JMS中的一種類型對象,由兩部分組成:報頭和消息主體。報頭由路由信息以及有關該消息的元數據組成。消息主體則攜帶著應用程序的數據或有效負載。許多廠商目前都支持JMS,包括I10.JTA(JavaTransactionArchitecture)
Java事務體系結構,定義了一組標準的API,用于訪問各種事務監(jiān)控。11.JTS(JavaTransactionService)
Java事務服務,是CORBAOTS(ObjectTransactionService)事務監(jiān)控的基本實現。10.JTA(JavaTransactionArchit12.JavaMail
是用于存取郵件服務器的API,它提供了一套郵件服務器的抽象類。它不僅支持SMTP服務器,也支持IMAP服務器。13.JAF(JavaBeansActivationFramework)
JavaMail利用JAF來處理MIME編碼的郵件附件。MIME的字節(jié)流可以被轉換成Java對象,或者相反。12.JavaMail1.4敏捷輕型框架
框架,即framework。其實就是某種應用的半成品,就是一組組件,供你選用完成你自己的系統(tǒng)。這些組件是把不同的應用中有共性的任務抽取出來加以實現,做成程序供人使用。簡單說就是使用別人搭好的舞臺,你來做表演。而且,框架一般是成熟的,不斷升級的軟件??蚣艿母拍钭钤缙鹪从赟malltalk環(huán)境,其中最著名的框架是Smalltalk80的用戶界面框架MVC(Model-View-Controller)。1.4敏捷輕型框架框架,即framewor
框架可分為重型框架和輕型框架。一般稱EJB這樣的框架為重型框架,因其軟件架構較復雜,啟動加載時間較長,系統(tǒng)相對昂貴,需啟動應用服務器加載EJB組件。而輕型框架則不需要昂貴的設備和軟件費用,且系統(tǒng)搭建容易,服務器啟動快捷,適合于中小型企業(yè)或項目。目前,使用輕型框架開發(fā)項目非常普遍,常用的輕型框架包括Hibernate、Struts、Spring、WebWork、Tapestry、JSF等??蚣芸煞譃橹匦涂蚣芎洼p型框架。一般1.4.1輕型框架簡介
1.使用輕型框架的好處軟件技術發(fā)展至今,面臨各類復雜的應用系統(tǒng)開發(fā)。軟件系統(tǒng)開發(fā)任務涉及到的知識更綜合、內容更豐富、問題更繁多。如何能使程序開發(fā)效率高、工作效果好,這是輕型框架設計的目的所在??蚣芸梢酝瓿砷_發(fā)中的一些基礎性工作,開發(fā)人員可以集中精力完成系統(tǒng)的業(yè)務邏輯設計。總體而言,適用輕型框架的好處有以下幾方面:⑴減少重復開發(fā)工作量、縮短開發(fā)周期、降低開發(fā)成本。⑵使程序設計總體上更為規(guī)范、程序運行更穩(wěn)定。⑶軟件開發(fā)更能適應需求變化,且運行維護費用也較低。1.4.1輕型框架簡介2.目前流行的框架組合開發(fā)人員可以根據自己對框架的熟悉程度,在充分了解不同框架的性能,根據其滿足系統(tǒng)功能和性能要求的前提下,自由地選擇不同框架的搭配使用。下面是一些常見的框架組合。⑴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框架簡介
Hibernate是一個面向Java環(huán)境的對象/關系映射工具,即ORM(Object-RelationMapping)。它的作用是封裝了JDBC的功能,即隱藏了數據訪問的細節(jié),負責Java對象的持久化。Hibernate的工作原理是通過文件把值對象和數據庫表之間建立起一個映射關系,這樣,我們在應用程序中只需要借助Hibernate所提供的一些基本類通過操作這些值對象即可達到訪問數據庫的目的。這就使得Java程序員使用其所熟悉的面向對象范式進行開發(fā)。1.4.2Hibernate框架簡介
了解了Hibernate,我們需要進一步了解JPA。前面已經介紹了JPA即Java持久化API(JavaPersistenceAPI)。由于ORM框架產品多,且各具特點,互不相通,這就給開發(fā)者一個又一個難題,也成了應用移植的障礙。JPA是JCP組織發(fā)布的JavaEE標準之一,任何符合JPA標準的框架都遵循同樣的架構,提供相同的API,這就保證了基于JPA開發(fā)的企業(yè)應用經過小的修改即能夠在不同的JPA框架下運行。就是說,JPA是一個ORM模型和標準,而不是一個實際的框架。了解了Hibernate,我們需要進1.4.3strutsStruts是一種基于JavaEE平臺的MVC框架。它主要是用Servlet和JSP技術實現的。它使開發(fā)過程各個模塊化分清晰易掌控。利用taglib獲得可重用的代碼;利用ActionServlet配合struts-config.xml實現對整個系統(tǒng)進行導航式建構,開發(fā)人員易于對系統(tǒng)的整體把握;用戶界面、業(yè)務邏輯和控制的分離,帶來系統(tǒng)結構更清晰,更容易分工協(xié)作,且系統(tǒng)具有良好的可擴展性和易維護性。1.4.3struts1.4.4SpringSpring是一個應用于JavaEE領域的輕量級的、功能強大的、靈活的應用程序框架??梢蕴峁┛焖俚腏avaWeb應用程序開發(fā)。Spring項目是個非?;钴S的開源項目,因此它提供了眾多優(yōu)秀項目的集成,例如對MVC框架和視圖技術的集成、與開源持久層ORM的集成、與動態(tài)語言的集成以及與其他企業(yè)級應用的集成。1.4.4SpringSpring提供了一個完整的MVC框架,為模型、視圖、控制器之間進行了非常清晰的劃分,各部分耦合度極低。視圖不再要求必須使用JSP,而可以選擇Velocity、Freemaker或者其他視圖技術。
Spring支持依賴注入(DI)和面向方面編程技術(AOP),更容易實現復雜的需求。支持事務管理,可以很容易地實現支持多個事務資源。支持JMS和JCA等技術,能方便地訪問EJB。Spring提供了一個完整的MVC1.4.5JSFJSF(JavaServerFaces)是一種以組件為中心的用于構建Web應用程序的輕型框架,它主要可用于開發(fā)應用程序的用戶界面。一般而言,用戶界面設計是一件很費時的過程,JSF以組件為中心的結構可以極大地簡化界面的設計工作。它為開發(fā)人員提供了標準的編程接口、豐富的UI組件庫以及事件驅動模型等完整的應用框架,通過JSF,可以在頁面中輕松地使用Web組件,捕獲用戶行為產生的事件,執(zhí)行驗證,建立頁面導航等任務。1.4.5JSFJSF的應用架構完全實現了MVC模式。用戶界面代碼(視圖)與處理邏輯(模型)相分離,這使得JSF程序易于管理,而所有與應用程序的用戶交互均由一個前端(FacesServlet)(控制器)來處理。JSF的應用架構完全實現了MVC模1.5JavaEE開發(fā)環(huán)境1.5.1JDK的下載和安裝
JDK(JavaDevelopmentKit,Java開發(fā)工具包)是JavaEE平臺的應用程序的基礎,利用它構建組件、開發(fā)應用程序。JDK是開源免費的工具,可以到Sun公司官網下載。網址為/javase/downloads/index.jsp。例如下載jdk-6u21-windows-i586.exe文件后,可以直接雙擊運行該文件進行安裝。按安裝過程提示選擇好安裝路徑及安裝組件即可。。1.5JavaEE開發(fā)環(huán)境1.5.1JDK的下載
安裝后需要設置環(huán)境變量JAVA_HOME、PATH及CLASSPATH。配置環(huán)境變量的目的是為了設置Java程序的編譯和運行有關的環(huán)境信息。其中JAVA_HOME設置為JDK的安裝目錄。PATH設置為JDK的程序(即exe文件)目錄。CLASSPATH則用于設置JDK類庫搜索路徑。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 長江大學《分子生物學前沿實驗技術和應用》2023-2024學年第二學期期末試卷
- 南寧職業(yè)技術學院《醫(yī)學影像學結合》2023-2024學年第二學期期末試卷
- 山西省右玉縣2024-2025學年初三5月模擬試題物理試題含解析
- 吉首大學張家界學院《英語國家社交禮儀》2023-2024學年第一學期期末試卷
- 中國計量大學《機能實驗1》2023-2024學年第二學期期末試卷
- 江蘇省無錫市和橋區(qū)、張渚區(qū)2024-2025學年高中畢業(yè)班5月質量檢查(Ⅰ)英語試題含答案
- 創(chuàng)業(yè)企業(yè)品牌營銷方法創(chuàng)新重點基礎知識點
- 2023年石家莊市市屬國有企業(yè)面向社會公開招聘403名管理人員及專業(yè)技術人員筆試參考題庫附帶答案詳解
- 歷史期末工作總結(6篇)
- 外科醫(yī)生半年述職報告(8篇)
- SF-36生活質量調查表(SF-36-含評分細則)
- 人體發(fā)育學模考試題與參考答案
- 倫理與禮儀 知到智慧樹網課答案
- 制造執(zhí)行系統(tǒng)集成
- 公司電工外包協(xié)議書
- 房地產經紀人協(xié)理考試題庫全(附答案)
- 室內設計原木風格研究現狀
- 車間班組長崗位競聘述職報告課件模板
- 康養(yǎng)活動策劃方案
- DB11/1950-2021-公共建筑無障礙設計標準
- 2024年三門峽職業(yè)技術學院單招職業(yè)技能測試題庫及答案解析
評論
0/150
提交評論