JAVA-WEB開發(fā)教程-第五章-Servlet技術(shù)基礎(chǔ)知識(shí)_第1頁
JAVA-WEB開發(fā)教程-第五章-Servlet技術(shù)基礎(chǔ)知識(shí)_第2頁
JAVA-WEB開發(fā)教程-第五章-Servlet技術(shù)基礎(chǔ)知識(shí)_第3頁
JAVA-WEB開發(fā)教程-第五章-Servlet技術(shù)基礎(chǔ)知識(shí)_第4頁
JAVA-WEB開發(fā)教程-第五章-Servlet技術(shù)基礎(chǔ)知識(shí)_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第五章Servlet技術(shù)根底知識(shí)Servlet是一種效勞器端的編程語言,是J2EE中比較關(guān)鍵的組成局部,Servlet技術(shù)的推出,擴(kuò)展了Java語言在效勞器端開發(fā)的功能,穩(wěn)固了Java語言在效勞器端開發(fā)中的地位,而且現(xiàn)在使用非常廣泛的JSP技術(shù)也是基于Servlet的原理,JSP+JavaBeans+Servlet成為實(shí)現(xiàn)MVC模式的一種有效的選擇。在本章中將介紹Servlet的根底知識(shí),并通過具體的例如介紹Servlet的強(qiáng)大功能。5.1Servlet簡介Servlet在本質(zhì)上就是Java類,編寫Servlet需要遵循Java的根本語法,但是與一般Java類所不同的是,Servlet是只能運(yùn)行在效勞器端的Java類,而且必需遵循特殊的標(biāo)準(zhǔn),在運(yùn)行的過程中有自己的生命周期,這些特性都是Servlet所獨(dú)有的。另外Servlet是和HTTP協(xié)議是緊密聯(lián)系的,所以使用Servlet幾乎可以處理HTTP協(xié)議各個(gè)方面的內(nèi)容,這也正是Servlet收到開發(fā)人員青睞的最大原因。5.1.1Servlet的工作原理Servlet容器環(huán)境在HTTP通信和web效勞器平臺(tái)之間實(shí)現(xiàn)了一個(gè)抽象層。Servlet容器負(fù)責(zé)把請(qǐng)求傳遞給Servlet,并把結(jié)果返回結(jié)客戶。在使用Servlet的過程中,并發(fā)訪問的問題由Servlet容器處理,當(dāng)多個(gè)用戶請(qǐng)求同一個(gè)Servlet的時(shí)候,Servlet容器負(fù)責(zé)為每個(gè)用戶啟動(dòng)一個(gè)線程,這些線程的運(yùn)行和銷毀由Servlet容器負(fù)責(zé),而在傳統(tǒng)的CGI程序中,是為每一個(gè)用戶啟動(dòng)一個(gè)進(jìn)程,因此Servlet的運(yùn)行效率就要比CGI的高出很多。5.1.2Servlet的生命周期Servlet是運(yùn)行在效勞器端的程序,所以Servlet的運(yùn)行狀態(tài)完全由Servlet容器維護(hù),一個(gè)Servlet的生命周期一般有三個(gè)過程。1.初始化2.提供效勞3.銷毀5.1.3簡單Servlet開發(fā)配置例如JavaServletAPI包括兩個(gè)根本的包,javax.servlet和javax.servlet.,其中javax.servlet提供了用來控制Servlet生命周期所需的類和接口,是編寫Servlet必需要實(shí)現(xiàn)的。javax.servlet.提供了處理與HTTP相關(guān)操作的類和接口,每個(gè)Servlet必需實(shí)現(xiàn)Servlet接口,但是在實(shí)際的開發(fā)中,一般情況都是通過繼承javax.servlet..HttpServlet或者javax.servlet.GenericServlet來間接實(shí)現(xiàn)Servlet接口。5.1.4使用Servlet實(shí)現(xiàn)MVC開發(fā)模式Java語言之所以受到開發(fā)人員支持,是因?yàn)镴ava語言實(shí)現(xiàn)科學(xué)方便的開發(fā)模式,在這些開發(fā)模式中,最出色而且應(yīng)用最廣的就是MVC模式,對(duì)于MVC模式的研究由來已久,但是一直沒有得到很好的推廣和應(yīng)用,隨著J2EE技術(shù)的成熟,MVC逐漸成為了一種常用而且重要的設(shè)計(jì)模式。MVC〔Model-View-Controller〕把應(yīng)用程序的開發(fā)分為三個(gè)層面:視圖層、控制層、模型層。5.2JSP頁面調(diào)用Servlet的方法在上面HelloWorld的例如程序中,我們直接在瀏覽器中輸入具體的地址進(jìn)行訪問,在實(shí)際的應(yīng)用中,不可能讓用戶在瀏覽器中直接輸入Servlet的地址進(jìn)行訪問,一般情況下,可以通過調(diào)用Servlet進(jìn)行訪問,在這里介紹通過提交表單和超鏈接兩種方式調(diào)用Servlet。5.2.1通過表單提交調(diào)用Servlet在通過提交表單調(diào)用Servlet的時(shí)候,只需要把表單的action指向?qū)?yīng)的Servlet即可,下面是一個(gè)簡單的表單,通過這個(gè)表單可以調(diào)用指定的Servlet?!簿唧w內(nèi)容請(qǐng)參照書?!?.2.2通過超鏈接調(diào)用Servlet在上面這個(gè)例子中,用戶有輸入的內(nèi)容需要提交給效勞器,所以需要用表單來調(diào)用Servlet,但是在沒有輸入的數(shù)據(jù)內(nèi)容需要提交的情況下,使用表單就不是很合理了,在這里介紹Servlet的第二種調(diào)用方法,直接通過超鏈接的方式來調(diào)用Servlet,在這種情況下還可以給Servlet傳遞參數(shù)?!簿唧w內(nèi)容請(qǐng)參照書?!?.3Servlet中的文件操作在JSP的開發(fā)過程中,經(jīng)常會(huì)遇到需要把相關(guān)內(nèi)容存儲(chǔ)為文件的情況,在JSP中是用輸入輸出流進(jìn)行操作的,在Servlet中也可以使用輸入輸出流實(shí)現(xiàn)對(duì)文件的讀寫,同時(shí),使用Servlet還可以很方便的實(shí)現(xiàn)文件的上傳下載。接下來的內(nèi)容將通過具體的例如展示Servlet文件操作的方法。5.3.1Servlet讀取文件在這個(gè)例子中將要讀取一個(gè)文本文件的內(nèi)容,并且在頁面上打印文件的內(nèi)容。5.3.2Servlet寫文件Servlet寫文件的處理方法和讀取文件的處理方法非常類似,只是把文件輸入流換成文件輸出流,在下面這個(gè)例如程序中,將在指定位置生成文件。〔具體內(nèi)容請(qǐng)參照書?!?.3.3Servlet上傳文件文件的上傳下載在Web開發(fā)中會(huì)經(jīng)常遇到,使用根本的IO輸入輸出流當(dāng)然可以完成這項(xiàng)操作,但是出于對(duì)開發(fā)的效率和程序運(yùn)行的效率方面的考慮,在實(shí)際的開發(fā)過程中一般采用第三方的組件來完成這個(gè)上傳的功能。在實(shí)際開發(fā)過程中用的比較多的是commons-fileupload組件和jspSmartUpload組件,這兩個(gè)組件都可以很好地完成文件上傳的功能,5.3.4Servlet下載文件用Servlet下載文件的時(shí)候,并不需要第三方組件的幫助,只需要對(duì)效勞器的響應(yīng)對(duì)象response進(jìn)行簡單的設(shè)置即可,〔具體內(nèi)容請(qǐng)參照書?!?.4Servlet過濾器在Web應(yīng)用中可以使用過濾器對(duì)所有的訪問和請(qǐng)求進(jìn)行統(tǒng)一的處理,IP訪問限制,用戶發(fā)送請(qǐng)求的字符編碼轉(zhuǎn)換等,在進(jìn)行具體的業(yè)務(wù)邏輯處理之前,首先要經(jīng)過過濾器的統(tǒng)一處理,然后才開始進(jìn)入真正的邏輯處理階段。在本節(jié)內(nèi)容中,將介紹過濾器的原理的實(shí)際應(yīng)用。5.4.1過濾器的根本原理過濾器的功能就是在效勞器和客戶中間增加了一個(gè)中間層,可以對(duì)兩者之間的交互進(jìn)行統(tǒng)一的處理,每一個(gè)從客戶端提交的請(qǐng)求都需要通過過濾器的處理,然后再進(jìn)行其他的操作。在實(shí)際開發(fā)中,過濾器器可以用來對(duì)用戶進(jìn)行統(tǒng)一的身份判斷、IP訪問限制,用戶發(fā)送請(qǐng)求的字符編碼轉(zhuǎn)換、對(duì)請(qǐng)求和響應(yīng)進(jìn)行加密和解密、記錄用戶登錄日志等。當(dāng)然過濾器的用途不僅僅這些,讀者可以根據(jù)過濾器的實(shí)現(xiàn)原理,思考過濾器更多的用途。5.4.2IP訪問filter在實(shí)際的應(yīng)用中,可能會(huì)遇到這樣的情況,需要對(duì)某些IP進(jìn)行訪問限制,不讓非法的IP訪問應(yīng)用系統(tǒng),這個(gè)時(shí)候就需要用到過濾器進(jìn)行限制,當(dāng)一個(gè)用戶發(fā)出訪問請(qǐng)求的時(shí)候,首先通過過濾器進(jìn)行判斷,如果用戶的IP地址被限制,就禁止訪問,只有合法的IP才可以繼續(xù)訪問?!簿唧w內(nèi)容請(qǐng)參照書?!?.4.3轉(zhuǎn)換字符編碼filter在Java語言中,默認(rèn)的編碼方式是ISO-8859-1,這種編碼格式不支持中文的顯示,我們可以用類似<%@pagecontentType="text/html;charset=gb2312"%>這樣的方式來規(guī)定頁面字符編碼格式,但是如果要顯示的內(nèi)容是表單提交、或者是經(jīng)過Servlet處理,這時(shí)候字符內(nèi)容本身的編碼格式就是ISO-8859-1,所以盡管頁面指定的字符編碼方案為gb2312,在這種情況下中文內(nèi)容仍然不能正常顯示。在第四章中已經(jīng)對(duì)中文處理的問題做了詳細(xì)的介紹,所以在本章僅僅對(duì)其中使用過濾器解決中文亂碼問題進(jìn)行詳細(xì)的分析。5.5Servlet應(yīng)用例如在上面的內(nèi)容中已經(jīng)提到,Servlet是與HTTP協(xié)議緊密結(jié)合的,使用Servlet幾乎可以處理HTTP協(xié)議各個(gè)方面的內(nèi)容,在本節(jié)的幾個(gè)例如程序中,將集中展示Servlet在HTTP方面的具體應(yīng)用。5.5.1獲取請(qǐng)求信息頭部內(nèi)容當(dāng)客戶訪問一個(gè)頁面的時(shí)候,會(huì)提交一個(gè)HTTP請(qǐng)求給效勞器的Servlet引擎,在這個(gè)請(qǐng)求中有HTTP的文件頭信息,其中包含這個(gè)請(qǐng)求的詳細(xì)屬性信息,在下面這個(gè)例如Servlet中將取出HTTP頭部內(nèi)容,并在頁面打印,這個(gè)Servlet的具體代碼如下?!簿唧w內(nèi)容請(qǐng)參照書?!?.5.2獲取請(qǐng)求信息在上面這個(gè)Servlet例如中,我們?nèi)〕鏊械腍TTP文件頭信息,在Servlet中還可以很方便取出客戶發(fā)出請(qǐng)求對(duì)象自身的信息。這些信息是和客戶的請(qǐng)求密切相關(guān)的,例如客戶提交請(qǐng)求所使用的協(xié)議,客戶提交表單的方法是POST還是GET等,在下面這個(gè)例如程序中將介紹集中常見屬性的取值方法。這個(gè)例如程序的具體代碼如下?!簿唧w內(nèi)容請(qǐng)參照書。〕5.5.3獲取參數(shù)信息在Servlet中,同樣可以很方便的取出用戶請(qǐng)求中的參數(shù)信息,這種參數(shù)包括以POST方法或者是GET方法提交的表單,也包括直接使用超鏈接傳遞的參數(shù),Servlet都可以取出這些信息并且加以處理,在下面的例子中將具體展示Servlet獲取各種參數(shù)的方法。5.5.4Cookies操作Cookies是指在Web應(yīng)用中,為了區(qū)分用戶身份而存儲(chǔ)在用戶本地計(jì)算機(jī)上的數(shù)據(jù)。ServletAPI提供了Cookie操作類,封裝了操作Cookie常用的方法,在〔具體內(nèi)容請(qǐng)參照書?!?.5.5Session操作在JSP中有內(nèi)置的Session對(duì)象,可以用來保持效勞器與用戶之間的會(huì)話狀態(tài),在Servlet中間,同樣可以對(duì)Session進(jìn)行方便的操作,在現(xiàn)面的例子中,將詳細(xì)介紹Servlet中處理Session的具體方法。5.6小結(jié)在本章的內(nèi)容中,詳細(xì)講解了Servlet的工作原理,并且通過實(shí)際的例如程序詳細(xì)介紹了Servlet的調(diào)用方法,對(duì)Servle

溫馨提示

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