技術(shù)培訓(xùn)-02-JAVA開發(fā)體系簡(jiǎn)介_第1頁
技術(shù)培訓(xùn)-02-JAVA開發(fā)體系簡(jiǎn)介_第2頁
技術(shù)培訓(xùn)-02-JAVA開發(fā)體系簡(jiǎn)介_第3頁
技術(shù)培訓(xùn)-02-JAVA開發(fā)體系簡(jiǎn)介_第4頁
技術(shù)培訓(xùn)-02-JAVA開發(fā)體系簡(jiǎn)介_第5頁
已閱讀5頁,還剩53頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

軟件開發(fā)技術(shù)培訓(xùn)

第二課:Java開發(fā)體系介紹網(wǎng)管中心業(yè)務(wù)支撐室2012年4月內(nèi)容Java語言簡(jiǎn)介1JavaEE體系結(jié)構(gòu)2客戶層技術(shù)3Web層技術(shù)4業(yè)務(wù)層技術(shù)5持久層技術(shù)6應(yīng)用服務(wù)器介紹7SSH開源框架8其它9Java是什么Java是一種可以撰寫跨平臺(tái)應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,是由SunMicrosystems公司于1995年5月推出的Java程序設(shè)計(jì)語言和Java平臺(tái)(即JavaSE,JavaEE,JavaME)的總稱。Java技術(shù)具有卓越的通用性、高效性、平臺(tái)移植性和安全性,廣泛應(yīng)用于個(gè)人PC、數(shù)據(jù)中心、游戲控制臺(tái)、科學(xué)超級(jí)計(jì)算機(jī)、移動(dòng)電話和互聯(lián)網(wǎng),同時(shí)擁有全球最大的開發(fā)者專業(yè)社群。在全球云計(jì)算和移動(dòng)互聯(lián)網(wǎng)的產(chǎn)業(yè)環(huán)境下,Java更具備了顯著優(yōu)勢(shì)和廣闊前景。1995年5月23日,Java語言誕生1996年1月,第一個(gè)JDK-JDK1.0誕生1998年12月8日,JAVA2企業(yè)平臺(tái)J2EE發(fā)布1999年6月,SUN公司發(fā)布Java的三個(gè)版本:標(biāo)準(zhǔn)版(J2SE)、企業(yè)版(J2EE)和微型版(J2ME)2005年6月,Java的各種版本已經(jīng)更名,J2EE更名為JavaEE,J2SE更名為JavaSE,J2ME更名為JavaME2009年04月20日,甲骨文74億美元收購Sun。取得java的版權(quán)。2011年7月,甲骨文公司發(fā)布java7的正式版。Java平臺(tái)分類Java語言分為三個(gè)平臺(tái):JavaSE:JavaPlatform,StandardEdition,適用于桌面系統(tǒng)的Java2平臺(tái)標(biāo)準(zhǔn)版JavaEE:JavaPlatform,EnterpriseEdition,適用于創(chuàng)建服務(wù)器應(yīng)用程序和服務(wù)的Java2平臺(tái)企業(yè)版JavaME:JavaPlatform,MicroEdition,適用于小型設(shè)備和智能卡的Java2平臺(tái)Micro版Java語言主要特性Java編程語言的風(fēng)格十分接近C、C++語言。Java是一個(gè)純的面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,它繼承了C++語言面向?qū)ο蠹夹g(shù)的核心,Java舍棄了C++語言中容易引起錯(cuò)誤的指針(以引用取代)、運(yùn)算符重載(operatoroverloading)、多重繼承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的對(duì)象所占據(jù)的內(nèi)存空間,使得程序員不用再為內(nèi)存管理而擔(dān)憂。Java不同于一般的編譯執(zhí)行計(jì)算機(jī)語言和解釋執(zhí)行計(jì)算機(jī)語言。它首先將源代碼編譯成二進(jìn)制字節(jié)碼(bytecode),然后依賴各種不同平臺(tái)上的虛擬機(jī)來解釋執(zhí)行字節(jié)碼,從而實(shí)現(xiàn)了“一次編譯、到處執(zhí)行”的跨平臺(tái)特性。不過,每次的解釋執(zhí)行需要消耗一定的時(shí)間,這同時(shí)也在一定程度上降低了Java程序的運(yùn)行效率。熟悉而簡(jiǎn)單部分解釋執(zhí)行Java的設(shè)計(jì)目標(biāo)是要支持網(wǎng)絡(luò)應(yīng)用程序。一般而言,網(wǎng)絡(luò)是由許多不同的平臺(tái)系統(tǒng)構(gòu)成,包括各種CPU與操作系統(tǒng)結(jié)構(gòu)。為了讓Java應(yīng)用程序能夠在網(wǎng)絡(luò)上任何地方執(zhí)行,其編譯器將會(huì)生成一種具備結(jié)構(gòu)中立性的目標(biāo)文件格式(bytecode)。編譯后的程序碼可以在提供Java運(yùn)行系統(tǒng)的多種不同處理器上面執(zhí)行。平臺(tái)獨(dú)立性Java虛擬機(jī)

