Filter也稱之為過濾器,它是Servlet技術(shù)中最激動人心的技術(shù)之一,WEB開發(fā)人員通過Filter技術(shù),對web服務(wù)器管理的所有web資源:例如Jsp,
Servlet, 靜態(tài)圖片文件或靜態(tài)html文件等進行攔截,從而實現(xiàn)一些特殊的功能。例如實現(xiàn)URL級別的權(quán)限訪問控制、過濾敏感詞匯、壓縮響應(yīng)信息等
一些高級功能。
Servlet API中提供了一個Filter接口,開發(fā)web應(yīng)用時,如果編寫的Java類實現(xiàn)了這個接口,則把這個java類稱之為過濾器Filter。通過Filter技術(shù),開發(fā)人員可以實現(xiàn)用戶在訪問某個目標(biāo)資源之前,對訪問的請求和響應(yīng)進行攔截。
Filter接口中有一個doFilter方法,當(dāng)我們編寫好Filter,并配置對哪個web資源進行攔截后,WEB服務(wù)器每次在調(diào)用web資源的service方法之前,都會先調(diào)用一下filter的doFilter方法,因此,在該方法內(nèi)編寫代碼可達到如下目的:1. 調(diào)用目標(biāo)資源之前,讓一段代碼執(zhí)行。2.是否調(diào)用目標(biāo)資源(即是否讓用戶訪問web資源)。3.調(diào)用目標(biāo)資源之后,讓一段代碼執(zhí)行。
web服務(wù)器在調(diào)用doFilter方法時,會傳遞一個filterChain對象進來,filterChain對象是filter接口中最重要的一個對象,它也提供了一個doFilter方法,開發(fā)人員可以根據(jù)需求決定是否調(diào)用此方法,調(diào)用該方法,則web服務(wù)器就會調(diào)用web資源的service方法,即web資源就會被訪問,否則web資源不會被訪問。