零點(diǎn)起飛學(xué)Java Web開發(fā)之Servlet技術(shù)基礎(chǔ)_第1頁
零點(diǎn)起飛學(xué)Java Web開發(fā)之Servlet技術(shù)基礎(chǔ)_第2頁
零點(diǎn)起飛學(xué)Java Web開發(fā)之Servlet技術(shù)基礎(chǔ)_第3頁
零點(diǎn)起飛學(xué)Java Web開發(fā)之Servlet技術(shù)基礎(chǔ)_第4頁
零點(diǎn)起飛學(xué)Java Web開發(fā)之Servlet技術(shù)基礎(chǔ)_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第8章 Servlet技術(shù)入門 Servlet技術(shù)是JSP技術(shù)的基礎(chǔ),初學(xué)者一般都是從學(xué)習(xí)JSP技術(shù)開始的。主要是因?yàn)檫@種技術(shù)相對簡單些。雖然應(yīng)用JSP和JavaBean聯(lián)合起來可以完成大部分Servlet的功能,但Servlet技術(shù)有其不可替代的獨(dú)特的優(yōu)勢。例如,高效率、高安全性等特點(diǎn)。本章通過結(jié)合例子講解Servlet的基礎(chǔ)知識(shí),使讀者初步理解這種技術(shù)的特點(diǎn)和使用方法。8.1 Servlet介紹 Servlet技術(shù)出現(xiàn)于J2EE平臺(tái)之前,在過去的一段時(shí)間內(nèi),Servlet技術(shù)得到了廣泛的應(yīng)用。JSP技術(shù)是基于Servlet技術(shù)框架下的,由此可見Servlet技術(shù)的強(qiáng)大。下面講述Servle

2、t的概念、特點(diǎn),以及它與JSP的關(guān)系。8.1.1 什么是Servlet Servlet是運(yùn)行于服務(wù)器端的、按照其自身規(guī)范編寫的Java應(yīng)用程序。筆者認(rèn)為可以從3個(gè)層面解釋這個(gè)概念。 Servlet是用Java語言編寫的,它是一個(gè)Java類。因而Servlet遵守所有Java語言的語法規(guī)則,并且它可以調(diào)用一般Java程序可以調(diào)用的系統(tǒng)包。 Servlet是在服務(wù)器端運(yùn)行的。它編譯后的“.class”文件被服務(wù)器端調(diào)用和執(zhí)行。Web服務(wù)器使用該class文件去處理瀏覽器請求,并將處理的結(jié)果返回到客戶端。 由于Servlet特殊的應(yīng)用特點(diǎn),它有自身特殊的規(guī)則。一般來說,它必須調(diào)用Java Servl

3、et API,必須是對特定類或接口的繼承或?qū)崿F(xiàn)。并且,它必須重寫特定的方法去處理客戶端請求。 Servlet的主要功能是用來接受、處理客戶端請求,并把處理結(jié)果返回到客戶端顯示。其過程如下所述。1客戶端把請求送到Servlet處理 例如,用來實(shí)現(xiàn)注冊的用戶表單,其代碼中可以指定使用哪個(gè)Servlet去處理它。用戶填寫好表單,當(dāng)單擊“提交”按鈕時(shí),客戶端將請求發(fā)到Web服務(wù)器。Web服務(wù)器根據(jù)客戶端的請求找到相應(yīng)的Servlet調(diào)用它去處理請求。2Servlet處理請求 這時(shí)Servlet相應(yīng)的方法被Web服務(wù)器調(diào)用去處理請求。這個(gè)過程中,Servlet可以和服務(wù)器端的其他資源(文件、數(shù)據(jù)庫、Ap

4、plet、Java應(yīng)用程序等)交互。例如,該Servlet可以調(diào)用其他的Servlet、Java應(yīng)用程序、Applet。它還可以連接數(shù)據(jù)庫、執(zhí)行數(shù)據(jù)庫操作、讀取文件或者生成文件。執(zhí)行完這些操作后,該Servlet會(huì)把最終客戶端想要的結(jié)果返回。3Servlet把請求的結(jié)果返回到客戶端顯示 在這個(gè)過程中,Servlet返回的并不僅僅是數(shù)據(jù)結(jié)果,而是整個(gè)HTML文件。例如,用戶在網(wǎng)頁上查詢信息時(shí),假設(shè)在單擊“查詢”按鈕后,返回了顯示查詢結(jié)果的頁面。那么用來表示這個(gè)頁面的整個(gè)HTML文件都是Servlet產(chǎn)生并返回來的,而并不僅僅是頁面上顯示的查詢結(jié)果。 說明:客戶端與Servlet不斷交互,因而生成

5、動(dòng)態(tài)Web內(nèi)容。 若要實(shí)現(xiàn)一個(gè)Servlet,必須實(shí)現(xiàn)Java Servlet API。這就要求該Servlet類繼承系統(tǒng)已經(jīng)定義好的類,并且重載這個(gè)特定類的方法。在這些方法中完成對客戶端請求的處理,最后將生成的HTML頁面返回到客戶端。具體的實(shí)現(xiàn)方法在8.1.3節(jié)的例子中講解。8.1.2 Servlet的優(yōu)勢 Servlet最大的優(yōu)勢就在于一方面它是用Java語言寫的,是一個(gè)Java類。因而,Java語言賦予了它強(qiáng)大的功能;另一方面,它又可以用來處理客戶端的請求,并且可以返回響應(yīng)。這兩方面的結(jié)合使Servlet成為功能非常強(qiáng)大的服務(wù)器端語言??偟貋碚f,它主要有以下方法的優(yōu)勢。 可移植性好。