(JVM)Java語言的一個(gè)非常重要的特點(diǎn)就是與平臺(tái)的無關(guān)性。而使用Java虛擬機(jī)是實(shí)現(xiàn)這一特點(diǎn)的關(guān)鍵。一般的高級(jí)語言如果要在不同的平臺(tái)上運(yùn)行,需要編譯成不同的目標(biāo)代碼。而引入Java語言虛擬機(jī)后,Java語言在不同平臺(tái)上運(yùn)行時(shí)不需要重新編譯。JVM是JavaVirtualMachine(Java虛擬機(jī))的縮寫,是一種可以執(zhí)行Java字節(jié)碼(bytecode)的虛擬機(jī)。JVM屏蔽了與具體操作系統(tǒng)平臺(tái)相關(guān)的信息,使Java程序只需生成在JVM上運(yùn)行的目標(biāo)代碼(字節(jié)碼),就可以在多種平臺(tái)上不加修改地運(yùn)行。JVM在執(zhí)行字節(jié)碼時(shí),實(shí)際上最終還是把字節(jié)碼解釋成具體平臺(tái)上的機(jī)器指令執(zhí)行。常見Java虛擬機(jī):sunHotspotVMOracle(sunjre)BEAJRockitOracleIBMJ9VMIBMJava運(yùn)行環(huán)境

