更新時(shí)間:2020-10-26 17:29:00 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1393次
Javaweb是學(xué)習(xí)java編程的重要內(nèi)容,接觸過java的朋友們肯定都知道javaweb的重要性。在前面的文章中我們也介紹了javaweb三大組件是什么,分別是Servlet,F(xiàn)ilter,Listener,相信大家對(duì)三大組件也有一定的了解,今天我們來更進(jìn)一步的學(xué)習(xí)javaweb過濾器的相關(guān)知識(shí)。
過濾器是javaweb三大組件之一,它與Servlet很相似,但是過濾器是用來攔截請(qǐng)求的,而不是處理請(qǐng)求的。當(dāng)用戶請(qǐng)求某個(gè)Servlet時(shí),會(huì)先執(zhí)行部署在這個(gè)請(qǐng)求上的Filter,如果Filter“放行”,那么會(huì)繼承執(zhí)行用戶請(qǐng)求的Servlet;如果Filter不“放行”,那么就不會(huì)執(zhí)行用戶請(qǐng)求的Servlet。可以這樣理解javaweb過濾器:當(dāng)用戶請(qǐng)求某個(gè)Servlet時(shí),Tomcat會(huì)去執(zhí)行注冊(cè)在這個(gè)請(qǐng)求上的Filter,然后是否“放行”由Filter來決定。可以理解為,F(xiàn)ilter來決定是否調(diào)用Servlet,當(dāng)執(zhí)行完成Servlet的代碼后,還會(huì)執(zhí)行Filter后面的代碼。
下面是javaweb過濾器的工作流程方式:
Javaweb過濾器的作用就是攔截,有四種攔截方式:REQUEST 是默認(rèn)的,當(dāng)輸入其他的,那么默認(rèn)的將取消(消失),請(qǐng)求攔的是直接請(qǐng)求,不攔轉(zhuǎn)發(fā)請(qǐng)求REQUEST;轉(zhuǎn)發(fā)(專門攔轉(zhuǎn)發(fā)):FORWARD包含(專門攔包含):INCLUDE錯(cuò)誤(專門攔錯(cuò)誤):ERROR。
Javaweb過濾器的應(yīng)用場(chǎng)景:(1)執(zhí)行目標(biāo)資源之前做預(yù)處理工作,例如設(shè)置編碼,這種通常都會(huì)放行,只是在目標(biāo)資源執(zhí)行之前做一下準(zhǔn)備工作。例如放行 :幾乎所有的servlet中都需要寫request.setCharacterEndoin()可以把它放入到一個(gè)Filter中;(2)通過條件判斷是否放行,例如效驗(yàn)當(dāng)前用戶是否已經(jīng)登錄,或者用戶IP是否已經(jīng)被禁用;(3)在目標(biāo)資源執(zhí)行后,做一些后續(xù)的特殊處理工作,例如把目標(biāo)資源輸出的數(shù)據(jù)進(jìn)行處理。
多個(gè)Filter的執(zhí)行順序,在我們的請(qǐng)求到達(dá)Servle之間是可以經(jīng)過多個(gè)Filter的,一般來說,建議Filter之間不要有關(guān)聯(lián),各自處理各自的邏輯即可。這樣,我們也無需關(guān)心執(zhí)行順序問題。如果一定要確保執(zhí)行順序,就要對(duì)配置進(jìn)行修改了,執(zhí)行順序如下:(1)在web.xml中,filter執(zhí)行順序跟
學(xué)習(xí)java,就要學(xué)習(xí)javaweb,進(jìn)而就要學(xué)習(xí)javaweb過濾器,上面就是今天介紹的javaweb過濾器相關(guān)基礎(chǔ)知識(shí),希望可以幫助java零基礎(chǔ)的朋友們學(xué)習(xí)理解過濾器,另外可以在javaweb教程中學(xué)習(xí)更多的知識(shí)。
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)