Java Web整合開(kāi)發(fā)王者歸來(lái)_第1頁(yè)
Java Web整合開(kāi)發(fā)王者歸來(lái)_第2頁(yè)
Java Web整合開(kāi)發(fā)王者歸來(lái)_第3頁(yè)
Java Web整合開(kāi)發(fā)王者歸來(lái)_第4頁(yè)
Java Web整合開(kāi)發(fā)王者歸來(lái)_第5頁(yè)
已閱讀5頁(yè),還剩4頁(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、第1章 Java Web開(kāi)發(fā)概述在計(jì)算機(jī)發(fā)展歷史上,網(wǎng)絡(luò)的出現(xiàn)是個(gè)重要的里程碑。網(wǎng)絡(luò)在計(jì)算機(jī)技術(shù)中發(fā)揮著越來(lái)越重要的作用。如果說(shuō)上個(gè)世紀(jì)是桌面程序的時(shí)代,那么本世紀(jì)無(wú)疑就是網(wǎng)絡(luò)程序的 時(shí)代。1.1 Web相關(guān)概念Web程序也就是一般所說(shuō)的網(wǎng)站,由服務(wù)器、客戶端瀏覽器以及網(wǎng)絡(luò)組成。Web程序的好處是使用簡(jiǎn)單,不需要安裝、學(xué)習(xí),有一臺(tái)電腦、一根網(wǎng)線就可以使用。截至2006年底,互聯(lián)網(wǎng)上的網(wǎng)站數(shù)量已經(jīng)超過(guò)了1億大關(guān),中國(guó)的網(wǎng)站也已經(jīng)有200萬(wàn)之多了,可見(jiàn)網(wǎng)絡(luò)程序的影響力。但Web程序又不是一般意義上的網(wǎng)站。網(wǎng)站的目的是提供信息服務(wù),重在內(nèi)容,程序往往比較簡(jiǎn)單。但一個(gè)商用的Web程序往往比較復(fù)雜,背后

2、結(jié)合數(shù)據(jù)庫(kù)等技術(shù),例如ERP系統(tǒng)、CRM系統(tǒng)、財(cái)務(wù)系統(tǒng)、網(wǎng)上辦公、網(wǎng)上銀行、在線業(yè)務(wù)辦理等。下面從專業(yè)上解釋一下Web程序相關(guān)的幾個(gè)概念。1.1.1 胖客戶端程序RCP桌面程序(Desktop Program)也叫胖客戶端程序(Rich Client Program,簡(jiǎn)稱RCP)。因?yàn)樽烂娉绦蛐枰惭b到計(jì)算機(jī)上才能運(yùn)行,并會(huì)導(dǎo)致計(jì)算機(jī)軟件的體積越來(lái)越大,因此人們形象地稱桌面程序?yàn)榕挚蛻舳顺绦?。?jì)算機(jī)上安裝的任何程序都是RCP。例如辦公軟件Word、Excel,聊天工具QQ、MSN,播放軟件Media Player、Flash Player、圖像制作軟件PhotoShop等。RCP的優(yōu)點(diǎn)很明顯,

3、只要安裝上了軟件,就能高效地使用軟件的功能。RCP的缺點(diǎn)也很明顯,就是需要安裝才能使用,并且會(huì)占用大量的硬盤(pán)資源。如果某個(gè)公司的1000臺(tái)電腦都要使用Word功能,那么這1000臺(tái)電腦都要安裝Word。1.1.2 瘦客戶端程序TCP與胖客戶端程序相對(duì)的是瘦客戶端程序。瘦客戶端程序(Thin Client Program,簡(jiǎn)稱TCP)一般表現(xiàn)為Web程序,它的特點(diǎn)是不需要在客戶端安裝便能使用,只要計(jì)算機(jī)能上網(wǎng)就行。瘦客戶端程序?qū)④浖δ艿闹攸c(diǎn)集中放到了服務(wù)器上,服務(wù)器端只需要提供服務(wù)。目前流行的概念“軟件即服務(wù)”SAAS(Software-as-a-service),就是一種非常流行的瘦客戶端應(yīng)

4、用。它是通過(guò)Internet提供軟件的模式,用戶不用再購(gòu)買(mǎi)軟件,而改用向提供商租用基于Web的軟件,來(lái)管理企業(yè)經(jīng)營(yíng)活動(dòng),且無(wú)需對(duì)軟件進(jìn)行維護(hù)、升級(jí)。目前,越來(lái)越多的Web 2.0概念的應(yīng)用也都是瘦客戶端的應(yīng)用,隨著技術(shù)的不斷進(jìn)步,瘦客戶端程序的體驗(yàn)也越來(lái)越豐富。Google已經(jīng)提供了許多功能強(qiáng)大的Web程序,例如在線Word、Excel、PDF等功能,用于取代桌面程序。相信在不久的將來(lái),會(huì)有越來(lái)越多的TCP應(yīng)用的出現(xiàn)。1.1.3 B/S與C/S結(jié)構(gòu)按照是否需要訪問(wèn)網(wǎng)絡(luò),程序可分為網(wǎng)絡(luò)程序與非網(wǎng)絡(luò)程序。其中網(wǎng)絡(luò)程序又可分為B/S結(jié)構(gòu)與C/S結(jié)構(gòu)。C/S是指客戶端(Client)/服務(wù)器(Serv

5、er)模式。這種模式的客戶端中需要安裝一個(gè)RCP程序。RCP程序負(fù)責(zé)與服務(wù)器進(jìn)行數(shù)據(jù)交換。一般的網(wǎng)絡(luò)程序都是C/S結(jié)構(gòu),例如QQ、MSN、PP Live、迅雷等、eMule等。以往基于客戶、服務(wù)器的C/S結(jié)構(gòu)應(yīng)用程序存在很多缺點(diǎn),它需要安裝客戶端程序。當(dāng)應(yīng)用程序升級(jí)時(shí),客戶端同樣需要下載升級(jí)程序才能使用新的功能。這樣無(wú)形中會(huì)給客戶端帶來(lái)一定的麻煩,限制了該應(yīng)用程序的廣泛使用。當(dāng)今更多的下載軟件、即時(shí)通信軟件等都是C/S結(jié)構(gòu)的應(yīng)用程序。B/S是指瀏覽器(Browser)/服務(wù)器(Server)模式。一般的網(wǎng)站都是B/S結(jié)構(gòu)的,例如Google、Baidu。Web應(yīng)用程序的訪問(wèn)不需要安裝客戶端程序

6、,可以通過(guò)任一款瀏覽器(例如IE或者Firefox)來(lái)訪問(wèn)各類Web應(yīng)用程序。當(dāng)Web應(yīng)用程序進(jìn)行升級(jí)時(shí),并不需要在客戶端做任何更改。和C/S結(jié)構(gòu)的應(yīng)用程序相比,Web應(yīng)用程序可以在網(wǎng)絡(luò)上更加廣泛地進(jìn)行傳播和使用。1.2 Web開(kāi)發(fā)背景知識(shí)在了解如何開(kāi)發(fā)Web應(yīng)用程序之前,很有必要首先了解一下這些應(yīng)用程序的運(yùn)行平臺(tái)和環(huán)境。下面就重點(diǎn)介紹Web應(yīng)用程序所涉及的Web開(kāi)發(fā)的背景相關(guān)知識(shí),包括基本訪問(wèn)原理,HTTP協(xié)議,Web瀏覽器以及Web服務(wù)器。1.2.1 Web訪問(wèn)基本原理下面我們回想一下平時(shí)瀏覽網(wǎng)頁(yè)的過(guò)程中,瀏覽器和服務(wù)器端都發(fā)生了什么變化,網(wǎng)站是怎么實(shí)現(xiàn)請(qǐng)求和響應(yīng)功能的。圖1.1清晰地顯示