(JRE)(JRE)JRE(JavaRuntimeEnvironment,Java運(yùn)行環(huán)境),運(yùn)行JAVA程序所必須的環(huán)境的集合,包含JVM標(biāo)準(zhǔn)實(shí)現(xiàn)及Java核心類庫。即JRE=JVM+Lib(JavaAPI)Java程序和JRE之間的關(guān)系如下圖所示:JavaPlug-in:是一種特殊的JRE,被安裝于瀏覽器中,用于支持在瀏覽器中運(yùn)行JavaApplet程序。JVM垃圾回收機(jī)制(GarbageCollection)JVM啟動(dòng)時(shí)可以通過參數(shù):–Xms指定JVM使用的最小內(nèi)存;-Xmx指定JVM允許使用的最大內(nèi)存。這樣,Java程序啟動(dòng)時(shí)就占用-Xms大小的內(nèi)存,并且隨著程序運(yùn)行所占用內(nèi)存不斷上漲,當(dāng)內(nèi)存使用達(dá)到-Xmx指定最大內(nèi)存的一定比例(比例也可配置)的時(shí)候就觸發(fā)自動(dòng)垃圾回收機(jī)制,由JVM檢測(cè)失效的對(duì)象并將內(nèi)存釋放。這樣不斷重復(fù)就形成了類似波浪狀的內(nèi)存占用示意圖(如下圖所示),當(dāng)由于創(chuàng)建對(duì)象過多造成JVM使用內(nèi)存達(dá)到-Xmx參數(shù)指定的上限時(shí),JVM會(huì)拋出內(nèi)存錯(cuò)誤異常。因此,要合理地設(shè)定Java運(yùn)行的內(nèi)存大小和GC策略。Java運(yùn)行機(jī)制Java程序的運(yùn)行機(jī)制如下圖:A.javaB.javaA.classB.class1.程序的源文件2.程序的class文件編譯時(shí)環(huán)境A.classB.classObject.classString.class程序的class文件:*.jar包運(yùn)行時(shí)環(huán)境Java虛擬機(jī)…通過本地或網(wǎng)絡(luò)傳遞class文件使用Java解釋器解釋執(zhí)行class文件編譯源文件JRE類庫操作系統(tǒng)再見HelloWorld編輯程序代碼HelloWorld.javajavac生成出錯(cuò)信息Yes編譯程序代碼javacHelloWorld.javaHelloWorld.class解釋執(zhí)行字節(jié)碼javaHelloWorld有編譯錯(cuò)誤嗎?NoclassHelloWorldApp{//程序入口函數(shù)publicstaticvoidmain(String[]args){//程序執(zhí)行邏輯System.out.println("HelloWorld!");}}HelloWorldApp.java:一個(gè)簡(jiǎn)單的Java程序的編輯、編譯和運(yùn)行過程示意如下:Java應(yīng)用分類Java應(yīng)用客戶端應(yīng)用程序GUI應(yīng)用程序命令行程序嵌入式應(yīng)用程序服務(wù)端應(yīng)用程序web服務(wù)程序JavaApplet小應(yīng)用程序即圖形用戶界面程序,可以實(shí)現(xiàn)復(fù)雜的用戶交互功能和豐富的展現(xiàn)方式無需界面,只需在命令行下運(yùn)行,運(yùn)行結(jié)果只在后臺(tái)發(fā)生變化嵌入到各種終端設(shè)備中運(yùn)行的Java應(yīng)用程序通過web的方式提供用戶交互界面,這些程序運(yùn)行在服務(wù)器端,通過HTTP/WebService等協(xié)議方式接收客戶端請(qǐng)求并返回相應(yīng)的數(shù)據(jù)一種嵌入在HTML網(wǎng)頁中的JavaGUI應(yīng)用程序,Applet的類在服務(wù)器端,當(dāng)瀏覽器顯示網(wǎng)頁時(shí),它隨之下載到本地,由本地的瀏覽器載入運(yùn)行。內(nèi)容Java語言簡(jiǎn)介1JavaEE體系結(jié)構(gòu)2客戶層技術(shù)3Web層技術(shù)4業(yè)務(wù)層技術(shù)5持久層技術(shù)6應(yīng)用服務(wù)器介紹7SSH開源框架8其它9Java

EE體系結(jié)構(gòu)JavaEE是一種企業(yè)級(jí)應(yīng)用的軟件架構(gòu),是一種思想,一套規(guī)范。目前JavaEE已經(jīng)發(fā)展到JavaEE6。JavaEE體系結(jié)構(gòu)圖如下圖所示:JavaEE的四層結(jié)構(gòu)JavaEE使用多層的分布式應(yīng)用模型,應(yīng)用邏輯按照功能劃分為不同的組件,各個(gè)應(yīng)用組件根據(jù)它們所在的層分布在不同的服務(wù)器上,以下為JavaEE典型的四層結(jié)構(gòu):(1)客戶層:ClientTier(2)Web層(展現(xiàn)層):WebTier(3)業(yè)務(wù)邏輯層:BusinessTier(4)企業(yè)信息層(EIS:EnterpriseInformationSystem)也叫數(shù)據(jù)持久層JavaEE分層職責(zé)主要用來提供應(yīng)用系統(tǒng)的操作界面,它負(fù)責(zé)為用戶提供輸入,并把用戶的輸入請(qǐng)求發(fā)送給服務(wù)器端的表現(xiàn)層,并接收表現(xiàn)層的響應(yīng)轉(zhuǎn)換為視圖組件展現(xiàn)處理。通常指的是客戶端程序或者web瀏覽器。是用戶和應(yīng)用系統(tǒng)“消息”傳遞的紐帶,主要用來控制系統(tǒng)業(yè)務(wù)流程的流轉(zhuǎn),在Web應(yīng)用中主要由Jsp/Servlet來實(shí)現(xiàn)。接收客戶層的請(qǐng)求并調(diào)用相應(yīng)的業(yè)務(wù)邏輯組件處理,并把結(jié)果返回給客戶層組件。負(fù)責(zé)整個(gè)系統(tǒng)的業(yè)務(wù)實(shí)現(xiàn),通過業(yè)務(wù)規(guī)則對(duì)業(yè)務(wù)請(qǐng)求進(jìn)行處理。業(yè)務(wù)層主要由JavaBean組件或者EJB組件實(shí)現(xiàn)。也叫數(shù)據(jù)持久層,專門處理與數(shù)據(jù)庫交互的操作,負(fù)責(zé)整個(gè)系統(tǒng)的數(shù)據(jù)持久化。組件的實(shí)現(xiàn)方式主要有JDBC方式或ORM方式??蛻魧诱宫F(xiàn)層業(yè)務(wù)層企業(yè)信息層Java

EE運(yùn)行方式JavaEE各層之間的調(diào)用依賴關(guān)系如下圖所示:內(nèi)容Java語言簡(jiǎn)介1JavaEE體系結(jié)構(gòu)2客戶層技術(shù)3Web層技術(shù)4業(yè)務(wù)層技術(shù)5持久層技術(shù)6應(yīng)用服務(wù)器介紹7SSH開源框架8其它9Java客戶層技術(shù)運(yùn)行在客戶端層的Java程序主要有以下幾類:1、獨(dú)立運(yùn)行的擁有圖形界面的JavaGUI程序2、通過JavaWebStart技術(shù)分發(fā)與運(yùn)行的JavaGUI程序3、以命令行方式運(yùn)行的無界面的Java應(yīng)用程序,具體又分為控制臺(tái)方式和后臺(tái)服務(wù)方式4、運(yùn)行在已安裝javaplug-in的瀏覽器中的JavaApplet小程序Java

GUI應(yīng)用用于開發(fā)Java桌面應(yīng)用程序的gui工具包主要分為以下三類:AWT、Swing和SWTAWT(AbstractWindowToolkit):Sun最早發(fā)布的用于構(gòu)建JavaGUI程序的組件庫。AWT通過JNI接口調(diào)用本地圖形庫實(shí)現(xiàn)用戶界面,為了保證移植性,AWT只提供幾個(gè)通用操作系統(tǒng)圖形功能的交集,提供的組件非常簡(jiǎn)單有限,沒有如表、樹等常用高級(jí)組件。目前,sun不推薦使用AWT,但是由于其簡(jiǎn)單、穩(wěn)定、占用內(nèi)存小等特點(diǎn),在嵌入式系統(tǒng)開發(fā)中還擁有一席之地。Swing:Swing是在AWT的基礎(chǔ)上構(gòu)建的一套新的圖形界面開發(fā)系統(tǒng),用純java代碼對(duì)AWT的功能進(jìn)行了大幅度的擴(kuò)充。Swing中的組件都是利用Java2D圖形功能模擬繪制出來的,是純Java實(shí)現(xiàn)的,與平臺(tái)無關(guān)。目前,Swing技術(shù)在很大程度上替代了AWT技術(shù)。Swing優(yōu)點(diǎn)是跨平臺(tái)的一致性,同時(shí)支持Look&Feel換膚功能,缺點(diǎn)是執(zhí)行速度較慢,但是隨著在新版JRE下性能大幅提高已經(jīng)接近原生組件。SWT:是IBM提供的開源GUI框架,與AWT/Swing有相似的用處,Eclipse就是用SWT開發(fā)的。SWT最大化了操作系統(tǒng)的圖形構(gòu)建API,只要操作系統(tǒng)提供了相應(yīng)的圖形構(gòu)件,那么SWT就簡(jiǎn)單的調(diào)用它,只有那些操作系統(tǒng)不提供的構(gòu)件,SWT才去模擬實(shí)現(xiàn),因此在外觀上與操作系統(tǒng)基本完全一致。SWT缺點(diǎn)主要是(1)不是Java標(biāo)準(zhǔn)(2)支持的平臺(tái)太少。如果不考慮移植并且在Windows平臺(tái)運(yùn)行,SWT可以有很好的表現(xiàn)。SwingvsSWTSwingvsSWT比較項(xiàng)目結(jié)果備注組件類型Swing=SWT都提供豐富的組件響應(yīng)速度Swing=SWT(JRE5以上)外觀Swing=SWTSwing可以通過LookAndFeel實(shí)現(xiàn)絢麗的外觀效果;SWT與操作系統(tǒng)外觀一致,兩種實(shí)現(xiàn)方式各有所長(zhǎng)擴(kuò)展性Swing>SWTSwing組件更易于擴(kuò)展,因此能夠提供更多功能換膚支持Swing>SWTSwing的LookAndFeel機(jī)制支持變更外觀成熟穩(wěn)定性Swing>SWTSWT因?yàn)樵O(shè)計(jì)上的缺陷,將資源管理交給開發(fā)者管理,因此存在不穩(wěn)定風(fēng)險(xiǎn)跨平臺(tái)性Swing>

