先讓大家做一道題
根據以下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...