7、了瀏覽器訪問(wèn)Web服務(wù)器的整個(gè)過(guò)程。(1)用戶打開(kāi)瀏覽器(如IE、Firefox等),輸入網(wǎng)站的URL地址,也就是通常所說(shuō)的網(wǎng)址。這個(gè)地址告訴瀏覽器要訪問(wèn)互聯(lián)網(wǎng)中的哪臺(tái)主機(jī)。圖1.1 瀏覽器訪問(wèn)Web過(guò)程(2)瀏覽器尋找到指定的主機(jī)之后,向Web服務(wù)器發(fā)出請(qǐng)求(request)。(3)Web服務(wù)器接受請(qǐng)求并做出相應(yīng)的處理,生成處理結(jié)果,大多數(shù)生成HTML格式,也有其他響應(yīng)的格式。(4)服務(wù)器把響應(yīng)的結(jié)果返回發(fā)送給瀏覽器。(5)瀏覽器接收到對(duì)應(yīng)的響應(yīng)結(jié)果后,在瀏覽器中顯示響應(yīng)結(jié)果,比如Web頁(yè)面。1.2.2 HTTP超文本傳輸協(xié)議了解了瀏覽器與Web服務(wù)器之間的交互關(guān)系之后,再來(lái)認(rèn)識(shí)一下負(fù)責(zé)瀏覽

8、器與Web服務(wù)器之間交互的橋梁:HTTP超文本傳輸協(xié)議。HTTP協(xié)議是瀏覽器和服務(wù)器之間的應(yīng)用層通信協(xié)議,它是基于TCP/IP之上的協(xié)議,不僅保證正確傳輸超文本文檔,還確定傳輸文檔中的哪一部分,以及哪一部分內(nèi)容首先顯示(如文本先與圖形)等。在WWW中,“客戶”與“服務(wù)器”是一個(gè)相對(duì)的概念,只存在于一個(gè)特定的連接期間,即在某個(gè)連接中的客戶在另一個(gè)連接中可能作為服務(wù)器。WWW服務(wù)器運(yùn)行時(shí),一直在TCP80端口(WWW的默認(rèn)端口)監(jiān)聽(tīng),等待連接的出現(xiàn)。下面介紹基于HTTP協(xié)議的客戶/服務(wù)器模式的信息交換過(guò)程,它分4個(gè)過(guò)程:建立連接、發(fā)送請(qǐng)求信息、發(fā)送響應(yīng)信息、關(guān)閉連接。q 建立連接:連接的建立是通過(guò)

9、申請(qǐng)?zhí)捉幼郑⊿ocket)實(shí)現(xiàn)的??蛻舸蜷_(kāi)一個(gè)套接字并把它約束在一個(gè)端口上,如果成功,就相當(dāng)于建立了一個(gè)虛擬文件。以后就可以在該虛擬文件上寫(xiě)數(shù)據(jù)并通過(guò)網(wǎng)絡(luò)向外傳送。q 發(fā)送請(qǐng)求:打開(kāi)一個(gè)連接后,客戶機(jī)把請(qǐng)求消息送到服務(wù)器的停留端口上,完成提出請(qǐng)求動(dòng)作。HTTP/1.0請(qǐng)求消息的格式為:請(qǐng)求消息=請(qǐng)求行(通用信息|請(qǐng)求頭|實(shí)體頭) CRLF實(shí)體內(nèi)容請(qǐng)求行=方法請(qǐng)求URLHTTP版本號(hào)CRLF方法=GET|HEAD|POST|擴(kuò)展方法URL=協(xié)議名稱+宿主名+目錄與文件名請(qǐng)求行中的方法描述指定資源中應(yīng)該執(zhí)行的動(dòng)作,常用的方法有GET、HEAD和POSTq 發(fā)送響應(yīng):服務(wù)器在處理完客戶的請(qǐng)求之后,要