SWTSwing采用純Java實(shí)現(xiàn),可跨平臺(tái);SWT在非Windows平臺(tái)穩(wěn)定性和性能很差內(nèi)存消耗Swing<SWTSwing使用模擬組件需要更大內(nèi)存啟動(dòng)時(shí)間Swing<SWT原因同上注:由于AWT基本不再使用,因此沒有進(jìn)行比較Java

WebStart技術(shù)JavaWebStart是一個(gè)軟件技術(shù),它是基于Java的應(yīng)用程序,允許從的Web啟動(dòng)、部署和更新功能Java客戶端應(yīng)用程序。在第一次啟動(dòng)JavaWebStart時(shí),用戶可以從Web下載新的客戶機(jī)應(yīng)用程序;之后這些應(yīng)用程序可以通過Web頁面的鏈接或(Windows中的)桌面圖標(biāo)或“開始”菜單初始化。應(yīng)用程序在JavaWebStart下快速初始化,被高速緩存在客戶機(jī),并且可以遠(yuǎn)程的離線啟動(dòng)。當(dāng)客戶機(jī)應(yīng)用程序啟動(dòng)時(shí),JavaWebStart自動(dòng)執(zhí)行更新,在從原來的高速緩存(倘若存在高速緩存)裝入應(yīng)用程序的同時(shí),從Web下載最新的代碼。(1)提供一種單擊一次即可激活應(yīng)用程序的便捷方法(2)保證您始終運(yùn)行最新版本的應(yīng)用程序(3)避免了復(fù)雜的安裝或升級(jí)過程詳細(xì)例子可以參見:/ch/twaver.php?p_id=90Java

WebStart優(yōu)缺點(diǎn)JavaWebStart技術(shù)主要優(yōu)勢(shì):服務(wù)端管理,客戶下載;第一次運(yùn)行只需要下載一些包,但是這些包都能自動(dòng)存在客戶端,第二次運(yùn)行就不再需要下載;版本管理,自動(dòng)更新;根據(jù)服務(wù)端的版本號(hào)與客戶端包的版本號(hào)差異自動(dòng)下載和更新新版本的包,;客戶端運(yùn)行的是本地應(yīng)用,操作和GUI程序一樣方便、穩(wěn)定、響應(yīng)快、性能好。與客戶端其它應(yīng)用的集成方便;方便支持離線操作;二次開發(fā)容易。完全以C/S結(jié)構(gòu)設(shè)計(jì)、開發(fā)程序,然后很容易移植在JavaWebStart平臺(tái)上。要進(jìn)行前后臺(tái)的GUI的客戶端開發(fā)比純Web要效率高得多。運(yùn)行時(shí)脫離瀏覽器,運(yùn)行穩(wěn)定,瀏覽器的bug不會(huì)給應(yīng)用程序帶來影響。JavaWebStart技術(shù)主要不足:首次需要下載;客戶端應(yīng)用存在本地,占一點(diǎn)硬盤存儲(chǔ)空間;Java

