Filter的FilterChain執行順序

2021-10-12 06:51:40 字數 1876 閱讀 3049

當使用多個filter時,這些filter將形成乙個filter鏈,web伺服器在例項化filter物件時,會將此filter鏈傳遞給dofilter的filterchain引數。當乙個filter執行dofilter方法時,在此方法中執行filterchain引數的dofilter方法,將會執行下乙個filter(filter鏈下乙個還是filter時)或者訪問web資源(filter鏈中沒有filter了),如圖所示:

下面是在web.xml中配置多個filter,通過程式來演示各個filter的其執行先後順序。

filterutils

cn.itcast.utils.filterutils

/*request

encodefilter

cn.itcast.utils.encodefilter

encoding

utf-8

/*request

filterjsp

cn.itcast.utils.filterjsp

/*request

三個filter

public class filterutils implements filter 

@override

public void dofilter(servletrequest req, servletresponse resp,

filterchain chain) throws ioexception, servletexception

@override

public void init(filterconfig config) throws servletexception }

public class encodefilter implements filter

@override

public void dofilter(servletrequest req, servletresponse resp,

filterchain chain) throws ioexception, servletexception

@override

public void init(filterconfig filterconfig) throws servletexception }

public class filterjsp implements filter

@override

public void dofilter(servletrequest req, servletresponse resp,

filterchain chain) throws ioexception, servletexception

@override

public void init(filterconfig config) throws servletexception

system.out.println("filterjsp init...."); }

}

//初始化結果:

filterutils init…

encodefilter init…

filterjsp init…

//訪問web資源時的結果

filterutils start…

encodefilter start…

filterjsp start…

你好中國

filterjsp end…

encodefilter end…

filterutils end…

//web伺服器關閉時結果:

filterutils destory…

encodefilter destroy…

filterjsp destory…

filter執行先後問題 Filter執行順序

asp.net mvc framework支援四種不同型別的filter authorization filters 實現iauthorizationfilter介面的屬性.action filters 實現iactionfilter介面的屬性.result filters 實現iresultfil...

filter的簡單認識

filter 把傳入的函式依次作用於每個元素,然後根據返回值是 true還 是false決定保留還是丟棄該元素。注意到filter 函式返回的是乙個iterator,也就是乙個惰性序列,所以要強迫filter 完成計算結果,需要用list 函式獲得所有結果並返回list。下面 是為了實現回數的判斷和...

filter 的各種值

之前只用過filter的opacity,竟然不知道filter還有很多的值,可以在我們的專案中設定使用。下面將會使用 屬性值的方式介紹filter。1.none。預設值,沒有效果。2.blur。給影象設定高斯模糊。radius 一值設定高斯函式的標準差,或者是螢幕上以多少畫素融在一起,所以值越大越模...