10、向客戶機(jī)發(fā)送響應(yīng)消息。HTTP/1.0的響應(yīng)消息格式如下:響應(yīng)消息=狀態(tài)行(通用信息頭|響應(yīng)頭|實(shí)體頭)CRLF實(shí)體內(nèi)容狀 態(tài) 行=HTTP版本號(hào)狀態(tài)碼原因敘述狀態(tài)碼表示響應(yīng)類型1:保留;2:表示請(qǐng)求成功地接收;3:完成請(qǐng)求客戶需進(jìn)一步細(xì)化請(qǐng)求;4:客戶錯(cuò)誤;5:服務(wù)器錯(cuò)誤。響應(yīng)頭的信息包括:服務(wù)程序名,通知客戶請(qǐng)求的URL需要認(rèn)證,請(qǐng)求的資源何時(shí)能使用。q 關(guān)閉連接:客戶和服務(wù)器雙方都可以通過(guò)關(guān)閉套接字來(lái)結(jié)束TCP/IP對(duì)話。%提示:網(wǎng)絡(luò)連接是比較底層的技術(shù),各種Web開(kāi)發(fā)技術(shù)已經(jīng)對(duì)細(xì)節(jié)進(jìn)行了封裝,開(kāi)發(fā)者只需要了解即可。1.2.3 Web瀏覽器目前,有很多Web瀏覽器,但是比較普及和流行的為

11、Microsoft公司的Internet Explorer(IE)和Mozilla基金會(huì)的Firefox瀏覽器。這兩個(gè)瀏覽器都能很好地支持最新、最好的HTML表示標(biāo)準(zhǔn),以及各種HTML擴(kuò)展功能。另外,它們也都能支持JavaScript腳本語(yǔ)言以及類似Applet的Java小程序運(yùn)行。其他的瀏覽器還有傲游瀏覽器(Maxthon)、騰訊TT瀏覽器、Opera,以及Google最新推出的谷歌瀏覽器(Chrome)等。1.2.4 Web服務(wù)器在服務(wù)器端,與通信相關(guān)的處理都是由服務(wù)器軟件負(fù)責(zé),這些服務(wù)器軟件都由第三方的軟件廠商提供,開(kāi)發(fā)人員只需要把功能代碼部署在Web服務(wù)器中,客戶端就可以通過(guò)瀏覽器訪問(wèn)

12、到這些功能代碼,從而實(shí)現(xiàn)向客戶提供的服務(wù),下面簡(jiǎn)單介紹常用的服務(wù)器。q IIS是微軟提供的一種Web服務(wù)器,提供對(duì)ASP語(yǔ)言的良好支持,通過(guò)插件的安裝,也可以提供對(duì)PHP語(yǔ)言的支持。q Apache服務(wù)器是由Apache基金組織提供的一種Web服務(wù)器,其特長(zhǎng)是處理靜態(tài)頁(yè)面,對(duì)于靜態(tài)頁(yè)面的處理效率非常高。q Tomcat也是Apache基金組織提供的一種Web服務(wù)器,提供對(duì)JSP和Servlet的支持,通過(guò)插件的安裝,同樣可以提供對(duì)PHP語(yǔ)言的支持,但是Tomcat只是一個(gè)輕量級(jí)的Java Web容器,像EJB這樣的服務(wù)在Tomcat中是不能運(yùn)行的。q JBoss是一個(gè)開(kāi)源的重量級(jí)的Java W

13、eb服務(wù)器,在JBoss中,提供對(duì)J2EE各種規(guī)范的良好支持,而且JBoss通過(guò)了Sun公司的J2EE認(rèn)證,是Sun公司認(rèn)可的J2EE容器。q 另外J2EE的服務(wù)器還有BEA的Weblogic和IBM的WebSphere等,適合大型的商業(yè)應(yīng)用。這些產(chǎn)品的性能都是非常優(yōu)秀的,可以提供對(duì)J2EE的良好支持。用戶可以根據(jù)自己的需要選擇合適的服務(wù)器產(chǎn)品。1.3 Web開(kāi)發(fā)技術(shù)發(fā)展歷史在了解了Web應(yīng)用程序的基本背景知識(shí)之后,下面將重點(diǎn)介紹Web應(yīng)用程序的開(kāi)發(fā)方法和過(guò)程,了解開(kāi)發(fā)Web應(yīng)用程序的各類技術(shù),以及這些技術(shù)的發(fā)展過(guò)程和優(yōu)缺點(diǎn)。1.3.1 傳統(tǒng)的Web服務(wù)器模式開(kāi)發(fā)傳統(tǒng)的Web應(yīng)用開(kāi)發(fā)僅僅能夠提

14、供有限的靜態(tài)Web頁(yè)面(HTML靜態(tài)頁(yè)面),每個(gè)Web頁(yè)面的顯示內(nèi)容是保持不變的。這種模式開(kāi)發(fā)的Web應(yīng)用很不利于系統(tǒng)的擴(kuò)展,如果網(wǎng)站需要提供更多新的信息資料時(shí),就只能修改以前的頁(yè)面或者重新編寫(xiě)HTML頁(yè)面并提供鏈接。而且Web網(wǎng)站的信息更新周期一般都比較長(zhǎng)(因?yàn)樾枰匦戮帉?xiě)代碼)??偨Y(jié)起來(lái),傳統(tǒng)Web應(yīng)用開(kāi)發(fā)模式存在如下多個(gè)不足:q 不能提供及時(shí)信息,頁(yè)面上提供的都是靜態(tài)不變的信息。q 當(dāng)需要添加新的信息時(shí),必須重新編寫(xiě)HTML文件。q 由于HTML頁(yè)面是靜態(tài)的,所以并不能根據(jù)用戶的需求提供不同的信息(包括不同的內(nèi)容和格式),并不能滿足多樣性的需求。靜態(tài)頁(yè)面的應(yīng)用程序存在著這么多的缺點(diǎn),決定

15、了這種模式必然不能適應(yīng)大中型系統(tǒng)和商業(yè)需求。因此,很快因特網(wǎng)軟件工程師轉(zhuǎn)向了CGI(Common Gateway Interface,公共網(wǎng)關(guān)接口),系統(tǒng)能夠提供頁(yè)面的動(dòng)態(tài)生成。1.3.2 動(dòng)態(tài)展現(xiàn)頁(yè)面技術(shù)當(dāng)發(fā)布全部為靜態(tài)頁(yè)面的Web應(yīng)用程序(即傳統(tǒng)Web服務(wù)器模式開(kāi)發(fā))時(shí),隨著企業(yè)業(yè)務(wù)的增多,HTML頁(yè)面程序會(huì)越來(lái)越多,非常不利于后期代碼的維護(hù),而且新信息發(fā)布過(guò)程非常麻煩。所以建立一個(gè)動(dòng)態(tài)Web應(yīng)用程序就顯得非常重要。一方面可以根據(jù)訪問(wèn)者的不同請(qǐng)求返回不同的訪問(wèn)信息,即滿足服務(wù)的多樣性;另一方面,可以直接通過(guò)后臺(tái)管理頁(yè)面發(fā)布和修改信息即可,再也不需要修改頁(yè)面程序或者添加更多頁(yè)面程序。動(dòng)態(tài)We

16、b應(yīng)用程序的建立,可以給客戶提供及時(shí)信息以及多樣化服務(wù),可以根據(jù)客戶不同請(qǐng)求,動(dòng)態(tài)地返回不同需求信息。下面將一一介紹創(chuàng)建動(dòng)態(tài)頁(yè)面的方法和技術(shù)。1.3.3 CGI實(shí)現(xiàn)頁(yè)面的動(dòng)態(tài)生成實(shí)現(xiàn)動(dòng)態(tài)輸出的CGI程序是運(yùn)行在服務(wù)器端的,根據(jù)不同客戶端請(qǐng)求輸出相應(yīng)的HTML頁(yè)面,然后Web服務(wù)器再把這個(gè)靜態(tài)頁(yè)面返回給瀏覽器作為客戶端的響應(yīng)。具體的CGI操作流程如圖1.2所示。首先用戶需要在瀏覽器地址欄輸入U(xiǎn)RL地址或者單擊鏈接來(lái)調(diào)用相應(yīng)的CGI程序,例如圖1.2 CGI的操作過(guò)程%注意:CGI程序在服務(wù)器端執(zhí)行,并可以和Web服務(wù)器在同一個(gè)主機(jī)上。最流行的CGI語(yǔ)言是Perl和shell腳本,但是也可以使用C

