關於確定過濾器順序的容器規則

2021-04-18 12:10:43 字數 1383 閱讀 7739

先讓大家做一道題

根據以下dd片段,寫出對於每個請求的路徑,過濾器將以何種順序執行。假設filter1到filter5已經得到合適的宣告(答案在最下面)

filter1

/recipes/*

filter2

/recipes/hopslist.do

filter3

/recipes/add/*

filter4

/recipes/modify/modrecipes.do

filter5

/*

請求路徑

過濾器執行順序

/recipes/hopsreport.do

/recipes/hopslist.do

/recipes/modify/modrecipes.do

/hopslist.do

/recipes/add/addrecipes.do

如果大家都答對,那麼下面的內容就不必看了;如果還有疑義,請繼續往下看。

網上有很多對過濾器順序介紹都是輕描淡寫的,下面我們詳細介紹一下過濾器的順序。

我們來解釋一下容器是以何種順序呼叫filter鏈:

以下內容摘錄自servlet 2.4 規範

particular request uri is as follows:

1. first, the

2. next, the

什麼意思呢?容器建立過濾器鏈的順序是這樣的,首先將

filter

配置是的過濾器按其在配置檔案中的順序,組成鏈的第一部分;然後將配置是

按其在配置檔案中的順序,組成鏈的第二部分,鏈的末尾是被請求的資源。

用到我們這道題裡面,實際的

filter

鏈順序應該

filter1

、filter3

、filter5

、filter2

、filter4

;filter1

、filter3

、filter5

的配置是

,所以它們組成連的第一部分,剩下就是 

filter2

、filter4

。所以這到題目的答案就應該是:

請求路徑

過濾器執行順序

/recipes/hopsreport.do

過濾器:1、5

/recipes/hopslist.do

過濾器:1、5、2

/recipes/modify/modrecipes.do

過濾器:1、5、4

/hopslist.do

過濾器:5

/recipes/add/addrecipes.do

過濾器:1、3、5

過濾器匹配規則 執行順序

所謂過濾器,其實就是乙個服務端元件,用來擷取使用者端的請求與響應資訊。具體流程如下 過濾器的應用場景 1.對使用者請求進行統一認證,保證不會出現使用者賬戶安全性問題 2.編碼轉換,可在服務端的過濾器中設定統一的編碼格式,避免出現亂碼 3.對使用者傳送的資料進行過濾替換 4.轉換影象格式 5.對響應的...

MVC過濾器 過濾器執行順序

如果某個action過濾器運用了多種過濾器,那麼過濾器的執行順序是如何呢?即執行順序是 授權過濾器 動作過濾器 結果過濾器 異常過濾器。注意 如果actionfilter過濾器執行過程中發生了異常,那麼會執行exceptionfilter過濾器,不會執行resultfilter過濾器。上圖所示的是正...

Java 過濾器的順序

現有三個過濾器 afilterfilter name com.jerry.filter.afilterfilter class filter bfilterfilter name com.jerry.filter.bfilterfilter class filter cfilterfilter na...