6、功能強(qiáng)大。 安全性好。 簡潔。 高效耐久。8.1.3 JSP vs Servlet JSP和Servlet的關(guān)系可以這樣描述:一個(gè)JSP文件本質(zhì)上就是一個(gè)Servlet類。只不過這個(gè)類在該JSP文件被客戶端或者其他的Servlet調(diào)用時(shí),才被Web服務(wù)器處理。它先被Web服務(wù)器處理成為一個(gè)后綴名為“.java”的Servlet類,然后被編譯為一個(gè)后綴名為“.class”的文件。該編譯后的Servlet被Web服務(wù)器調(diào)用,去處理客戶端或其他的Servlet的請求。一般來說,它不會(huì)像8.1.2節(jié)里第二步描述的那樣進(jìn)行那么復(fù)雜的處理,而僅僅是把原始的JSP文件所表示的整個(gè)HTML頁面作為請求的結(jié)果返

7、回到客戶端。1JSP出現(xiàn)之前Servlet的使用狀況 JSP是Servlet發(fā)展后期的產(chǎn)物。在沒有JSP之前,就已經(jīng)出現(xiàn)了Servlet技術(shù)。這時(shí)的Servlet相應(yīng)客戶端請求就像8.1.1節(jié)里第3小節(jié)描述的那樣,是利用輸出流動(dòng)態(tài)生成整個(gè)HTML頁面。所以輸出的內(nèi)容包括每一個(gè)HTML標(biāo)簽和每個(gè)在HTML頁面中出現(xiàn)的內(nèi)容。然后將其返回到客戶端顯示。HTML文件包括大量的HTML標(biāo)簽、大量的靜態(tài)文本及格式等,以及所有的表現(xiàn)邏輯,包括布局、色彩及圖像等。這些內(nèi)容都必須耦合在Java代碼中,這些的確讓人不勝其煩,也導(dǎo)致Servlet的開發(fā)效率極為低下。2JSP出現(xiàn)后的狀況 JSP的出現(xiàn)彌補(bǔ)了這種不足,

8、因?yàn)镴SP文件是通過在標(biāo)準(zhǔn)的HTML頁面中插入Java代碼形成的。其靜態(tài)的部分無須Java程序控制,只有那些需要從數(shù)據(jù)庫讀取并根據(jù)程序動(dòng)態(tài)生成信息時(shí),才使用Java腳本控制。當(dāng)JSP技術(shù)出現(xiàn)之后,它里面可以插入很多HTML標(biāo)簽,更方便于編寫和修改要返回的HTML文件。所以主要用JSP文件來動(dòng)態(tài)生成HTML文件,然后返回客戶端。現(xiàn)在的Servlet,當(dāng)需要將整個(gè)頁面作為結(jié)果返回時(shí),它不再由其自己去處理,而是調(diào)用JSP文件,用它動(dòng)態(tài)產(chǎn)生整個(gè)HTML頁面,然后返回到客戶端。 說明:對比 jspTest.jsp和與之對應(yīng)的jspTest_jsp.Java文件可以看出,使用JSP的好處是,在實(shí)際開發(fā)中,

9、一個(gè)開發(fā)者即使不了解上面的Java代碼,也依然不會(huì)影響JSP頁面的編寫和設(shè)計(jì)。因?yàn)檫@些Java代碼是由Web容器負(fù)責(zé)生成的。8.2 Servlet的生命周期 Servlet的生命周期指的是Servlet從被Web服務(wù)器加載到它被銷毀的整個(gè)生命過程。這個(gè)過程可以用圖8-2來描述。8.2 Servlet的生命周期 從圖8-2可以看出,Servlet的生命周期按照先后次序一般分為以下幾個(gè)階段。 Web服務(wù)器裝載Servlet:Web服務(wù)器啟動(dòng)后,它會(huì)根據(jù)每個(gè)工程的web.xml文件去查找該工程中的Servlet。并且找到這些Servlet的Class文件所在的地址,將它們載入到Web容器中。不同的S

10、ervlet被Web服務(wù)器加載的次序不同。通過web.xml文件可以配置每個(gè)Servlet載入的次序。一般來說,Servlet在服務(wù)器啟用時(shí)就會(huì)被Web服務(wù)器加載,而JSP文件只有在用戶訪問到該頁面時(shí)才會(huì)被動(dòng)態(tài)載入。 創(chuàng)建一個(gè)Servlet實(shí)例,這時(shí)會(huì)調(diào)用該Servlet的構(gòu)造函數(shù)去創(chuàng)建一個(gè)具體的對象。 經(jīng)過以上兩個(gè)步驟后,這時(shí)如果有客戶端請求,Web服務(wù)器就會(huì)調(diào)用Servlet對象的init()方法。 接著Web服務(wù)器調(diào)用Servlet的service()方法去接收請求,處理請求,并把處理結(jié)果返回。 銷毀:Servlet實(shí)例被銷毀,這是通過調(diào)用Servlet的destroy()方法來實(shí)現(xiàn)的。8.3 開發(fā)一個(gè)簡單的Servlet程序 下面通過一個(gè)具體的Servlet例子來說明使用Servlet的一般方法和步驟。讀者也可以通過這個(gè)例子進(jìn)一步理解Servlet的概念和功能,以及它與JSP文件的不同之處。8.4 小 結(jié) 本章講解了Servlet的概念、特點(diǎn)、生命周期,并結(jié)合實(shí)例分析了Servlet與JSP的區(qū)別和聯(lián)系

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論