17、、C+以及Java等語(yǔ)言進(jìn)行編寫(xiě)。CGI可以訪問(wèn)存儲(chǔ)數(shù)據(jù)庫(kù)中的數(shù)據(jù)或者其他系統(tǒng)中的文件,實(shí)現(xiàn)動(dòng)態(tài)生成的效果。雖然CGI實(shí)現(xiàn)了網(wǎng)站動(dòng)態(tài)性,但是CGI也存在很多的不足之處:q 需要為每個(gè)請(qǐng)求啟動(dòng)一個(gè)操作CGI程序的系統(tǒng)進(jìn)程。如果請(qǐng)求非常頻繁,這將會(huì)帶來(lái)很大的開(kāi)銷(xiāo)。q 需要為每個(gè)請(qǐng)求加載和運(yùn)行一個(gè)CGI程序,這也將帶來(lái)很大的開(kāi)銷(xiāo)。q 需要重復(fù)編寫(xiě)處理網(wǎng)絡(luò)協(xié)議的代碼以及進(jìn)行編碼,這些工作都是非常耗時(shí)的。前面已經(jīng)介紹過(guò)了Java語(yǔ)言可以用來(lái)編寫(xiě)CGI程序。但遺憾的是,使用Java編寫(xiě)的CGI程序執(zhí)行效率更加低下。這是因?yàn)橐獔?zhí)行一個(gè)Java編寫(xiě)的CGI程序,除了首先需要啟動(dòng)一個(gè)系統(tǒng)進(jìn)程之外,還要在進(jìn)程中啟

18、動(dòng)一個(gè)JVM(Java Virtual Machine,Java虛擬機(jī)),然后才能在JVM中執(zhí)行Java CGI程序(讀者應(yīng)該對(duì)Java程序的運(yùn)行機(jī)制有所了解)。為了解決CGI所留下來(lái)的問(wèn)題,Java推出了Servlet規(guī)范。在節(jié)將重點(diǎn)向讀者介紹Servlet的基本原理。1.3.4 Java Servlet:改進(jìn)的CGI由前面討論知道,使用Java編寫(xiě)的CGI程序需要為每個(gè)請(qǐng)求都啟動(dòng)一個(gè)系統(tǒng)進(jìn)程以及JVM,這大大降低了執(zhí)行效率。如果能有辦法取消這些開(kāi)銷(xiāo),即只需要啟動(dòng)一個(gè)操作系統(tǒng)進(jìn)程以及一個(gè)JVM映像,基于Java的CGI就能得到很好的改善。Servlet正是基于這樣的想法才產(chǎn)生的。另外,可知J

19、ava可以在運(yùn)行的時(shí)候動(dòng)態(tài)地進(jìn)行加載,所以可以利用這樣的功能加載新的Java代碼來(lái)處理新的請(qǐng)求。這樣就可以只啟動(dòng)一次服務(wù)器進(jìn)程,而且只需要加載一次JVM,之后這個(gè)JVM再加載另外的類?;谶@樣的思想而出現(xiàn)的Servlet執(zhí)行效率就高得多了。和傳統(tǒng)的CGI程序相比,Servlet有如下幾個(gè) 優(yōu)點(diǎn):q 只需要啟動(dòng)一個(gè)操作系統(tǒng)進(jìn)程以及加載一個(gè)JVM,大大降低了系統(tǒng)的開(kāi)銷(xiāo)。q 如果多個(gè)請(qǐng)求需要做同樣處理的時(shí)候,這時(shí)只需要加載一個(gè)類,這也大大降低了開(kāi)銷(xiāo)。q 所有動(dòng)態(tài)加載的類可以實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)協(xié)議以及請(qǐng)求解碼的代碼共享,大大降低了工 作量。q Servlet能夠直接和Web服務(wù)器交互,而普通的CGI程序不能。

