首頁(yè)常見(jiàn)問(wèn)題正文

Filter如何攔截請(qǐng)求? 【Servlet高級(jí)】

更新時(shí)間:2023-01-09 來(lái)源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

  在一個(gè)Web應(yīng)用程序中可以注冊(cè)多個(gè)Filter程序,每個(gè)Filter程序都可以針對(duì)某一個(gè)URL進(jìn)行攔截。如果多個(gè)Filter程序都對(duì)同一個(gè)URL進(jìn)行攔截,那么這些Filter就會(huì)組成一個(gè)Filter鏈(也稱過(guò)濾器鏈)。Filter鏈用FilterChain對(duì)象中有一個(gè)doFilter()方法,該方法的作用是讓Filter鏈上的當(dāng)前過(guò)濾器放行,使請(qǐng)求進(jìn)入下一個(gè)Filter。

  Filter鏈的攔截過(guò)程如圖14-6所示。

1673228883192_Filter鏈.jpg

  圖14-6 Filter鏈

  在圖14-6中,當(dāng)瀏覽器訪問(wèn)Web服務(wù)器中的資源時(shí),需要經(jīng)過(guò)兩個(gè)過(guò)濾器Filter1和Filter2。首先Filter1會(huì)對(duì)這個(gè)請(qǐng)求進(jìn)行攔截,在Filter1中處理完請(qǐng)求后,通過(guò)調(diào)用Filter1的doFilter()方法將請(qǐng)求傳遞給Filter2,F(xiàn)ilter2處理用戶請(qǐng)求后同樣調(diào)用doFilter()方法,最終將請(qǐng)求發(fā)送給目標(biāo)資源。當(dāng)Web服務(wù)器對(duì)這個(gè)請(qǐng)求做出響應(yīng)時(shí),也會(huì)被過(guò)濾器攔截,但這個(gè)攔截順序與之前相反,最終將響應(yīng)結(jié)果發(fā)送給客戶端瀏覽器。

1673229891627_領(lǐng)取課程.jpg

分享到:

Java培訓(xùn)班課程javaee

Python培訓(xùn)機(jī)構(gòu)python大數(shù)據(jù)

web前端培訓(xùn)課程升級(jí)V8.5web

AI+設(shè)計(jì)培訓(xùn)課程ui

大數(shù)據(jù)培訓(xùn)課程cloud

軟件測(cè)試培訓(xùn)課程test

c

新媒體運(yùn)營(yíng)培訓(xùn)netmarket

產(chǎn)品經(jīng)理培訓(xùn)課程pm

linux培訓(xùn)Linux

movies

智能機(jī)器人培訓(xùn)robot

電商視覺(jué)設(shè)計(jì)課程uids

AI

集成電路應(yīng)用開(kāi)發(fā)(嵌入式)培訓(xùn)課程jdbc

在線咨詢 我要報(bào)名
和我們?cè)诰€交談!