web.xml中元素執(zhí)行的順序listener->filter->struts攔截器->servlet谅畅。
1.過濾器的概念
Java中的Filter 并不是一個標(biāo)準(zhǔn)的Servlet 丰泊,它不能處理用戶請求,也不能對客戶端生成響應(yīng)唾那。 主要用于對HttpServletRequest 進(jìn)行預(yù)處理,也可以對HttpServletResponse 進(jìn)行后處理褪尝,是個典型的處理鏈闹获。
優(yōu)點(diǎn):過濾鏈的好處是,執(zhí)行過程中任何時候都可以打斷河哑,只要不執(zhí)行chain.doFilter()就不會再執(zhí)行后面的過濾器和請求的內(nèi)容避诽。而在實(shí)際使用時,就要特別注意過濾鏈的執(zhí)行順序問題
2.過濾器的作用描述
在HttpServletRequest 到達(dá)Servlet 之前璃谨,攔截客戶的HttpServletRequest 沙庐。根據(jù)需要檢查HttpServletRequest ,也可以修改HttpServletRequest 頭和數(shù)據(jù)佳吞。在HttpServletResponse 到達(dá)客戶端之前拱雏,攔截HttpServletResponse 。根據(jù)需要檢查HttpServletResponse 底扳,可以修改HttpServletResponse 頭和數(shù)據(jù)古涧。
3.過濾器的執(zhí)行流程
4.Filter接口
1.如何驅(qū)動
在 web 應(yīng)用程序啟動時,web 服務(wù)器將根據(jù) web.xml 文件中的配置信息來創(chuàng)建每個注冊的 Filter 實(shí)例對象花盐,并將其保存在服務(wù)器的內(nèi)存中
2.方法介紹
init() ?Init 方法在 Filter 生命周期中僅執(zhí)行一次羡滑,web 容器在調(diào)用 init 方法時 ??tomcat啟動時出調(diào)用
doFilter()? Filter 鏈的執(zhí)行? 過濾方法在請求發(fā)出后立即調(diào)用菇爪,過濾特定的URL
destory() ?在Web容器卸載 Filter 對象之前被調(diào)用。該方法在Filter的生命周期中僅執(zhí)行一次柒昏。在這個方法中凳宙,可以釋放過濾器使用的資源。
5.FilterChain接口
1.如何實(shí)例化 ? ?代表當(dāng)前 Filter 鏈的對象职祷。由容器實(shí)現(xiàn)氏涩,容器將其實(shí)例作為參數(shù)傳入過濾器對象的doFilter()方法中
2.作用 ? 調(diào)用過濾器鏈中的下一個過濾器
filter實(shí)例:
web.xml配置