20、Servlet還能夠在各個(gè)程序之間共享數(shù)據(jù),使得數(shù)據(jù)庫(kù)連接池之類的功能很容易實(shí)現(xiàn)。Sun公司在上世紀(jì)90年代末就發(fā)布了基于Servlet的Web服務(wù)器。為了確保加載的各個(gè)類之間不起沖突,已經(jīng)建立了一個(gè)稱為Java Servlet API(應(yīng)用編程接口)的編碼標(biāo)準(zhǔn)?,F(xiàn)在基本上所有的服務(wù)器都遵循這個(gè)編碼標(biāo)準(zhǔn),所以Servlet有很好的移植性?,F(xiàn)在的Web服務(wù)器(例如Tomcat)已經(jīng)集成了Servlet容器,Servlet容器負(fù)責(zé)管理加載、卸載、重新加載和執(zhí)行Servlet代碼等操作。看下面一個(gè)比較典型的Servlet Java源代碼:public class HelloWorldTest ext

21、ends HttpServlet public void doTest(HttpServletRequest request,HttpServletResponse reponse) throws IOException,ServletException String msg = "登錄成功"/ 頁(yè)面內(nèi)容 response.setContentType("text/html");/ 設(shè)置ContentType類型 PrintWriter out = response.getWriter();/ 使用out向?yàn)g覽器輸出 out.println("

22、<html>"); out.println("<head>"); out.println("<title>JSP 2.0 Test</title>"); out.println("</head>"); out.println("<body>"); out.println(msg); out.println("</body>"); out.println("</html>"

23、);從這段代碼可以看出,Servlet重復(fù)使用了PrintWriter.println()方法來(lái)輸出相應(yīng)的HTML頁(yè)面,以達(dá)到動(dòng)態(tài)生成HTML頁(yè)面的效果。雖然Servlet改變了傳統(tǒng)CGI程序的缺點(diǎn),但是它也有不足的地方:Servlet可以建立動(dòng)態(tài)生成的網(wǎng)頁(yè),而網(wǎng)頁(yè)中可以包含從服務(wù)器端的Java對(duì)象所獲得的數(shù)據(jù)。但是Servlet生成網(wǎng)頁(yè)的方法是在Java類中嵌入HTML標(biāo)簽和表達(dá)式。也就是說(shuō)對(duì)HTML做一個(gè)小小的改動(dòng)時(shí),都需要修改和重新編譯Servlet源文件,然后重新部署到Servlet容器中。或許設(shè)計(jì)HTML頁(yè)面和編寫(xiě)Servlet代碼的人不是同一個(gè)人,這就使得修改Servlet變得非常

24、 麻煩。1.3.5 JSP:Servlet的模板Java Server Pages(JSP)是一種實(shí)現(xiàn)普通靜態(tài)HTML和動(dòng)態(tài)HTML混合編碼的技術(shù),它是Servlet API的一個(gè)擴(kuò)展。由于JSP頁(yè)面在編譯成Servlet之前也是可以使用的,所以它具有了Servlet的所有優(yōu)點(diǎn),包括訪問(wèn)Java API。又由于JSP是嵌入到Servlet中關(guān)于應(yīng)用程序的一般表達(dá)代碼,所以可以把它看成一種“徹底”的Servlet。訪問(wèn)一個(gè)JSP網(wǎng)站的過(guò)程如圖1.3所示。圖1.3 JSP頁(yè)面訪問(wèn)示意圖JSP技術(shù)的設(shè)計(jì)目的是使得構(gòu)造基于Web的應(yīng)用程序更加容易和快捷,而這些應(yīng)用程序能夠與各種Web服務(wù)器、應(yīng)用服務(wù)器、瀏覽器和開(kāi)發(fā)工具很好地共同工作。JSP網(wǎng)頁(yè)可以非常容易地與靜態(tài)模板結(jié)合,包括HTML或XML(Extensible Markup Language,簡(jiǎn)稱XML)片段,以及生成動(dòng)態(tài)內(nèi)容的代

溫馨提示

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