4.3 任務(wù)3:使用Filter對(duì)注冊(cè)請(qǐng)求進(jìn)行編碼過濾課件_第1頁
4.3 任務(wù)3:使用Filter對(duì)注冊(cè)請(qǐng)求進(jìn)行編碼過濾課件_第2頁
4.3 任務(wù)3:使用Filter對(duì)注冊(cè)請(qǐng)求進(jìn)行編碼過濾課件_第3頁
4.3 任務(wù)3:使用Filter對(duì)注冊(cè)請(qǐng)求進(jìn)行編碼過濾課件_第4頁
4.3 任務(wù)3:使用Filter對(duì)注冊(cè)請(qǐng)求進(jìn)行編碼過濾課件_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

4.3任務(wù)3:使用Filter對(duì)注冊(cè)請(qǐng)求進(jìn)行編碼過濾任務(wù)描述創(chuàng)建過濾器,對(duì)用戶的請(qǐng)求和響應(yīng)進(jìn)行編碼轉(zhuǎn)換。任務(wù)描述技能目標(biāo)熟悉過濾器的運(yùn)行方式能夠使用過濾器完善系統(tǒng)功能技能目標(biāo)4.3.1Filter簡介可以通過Filter技術(shù),對(duì)Web服務(wù)器管理范圍內(nèi)的所有Web資源,如Jsp、Servlet、靜態(tài)文件等進(jìn)行攔截,從而實(shí)現(xiàn)一些特殊的功能。例如,實(shí)現(xiàn)URL的訪問控制、過濾敏感詞匯、壓縮響應(yīng)信息等一些高級(jí)功能。4.3.2FilterAPI一、Filter接口所有的過濾器都必須實(shí)現(xiàn)Filter接口。其源碼如下:publicinterfaceFilter{publicvoidinit(FilterConfigfilterConfig)throwsServletException;publicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,FilterChainchain)

throwsIOException,ServletException;publicvoiddestroy();}所有的過濾器都必須實(shí)現(xiàn)Filter接口。和Servlet類似,該接口定義了init、doFilter0、destory()三個(gè)生命周期方法。doFilter()方法類似于Servlet接口的service()方法。當(dāng)客戶端請(qǐng)求目標(biāo)資源時(shí),容器就會(huì)調(diào)用與這個(gè)目標(biāo)資源相關(guān)聯(lián)的過濾器的doFilter()方法。4.3.2FilterAPI二、FilterChain接口該接口代表Filter鏈,其源碼如下publicinterfaceFilterChain{publicvoiddoFilter(ServletRequestrequest,ServletResponseresponse)throwsIOException,ServletException;}其中的doFilter(ServletRequestrequest,ServletResponseresponse)方法是由Servlet容器提供給開發(fā)者,用于對(duì)資源請(qǐng)求過濾鏈依次調(diào)用,通過FilterChain調(diào)用過濾鏈中的下一個(gè)過濾器,如果是最后一個(gè)過濾器,則下一個(gè)就調(diào)用目標(biāo)資源。4.3.2FilterAPI三、FilterChain接口FilterConfig接口用于檢索過濾器名、初始化參數(shù)以及當(dāng)前Servlet上下文。源碼如下:publicinterfaceFilterConfig{

//返回web.xml部署文件中定義的該過濾器的名稱

publicStringgetFilterName();

//返回調(diào)用者所處的servlet上下文

publicServletContextgetServletContext();

//返回過濾器初始化參數(shù)值的字符串形式,當(dāng)參數(shù)不存在時(shí),返回nul1。//參數(shù)name是初始化參數(shù)名

publicStringgetInitParameter(Stringname);

//返回過濾器所有初始化參數(shù)值,如果沒有初始化參數(shù),返回為空

publicEnumerationgetInitParameterNames(); }4.3.3Filter的簡單應(yīng)用創(chuàng)建一個(gè)Filter,在控制臺(tái)上輸出“您的請(qǐng)求已被攔截!”。具體步驟如下:1、 在項(xiàng)目源碼文件夾src中,創(chuàng)建用于存放Filter類的包(如com.ct.filters);2、 在該包中創(chuàng)建一個(gè)類(如FirstFilter),使其實(shí)現(xiàn)Filter接口;3、 重寫Filter接口中的所有方法;System.out.println("您的請(qǐng)求已被攔截!");4.3.3Filter的簡單應(yīng)用配置過濾器:打開項(xiàng)目配置描述符文件web.xml,在根節(jié)點(diǎn)下進(jìn)行如下配置:

<filter><filter-name>FirstFilter</filter-name><filter-class>com.ct.filters.FirstFilter</filter-class></filter><filter-mapping><filter-name>FirstFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>

其中,需要涉及兩個(gè)XML元素:

<filter>元素用于向系統(tǒng)注冊(cè)一個(gè)過濾器對(duì)象;

<filter-mapping>元素用于指定該過濾器對(duì)象所應(yīng)用的URL。<url-pattern>元素中,可以使用通配符來限制要過濾的請(qǐng)求。“/*”表示該過濾器應(yīng)用于當(dāng)前Web程序下的每一個(gè)URL請(qǐng)求;“/文件夾/*”表明該過濾器只應(yīng)用于指定文件夾下的URL請(qǐng)求;/hello*表示該過濾器只應(yīng)用于以hello開頭的所有請(qǐng)求。4.3.3Filter的簡單應(yīng)用

<filter>元素具有五個(gè)可能的子元素:4.3.3Filter的簡單應(yīng)用4.3.4用MyEclipse向?qū)?chuàng)建Filter4.3.4用MyEclipse向?qū)?chuàng)建Filter4.3.4用MyEclipse向?qū)?chuàng)建Filter任務(wù)實(shí)現(xiàn)任務(wù)實(shí)現(xiàn)拓展與提高監(jiān)聽器是Servlet規(guī)范中定義的一種特殊類,用于監(jiān)聽ServletContext、HttpSession和ServletRequest等域?qū)ο蟮膭?chuàng)建與銷毀事件,以及監(jiān)聽這些域?qū)ο笾袑傩园l(fā)生修改的事件。Servlet監(jiān)聽器的主要監(jiān)聽對(duì)象有以下三個(gè):

ServletContext:整個(gè)應(yīng)用只存在一個(gè)(application);

HttpSession:針對(duì)每一個(gè)對(duì)話(session);

ServletRequest:針對(duì)每一個(gè)客戶請(qǐng)求(request)。Servlet監(jiān)聽器的監(jiān)聽內(nèi)容主要是對(duì)象的創(chuàng)建、銷毀、屬性改變事件,它可以在事件發(fā)生前、發(fā)生后進(jìn)行一些預(yù)處理,一般可以用來統(tǒng)計(jì)在線人數(shù)、統(tǒng)計(jì)網(wǎng)站訪問量、系統(tǒng)啟動(dòng)時(shí)進(jìn)行信息初始化等。拓展與提高監(jiān)聽器的基本應(yīng)用:【創(chuàng)建步驟】創(chuàng)建一個(gè)實(shí)現(xiàn)相關(guān)監(jiān)聽器接口的類

配置web.xml文件,注冊(cè)監(jiān)聽器,格式如下:<listener>

<listener-class>完整類名</listener-class></listener>監(jiān)聽器的啟動(dòng)順序是按照web.xml的配置順序來啟動(dòng);監(jiān)聽器的加載順序是監(jiān)聽器>過濾器>Servlet。拓展與提高例如:publicclassMyRequestListenerimplementsServletRequestListener{publicvoidrequestInitialized(ServletRequestEventsre){Stringvalue=sre.getServletRequest().getParameter("key");//獲取request中的參數(shù)

System.out.println(value);}publicvoidrequestDestro

溫馨提示

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