問題:
要在請求被處理之前,之後攔截並過濾操作乙個請求和它的響應。
所謂請求的預處理和後處理,是指在請求的核心處理操作起之前、之後進行的操作。有些操作決定了處理過程是否還要繼續,另一些則把輸入輸出資料流轉化成合適進一步的形式。比如:
對於這些(以及其他很多)請求處理過程,一種常見的處理思路是用一長串的條件檢查實現,通常會有巢狀的if/else語句來控制執行的流程。但是,既然在每個處理語句中執行的都是相似的操作,就會生成許多重複的**。這樣進行預處理和後處理導致**質量脆弱、滿是複製-貼上份各國的程式,因為控制流程以及特定的處理操作和應用邏輯混在了一起。
而且這樣的做法還會加大預處理/後處理元件與核心應用處理**之間的耦合。
約束
解決方案
使用攔截過濾器,作為乙個可插拔式的過濾器,實現請求、響應的預處理和後處理。另有乙個過濾器管理器,負責把各個處於松耦合關係的過濾器結合成乙個鏈,並把控制一次委派給合適的過濾器。這樣一來,不必改動現有**就能夠以各種方式加入、刪除、合併這些過濾器。
策略
標準過濾器策略
定製過濾器策略
基本過濾器策略
模版過濾器策略
web service 訊息處理策略
定製soap過濾器策略
jax-rpc過濾器策略
效果
飛彈攔截2
某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的高度。某天,雷達捕捉到敵國的飛彈來襲。由於該系統還在試用階段,所以只有一套系統,因此有可能不能攔截所有的飛彈。輸入飛彈依次飛來的高度 雷達給出...
飛彈攔截2
某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的高度。某天,雷達捕捉到敵國的飛彈來襲。由於該系統還在試用階段,所以只有一套系統,因此有可能不能攔截所有的飛彈。輸入飛彈依次飛來的高度 雷達給出...
shiro oauth2攔截流程
類圖的順序為 oauth2authenticationfilter authenticatingfilter authenticationfilter accesscontrolfilter pathmatchingfilter advicefilter onceperrequestfilter n...