AppletJavaApplet(小應(yīng)用程序)是采用Java創(chuàng)建的基于HTML的程序。含有Applet的網(wǎng)頁的HTML文件代碼中帶有<applet>和</applet>這樣一對(duì)標(biāo)記,當(dāng)支持Java的網(wǎng)絡(luò)瀏覽器遇到這對(duì)標(biāo)記時(shí),就將下載相應(yīng)的小應(yīng)用程序代碼并在本地計(jì)算機(jī)上執(zhí)行該Applet。這些程序是直接嵌入到頁面中,由支持Java的瀏覽器解釋執(zhí)行能夠產(chǎn)生特殊效果的程序。它可以大大提高Web頁面的交互能力和動(dòng)態(tài)執(zhí)行能力。<html>...<APPLETARCHIVE="DAVExplorer.jar"CODE="edu.uci.ics.DAVExplorer.AppletMain.class"WIDTH=800HEIGHT=400><PARAMNAME=uriVALUE="http://dav-url/webdav/"><PARAMNAME=usernameVALUE="username"><PARAMNAME=passwordVALUE="password"><PARAMNAME=proxyVALUE="proxy-url"></APPLET>...</html>詳細(xì)例子可以參見:/ch/twaver.php?p_id=90Java

Applet的安全限制為了防止安全問題出現(xiàn),JavaApplet如果沒有經(jīng)過數(shù)字簽名,那么訪問客戶端下載后會(huì)受到使用限制,主要體現(xiàn)在對(duì)客戶端的本地資源的訪問受限:如無法訪問本地文件等??梢酝ㄟ^在Applet中加入數(shù)字簽名的方式實(shí)現(xiàn),只要在Applet運(yùn)行時(shí)用戶選擇信任這個(gè)簽名,那么這個(gè)Applet就擁有了訪問本機(jī)資源的權(quán)限。如果一個(gè)簽名沒有被CA的證書認(rèn)證,就會(huì)提示說“該應(yīng)用程序的數(shù)字簽名無法驗(yàn)證”,如果證書是驗(yàn)證過的,對(duì)話框就會(huì)是詢問你是否信任“某公司”。無論簽名是否已經(jīng)被驗(yàn)證,只要用戶選擇信任就可以解除安全限制。Java

Applet優(yōu)缺點(diǎn)JavaApplet的優(yōu)勢(shì)是:B/S結(jié)構(gòu),客戶端應(yīng)用是動(dòng)態(tài)下載的;和WebStart技術(shù)一樣,其維護(hù)主要在服務(wù)器端;比純Web技術(shù)的交互性好;

JavaApplet的不足是:

動(dòng)態(tài)從服務(wù)端裝載類文件到瀏覽器內(nèi)的Java虛擬機(jī),導(dǎo)致響應(yīng)藥比GUI慢,響應(yīng)性稍差;由于不同的IE內(nèi)置的JDK不一致,因此需要下載與應(yīng)用匹配的JDK安裝到客戶端并要安裝插件(plug-in);因運(yùn)行于瀏覽器內(nèi),因此受瀏覽器的穩(wěn)定性影響,或?yàn)g覽器的bug影響,其穩(wěn)定性要比GUI差很多;由于運(yùn)行于瀏覽器內(nèi),所以瀏覽器會(huì)占據(jù)客戶端不少的內(nèi)存,大應(yīng)用時(shí)會(huì)造成內(nèi)存溢出。與客戶端其它應(yīng)用集成基本不可能,因?yàn)槭転g覽器隔離。Java客戶層技術(shù)比較

