Filter:過濾器
概念:
web中的過濾器:當訪問服務器的資源時中剩,過濾器可以將請求攔截下來,完成一些特殊的功能笙隙。
-
過濾器的作用:
- 一般用于完成通知的操作。如:登陸驗證坎缭、統(tǒng)一編碼處理竟痰、敏感字符過濾。掏呼。坏快。
快速入門:
-
步驟:
定義一個類,實現(xiàn)接口Filter
復寫方法
-
配置攔截路徑
web.xml配置
-
注解配置
@webFilter("/*")//訪問所有資源時都會執(zhí)行該過濾器`
-
放行代碼:
filterChain.doFilter(servletRequest,servletResponse);
過濾器細節(jié):
- web.xml配置
<filter>
<filter-name>demo1</filter-name>
<filter-class>cn.qiqi.web.filter.Filterdemo1</filter-class>
</filter>
<filter-mapping>
<filter-name>demo1</filter-name>
<!-- 攔截路徑-->
<url-pattern>/-</url-pattern>
</filter-mapping>
-
過濾器執(zhí)行流程
執(zhí)行過濾器
執(zhí)行放行后的資源
回來執(zhí)行過濾器放行代碼下邊的代碼
-
過濾器生命周期方法
init: 在服務器啟動后憎夷,會創(chuàng)建Filter對象莽鸿,然后調用init方法。只執(zhí)行一次拾给,用于加載資源祥得。
doFilter: 每次請求被攔截資源時,會執(zhí)行蒋得。執(zhí)行多次级及。
destroy: 在服務器關閉后,F(xiàn)ilter對象被銷毀窄锅。如果服務器是正常關閉的创千,則執(zhí)行一次destroy方 法缰雇,只執(zhí)行一次,用于釋放資源追驴。
過濾器配置詳解
-
攔截路徑配置:
-
具體資源路徑:
/index.jsp
-
攔截目錄械哟;
/user/*
-
后綴名攔截:
*.jsp
-
攔截所有資源:
/*
-
-
攔截方式配置:資源被訪問的方式
注解配置:
-
設置dispatcherTypes屬性
REQUEST : 默認值。瀏覽器直接請求資源
FORWARD : 轉發(fā)訪問資源
INCLUDE : 包含訪問資源
ERROR : 錯誤跳轉資源
ASYNC : 異步訪問資源
-
web.xml配置
- 設置<dispatcher></dispatcher>標簽即可
- 過濾器鏈(配置多個過濾器)
-
執(zhí)行順序 :如果有兩個過濾器:1和2
1
2
資源執(zhí)行
2
1
-
過濾器先后順序問題:
注解配置:按照類名的字符串比較規(guī)則比較殿雪,值小的先執(zhí)行
web.xml配置: <filter-mapping>誰定義在上邊暇咆,誰先執(zhí)行