web.xml中的filter

filter作用

從J2EE1.3開始,Servlet2.3規範中加入了對過濾器的支持,實現javax.servlet.Filter接口。過濾器能夠對目標資源的請求、響應進行截取。

Filter-class中指定的自定義過濾器必須繼承javax.servlet.Filter,且必須實現下面3個方法:

init()方法負責初始化,一般情況下讀取配置文件中的init-param參數值。

doFilter()負責過濾的業務邏輯,且能通過chain.doFilter()交給下一個控制器。

destroy()方法負責銷燬資源。

filter工作方式

第一種:request過濾器。只有直接訪問該目標資源時該過濾器纔會起作用。

第二種:forward過濾器。對轉發到目標資源的請求過濾。

第三種:include過濾器。

在JSP頁面中的動作:<jsp:include page=.......

在Java代碼中的動作:request.getRequestDispatcher
("....").include

注意:如果目標資源1通過<%@ include file="目標資源2"%指令,這時此過濾器不工作。

第四種:error過濾器。配置了過濾器對錯誤頁面進行過濾,正常請求不會攔截,當出現錯誤的時候,會跳轉到改過濾器。

filter調用順序

在web.xml中過濾器的調用順序,是由<filter-mapping/>元素的定義位置來決定的,哪個filter的<filter-mapping/>元素在前面則哪個filter首先被調用。

filter的作用範圍(dispatcher)

Filter的作用範圍是由dispatcher屬性來指定,該屬性默認值是request。

Dispatcher屬性含義是:該過濾器對哪些途徑來的資源來進行過濾。這些途徑可以是請求、轉發、包含、聲明式錯誤。

<filter/>標籤

<filter-name/>指定Filter的名字,方便引用。

<filter-class/>指定Filter的實現類。

<filter-mapping/>標籤

<filter-name/>引用的Filter名字。

<url-pattern/>指定Filter負責攔截的URL地址。

<dispatcher/>指定Filter作用範圍。

<url-pattern/>匹配規則

精確路徑匹配優先、最長路徑匹配優先、擴展匹配。

在web.xml文件中,以下語法用於定義映射:

1.以”/”開頭和以”/*”結尾的,是用來做路徑映射的

2.以前綴”*.”開頭的,是用來做擴展映射的。

3.只有”/”的,是用來定義default servlet映射的。

4.剩下的都是用來定義詳細映射的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章