純WebClient(JavaScript等)AppletGUIClientWebStart二次開發(fā)效率低較高高高維護(hù):客戶端安裝零安裝少量安裝(JDK,Plug-in)手工安裝自動(dòng)安裝維護(hù):客戶端更新無需極少打補(bǔ)丁或重裝自動(dòng)更新交互性差一般好同GUI響應(yīng)性差(無連接方式與服務(wù)端交互)一般好(面向連接方式與服務(wù)端交互)同GUI客戶端性能差(JavaScript解析)一般(需動(dòng)態(tài)從服務(wù)端下載class)好(客戶端直接加載)同GUI操作效率低一般高同GUI穩(wěn)定性差(依賴IE)差(依賴IE)好同GUI誤操作易發(fā)生易發(fā)生少發(fā)生同GUI客戶端應(yīng)用集成難(通過ActiveX)最難(運(yùn)行于IE內(nèi))易(直接應(yīng)用集成)同GUI離線操作難(依賴IE)難(依賴IE)可能(脫離瀏覽器)同GUI內(nèi)容Java語言簡(jiǎn)介1JavaEE體系結(jié)構(gòu)2客戶層技術(shù)3Web層技術(shù)4業(yè)務(wù)層技術(shù)5持久層技術(shù)6應(yīng)用服務(wù)器介紹7SSH開源框架8其它9Servlet簡(jiǎn)介瀏覽器訪問網(wǎng)頁的過程就是瀏覽器通過HTTP協(xié)議與Web服務(wù)器交互的過程.針對(duì)純HTML的靜態(tài)網(wǎng)頁,只須把資源放在Web服務(wù)器上供瀏覽即可.隨著應(yīng)用的發(fā)展,客戶端與服務(wù)器需要?jiǎng)討B(tài)交互,為了實(shí)現(xiàn)這一目標(biāo),需要開發(fā)一個(gè)遵循HTTP協(xié)議的服務(wù)器端應(yīng)用軟件來處理各種用戶請(qǐng)求。什么是Servlet:1、Servlet是一種獨(dú)立于操作系統(tǒng)和協(xié)議的服務(wù)器端Java應(yīng)用程序.2、Servlet能動(dòng)態(tài)響應(yīng)客戶端請(qǐng)求,生成動(dòng)態(tài)的Web頁面,從而擴(kuò)展服務(wù)器的功能.3、Servlet由Servlet容器管理(Servlet的運(yùn)行環(huán)境),Tomcat就是一個(gè)常用的Servlet容器。Servlet工作流程Servlet1Servlet2HTTPServerWeb應(yīng)用服務(wù)器(如Tomcat)Servlet容器Web瀏覽器客戶端HTTP請(qǐng)求HTTP響應(yīng)業(yè)務(wù)Bean①客戶端(瀏覽器)向Web服務(wù)器發(fā)送一個(gè)基于HTTP協(xié)議的請(qǐng)求.②HTTPServer接收到該請(qǐng)求,并將請(qǐng)求交給Servlet容器處理.③Servlet容器根據(jù)Servlet配置來查找或創(chuàng)建Servlet實(shí)例,并執(zhí)行該Servlet,Servlet容器必須把客戶端請(qǐng)求和響應(yīng)封裝成Servlet請(qǐng)求和響應(yīng)對(duì)象傳給Servlet.④Servlet使用請(qǐng)求對(duì)象獲取客戶端的信息,比如IP地址、請(qǐng)求的參數(shù)等,并執(zhí)行特定業(yè)務(wù)邏輯;使用響應(yīng)對(duì)象向客戶端發(fā)送業(yè)務(wù)執(zhí)行的結(jié)果.⑤Servlet處理完請(qǐng)求后,通過HTTPServer將最終展現(xiàn)結(jié)果返回到客戶端瀏覽器Servlet展現(xiàn)動(dòng)態(tài)網(wǎng)頁示例publicclasstestextendsHttpServlet{protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{PrintWriterout=response.getWriter();

out.println("<HTML>"+"<HEAD>" +"</HEAD>"+"<BODYBGCOLOR=red>"+"<CENTER><H1>HelloWorld!</H1></CENTER>"+"</BODY>"+"</HTML>");}}HTTPServer<HTML><HEAD><TITLE>Haha</TITLE></HEAD><BODYBGCOLOR=red><CENTER><H1>HelloWorld!</H1></CENTER></BODY></HTML>返回的HTTP響應(yīng)內(nèi)容Servlet容器JSP簡(jiǎn)介JSP(JavaServerPage)是sun公司開發(fā)的一種服務(wù)器端腳本語言,是一種動(dòng)態(tài)網(wǎng)頁技術(shù)標(biāo)準(zhǔn)。JSP本質(zhì)上就是把Java代碼嵌套到HTML網(wǎng)頁中為用戶提供動(dòng)態(tài)數(shù)據(jù),當(dāng)用戶訪問該JSP頁面時(shí),JSP容器將頁面編譯執(zhí)行,可以根據(jù)其中的動(dòng)態(tài)代碼的運(yùn)行結(jié)果生成對(duì)應(yīng)的結(jié)果HTML代碼,并在客戶端的瀏覽器中顯示出來。用JSP開發(fā)的Web應(yīng)用是跨平臺(tái)的,部署在Tomcat等Web應(yīng)用服務(wù)器中運(yùn)行。JSP最終會(huì)被轉(zhuǎn)換成標(biāo)準(zhǔn)的Servlet(JSP的實(shí)質(zhì)仍然是servlet)。JSP的目的在于簡(jiǎn)化表示層的表示。<%@pagelanguage="java"import="java.util.*"pageEncoding="gb2312"%><html><body>這是一個(gè)JSP示例頁面<%嵌入Java語句%>

