版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 網(wǎng)店美工試題庫及參考答案
- 吉林省長春市寬城區(qū)2023-2024學(xué)年七年級(jí)上學(xué)期期末考試數(shù)學(xué)試卷(含答案)
- 養(yǎng)老院老人心理咨詢師激勵(lì)制度
- 養(yǎng)老院老人康復(fù)理療服務(wù)質(zhì)量管理制度
- 《付出總有收獲》課件
- 《VFP系統(tǒng)準(zhǔn)備》課件
- 房屋預(yù)售合同(2篇)
- 2024年特色農(nóng)產(chǎn)品種植配套農(nóng)機(jī)采購合同2篇
- 《生命的延續(xù)》課件
- 2025年黃山b2貨運(yùn)資格證多少道題
- 誤差累積效應(yīng)及應(yīng)對(duì)機(jī)制
- 國家開放大學(xué)《建筑工程計(jì)量與計(jì)價(jià)》期末考試題庫參考答案
- 薪酬管理體系的內(nèi)外部公平性
- 山東省青島市市北區(qū)2023-2024學(xué)年四年級(jí)上學(xué)期期末科學(xué)試卷
- 運(yùn)動(dòng)員年終總結(jié)-汗水鑄就榮耀之路
- illustrator練習(xí)試題附答案
- 《SolidWorks建模實(shí)例教程》第6章 工程圖及實(shí)例
- 華為公司管理決策流程
- 《水力學(xué)》簡答題和名詞解釋題總結(jié)
- 會(huì)議服務(wù)策劃方案(12篇)
- 車輛理賠權(quán)益轉(zhuǎn)讓協(xié)議
評(píng)論
0/150
提交評(píng)論