




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
4.3任務(wù)3:使用Filter對(duì)注冊(cè)請(qǐng)求進(jìn)行編碼過(guò)濾任務(wù)描述創(chuàng)建過(guò)濾器,對(duì)用戶的請(qǐng)求和響應(yīng)進(jìn)行編碼轉(zhuǎn)換。任務(wù)描述技能目標(biāo)熟悉過(guò)濾器的運(yùn)行方式能夠使用過(guò)濾器完善系統(tǒng)功能技能目標(biāo)4.3.1Filter簡(jiǎn)介可以通過(guò)Filter技術(shù),對(duì)Web服務(wù)器管理范圍內(nèi)的所有Web資源,如Jsp、Servlet、靜態(tài)文件等進(jìn)行攔截,從而實(shí)現(xiàn)一些特殊的功能。例如,實(shí)現(xiàn)URL的訪問(wèn)控制、過(guò)濾敏感詞匯、壓縮響應(yīng)信息等一些高級(jí)功能。4.3.2FilterAPI一、Filter接口所有的過(guò)濾器都必須實(shí)現(xiàn)Filter接口。其源碼如下:publicinterfaceFilter{publicvoidinit(FilterConfigfilterConfig)throwsServletException;publicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,FilterChainchain)
throwsIOException,ServletException;publicvoiddestroy();}所有的過(guò)濾器都必須實(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)的過(guò)濾器的doFilter()方法。4.3.2FilterAPI二、FilterChain接口該接口代表Filter鏈,其源碼如下publicinterfaceFilterChain{publicvoiddoFilter(ServletRequestrequest,ServletResponseresponse)throwsIOException,ServletException;}其中的doFilter(ServletRequestrequest,ServletResponseresponse)方法是由Servlet容器提供給開(kāi)發(fā)者,用于對(duì)資源請(qǐng)求過(guò)濾鏈依次調(diào)用,通過(guò)FilterChain調(diào)用過(guò)濾鏈中的下一個(gè)過(guò)濾器,如果是最后一個(gè)過(guò)濾器,則下一個(gè)就調(diào)用目標(biāo)資源。4.3.2FilterAPI三、FilterChain接口FilterConfig接口用于檢索過(guò)濾器名、初始化參數(shù)以及當(dāng)前Servlet上下文。源碼如下:publicinterfaceFilterConfig{
//返回web.xml部署文件中定義的該過(guò)濾器的名稱
publicStringgetFilterName();
//返回調(diào)用者所處的servlet上下文
publicServletContextgetServletContext();
//返回過(guò)濾器初始化參數(shù)值的字符串形式,當(dāng)參數(shù)不存在時(shí),返回nul1。//參數(shù)name是初始化參數(shù)名
publicStringgetInitParameter(Stringname);
//返回過(guò)濾器所有初始化參數(shù)值,如果沒(méi)有初始化參數(shù),返回為空
publicEnumerationgetInitParameterNames(); }4.3.3Filter的簡(jiǎn)單應(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的簡(jiǎn)單應(yīng)用配置過(guò)濾器:打開(kāi)項(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è)過(guò)濾器對(duì)象;
<filter-mapping>元素用于指定該過(guò)濾器對(duì)象所應(yīng)用的URL。<url-pattern>元素中,可以使用通配符來(lái)限制要過(guò)濾的請(qǐng)求?!?*”表示該過(guò)濾器應(yīng)用于當(dāng)前Web程序下的每一個(gè)URL請(qǐng)求;“/文件夾/*”表明該過(guò)濾器只應(yīng)用于指定文件夾下的URL請(qǐng)求;/hello*表示該過(guò)濾器只應(yīng)用于以hello開(kāi)頭的所有請(qǐng)求。4.3.3Filter的簡(jiǎn)單應(yīng)用
<filter>元素具有五個(gè)可能的子元素:4.3.3Filter的簡(jiǎn)單應(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)聽(tīng)器是Servlet規(guī)范中定義的一種特殊類,用于監(jiān)聽(tīng)ServletContext、HttpSession和ServletRequest等域?qū)ο蟮膭?chuàng)建與銷毀事件,以及監(jiān)聽(tīng)這些域?qū)ο笾袑傩园l(fā)生修改的事件。Servlet監(jiān)聽(tīng)器的主要監(jiān)聽(tīng)對(duì)象有以下三個(gè):
ServletContext:整個(gè)應(yīng)用只存在一個(gè)(application);
HttpSession:針對(duì)每一個(gè)對(duì)話(session);
ServletRequest:針對(duì)每一個(gè)客戶請(qǐng)求(request)。Servlet監(jiān)聽(tīng)器的監(jiān)聽(tīng)內(nèi)容主要是對(duì)象的創(chuàng)建、銷毀、屬性改變事件,它可以在事件發(fā)生前、發(fā)生后進(jìn)行一些預(yù)處理,一般可以用來(lái)統(tǒng)計(jì)在線人數(shù)、統(tǒng)計(jì)網(wǎng)站訪問(wèn)量、系統(tǒng)啟動(dòng)時(shí)進(jìn)行信息初始化等。拓展與提高監(jiān)聽(tīng)器的基本應(yīng)用:【創(chuàng)建步驟】創(chuàng)建一個(gè)實(shí)現(xiàn)相關(guān)監(jiān)聽(tīng)器接口的類
配置web.xml文件,注冊(cè)監(jiān)聽(tīng)器,格式如下:<listener>
<listener-class>完整類名</listener-class></listener>監(jiān)聽(tīng)器的啟動(dòng)順序是按照web.xml的配置順序來(lái)啟動(dòng);監(jiān)聽(tīng)器的加載順序是監(jiān)聽(tīng)器>過(guò)濾器>Servlet。拓展與提高例如:publicclassMyRequestListenerimplementsServletRequestListener{publicvoidrequestInitialized(ServletRequestEventsre){Stringvalue=sre.getServletRequest().getParameter("key");//獲取request中的參數(shù)
System.out.println(value);}publicvoidrequestDestro
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 渭南危房拆除施工方案
- 東營(yíng)橡皮壩施工方案
- 怎么使用MPIDP-RS232OD資料
- 引黃灌區(qū)施工方案
- 質(zhì)管員考核試題及答案
- 中央財(cái)政支持地方高校發(fā)展專項(xiàng)資金
- 6-12歲小孩體能訓(xùn)練動(dòng)作名稱
- 5年級(jí)下冊(cè)第21課
- 5內(nèi)加減法口算題
- 地質(zhì)災(zāi)害綜合治理項(xiàng)目效果監(jiān)測(cè)標(biāo)書
- 數(shù)字電路設(shè)計(jì)及verilog-hdl實(shí)現(xiàn)康磊課后答案
- 青島版科學(xué)(2017)六三制六年級(jí)下冊(cè)1-5《觸覺(jué)》課件
- 建筑用砂標(biāo)準(zhǔn)及特點(diǎn)-課件
- 四年級(jí)數(shù)學(xué)思維訓(xùn)練社團(tuán)活動(dòng)(素質(zhì)拓展)電子教案
- 蒙古族文化課件
- 瀘州老窖股權(quán)激勵(lì)方案案例分析
- 火電廠廠用電系統(tǒng)與廠用電接線運(yùn)行特點(diǎn)分析
- 部編版小學(xué)語(yǔ)文三年級(jí)(下冊(cè))學(xué)期課程綱要
- _重大事故后果分析(精)
- 水泥攪拌樁施工監(jiān)理質(zhì)量控制要點(diǎn)
- 初級(jí)診斷師培訓(xùn)課程QC基礎(chǔ)知識(shí)
評(píng)論
0/150
提交評(píng)論