...</body></html>test.jspJSP和Servlet區(qū)別通俗的講,JSP是往HTML里嵌Java代碼,Servlet是在Java代碼里輸出HTML元素。也就是說,JSP將業(yè)務(wù)層混合到表示層中,而Servlet將表示層混合到業(yè)務(wù)層中。Servlet用來寫業(yè)務(wù)層是很強(qiáng)大的,但是對(duì)于寫表示層就很不方便。JSP則主要是為了方便寫表示層而設(shè)計(jì)的,當(dāng)然也可以寫業(yè)務(wù)層。response.setContentType("text/html;charset=gb2312");PrintWriterout=response.getWriter();out.println("<HTML>");out.println("<HEAD><TITLE>AServlet</TITLE></HEAD>");out.println("<BODY>");for(inti=1;i<=5;i++){

out.print("

<fontsize=");

out.print(i+">");

out.println("測(cè)試JSP</font><br>");}out.println("</BODY>");out.println("</HTML>");out.flush();out.close();<%@pagelanguage="java“pageEncoding="gb2312"%><HTML><HEAD><TITLE>AServlet</TITLE></HEAD><body><%for(inti=1;i<=5;i++){%>

<fontsize=<%=i%>>測(cè)試JSP</font><br><%

}%></body></HTML>Servlet實(shí)現(xiàn)jsp實(shí)現(xiàn)JSP與Servlet關(guān)系由于HttpServlet大多是用來響應(yīng)HTTP請(qǐng)求,并返回Web頁面,所以不可避免地,在編寫servlet時(shí)會(huì)涉及大量的HTML內(nèi)容,這給servlet書寫效率和可讀性帶來很大障礙。JSP使用HTML的書寫格式,在適當(dāng)?shù)牡胤郊尤隞ava代碼片斷,將程序員從復(fù)雜的HTML中解放出來,更專注于業(yè)務(wù)處理方面的內(nèi)容。JSP在首次被訪問的時(shí)候被應(yīng)用服務(wù)器轉(zhuǎn)換為servlet,在以后的運(yùn)行中,容器直接調(diào)用這個(gè)servlet,而不再訪問JSP頁面。Struts開源框架Struts是Apache下的一個(gè)開源項(xiàng)目,它通過采用Servlet/JSP技術(shù),實(shí)現(xiàn)了基于Java

Web應(yīng)用的Model-View-Controller〔MVC〕設(shè)計(jì)模式的應(yīng)用框架。在JavaEE的Web應(yīng)用發(fā)展的初期,除了使用Servlet技術(shù)以外,普遍是在JSP的源代碼中,采用HTML與Java代碼混合的方式進(jìn)行開發(fā)。因?yàn)檫@兩種方式不可避免的要把表現(xiàn)與業(yè)務(wù)邏輯代碼混合在一起,給前期開發(fā)與后期維護(hù)帶來巨大的復(fù)雜度。為了擺脫上述的約束與局限,把業(yè)務(wù)邏輯代碼從表現(xiàn)層中清晰的分離出來,2000年,CraigMcClanahan采用了MVC的設(shè)計(jì)模式開發(fā)Struts。后來該框架產(chǎn)

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論