溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Filter的作用是什么

發(fā)布時(shí)間:2021-03-09 16:09:39 來(lái)源:億速云 閱讀:430 作者:小新 欄目:編程語(yǔ)言

小編給大家分享一下Filter的作用是什么,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

  JavaWeb有三大組件,Servlet、Listener、Filter。本文將介紹Filter,主要從用處、種類(lèi)、使用方法等進(jìn)行介紹。

  Filter可以認(rèn)為是Servlet的一種“加強(qiáng)版”。使用Filter完整的流程是:Filter對(duì)用戶(hù)請(qǐng)求進(jìn)行預(yù)處理,接著將請(qǐng)求交給Servlet進(jìn)行處理并生成響應(yīng),最后Filter再對(duì)服務(wù)器響應(yīng)進(jìn)行后處理。

Filter有以下幾個(gè)用處:

  在HttpServletRequest到達(dá)Servlet之前,攔截客戶(hù)的HttpServletRequest;根據(jù)需要檢查HttpServletRequest,也可以修改HttpServletRequest頭和數(shù)據(jù);在HttpServletResponse到達(dá)客戶(hù)端之前,攔截HttpServletResponse;根據(jù)需要檢查HttpServletResponse,也可以修改HttpServletResponse頭和數(shù)據(jù)。二、種類(lèi)用戶(hù)授權(quán)的Filter:Filter負(fù)責(zé)檢查用戶(hù)請(qǐng)求,根據(jù)請(qǐng)求過(guò)濾用戶(hù)非法請(qǐng)求(比如對(duì)用戶(hù)登錄狀態(tài)進(jìn)行判定);日志Filter:詳細(xì)記錄某些特殊的用戶(hù)請(qǐng)求;負(fù)責(zé)解碼的Filter:包括對(duì)非標(biāo)準(zhǔn)編碼的請(qǐng)求解碼;能改變XML內(nèi)容的XSLTFilter等;Filter可負(fù)責(zé)攔截多個(gè)請(qǐng)求或響應(yīng);一個(gè)請(qǐng)求或響應(yīng)也可被多個(gè)Filter攔截。三、使用方法3.1創(chuàng)建Filter步驟

  1)創(chuàng)建Filter處理類(lèi);2)web.xml文件中配置Filter,或通過(guò)注解的方式配置。(順便說(shuō)一下,三大組件都需要在web.xml中進(jìn)行配置)

  創(chuàng)建Filter類(lèi)

  創(chuàng)建Filter類(lèi)必須實(shí)現(xiàn)Filter接口,F(xiàn)ilter接口中包含三個(gè)方法:

  voidinit(FilterConfigconfig):用于完成Filter的初始化;voiddestroy():用于Filter銷(xiāo)毀前,完成某些資源的回收;voiddoFilter(ServletRequestsrq,ServletResponsesrp,FilterChainchain):實(shí)現(xiàn)過(guò)濾功能,該方法就是對(duì)每個(gè)請(qǐng)求及響應(yīng)增加的額外處理。

  doFilter()方法,在該方法中可實(shí)現(xiàn)對(duì)用戶(hù)請(qǐng)求進(jìn)行預(yù)處理,也可實(shí)現(xiàn)對(duì)服務(wù)器響應(yīng)進(jìn)行后處理,分界線(xiàn)就是是否調(diào)用了chain.doFiler(),調(diào)用之前是請(qǐng)求預(yù)處理,調(diào)用之后是響應(yīng)后處理。這是因?yàn)椋瑆eb服務(wù)器會(huì)檢查FilterChain對(duì)象中是否還有Filter,如果有,則調(diào)用下一個(gè)Filter,沒(méi)有,則調(diào)用目標(biāo)資源。

  配置Filter

  與配置Servlet相似,配置Filter,需要配置兩個(gè)部分:1)配置Filter名;2)配置Filter攔截URL模式與Servlet的區(qū)別在于:Servlet通常只配置一個(gè)URL,而Filter可以同時(shí)攔截多個(gè)請(qǐng)求的URL。因此,在配置Filter的URL模式時(shí)通常會(huì)使用模式字符串,使得Filter可以攔截多個(gè)請(qǐng)求。配置的方式有兩種:在Filter類(lèi)中通過(guò)注解進(jìn)行配置,在web.xml文件中進(jìn)行配置。

  web.xml中進(jìn)行配置logfilter.LogFilterlog

  Filter里doFilter()方法里的代碼就是從多個(gè)Servlet的service()方法里抽出的通用代碼。通過(guò)使用Filter可以實(shí)現(xiàn)更好的代碼復(fù)用。

以上是“Filter的作用是什么”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI