過濾器是一個程序,它先于與之相關的servlet或JSP頁面運行在服務器上。過濾器可附加到一個或多個servlet或JSP頁面上,并且可以檢查進入這些資源的請求信息。
在這之后,過濾器可以作如下的選擇:
①以常規(guī)的方式調用資源(即,調用servlet或JSP頁面)。
②利用修改過的請求信息調用資源。
③調用資源,但在發(fā)送響應到客戶機前對其進行修改。
④阻止該資源調用,代之以轉到其他的資源,返回一個特定的狀態(tài)代碼或生成替換輸出。
過濾器的工作原理
在Servlet作為過濾器使用時,它可以對客戶的請求進行處理。處理完成后,它會交給下一個過濾器處理,這樣,客戶的請求在過濾鏈里逐個處理,直到請求發(fā)送到目標為止。例如,某網站里有提交“修改的注冊信息”的網頁,當用戶填寫完修改信息并提交后,服務器在進行處理時需要做兩項工作:判斷客戶端的會話是否有效;對提交的數據進行統(tǒng)一編碼。這兩項工作可以在由兩個過濾器組成的過濾鏈里進行處理。當過濾器處理成功后,把提交的數據發(fā)送到最終目標;如果過濾器處理不成功,將把視圖派發(fā)到指定的錯誤頁面。
過濾器的生命周期
public void init(FilterConfig filterConfig) throws ServletException;//初始化
和我們編寫的Servlet程序一樣,Filter的創(chuàng)建和銷毀由WEB服務器負責。 web 應用程序啟動時,web 服務器將創(chuàng)建Filter 的實例對象,并調用其init方法,讀取web.xml配置,完成對象的初始化功能,從而為后續(xù)的用戶請求作好攔截的準備工作(filter對象只會創(chuàng)建一次,init方法也只會執(zhí)行一次)。開發(fā)人員通過init方法的參數,可獲得代表當前filter配置信息的FilterConfig對象。
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException;//攔截請求
這個方法完成實際的過濾操作。當客戶請求訪問與過濾器關聯的URL的時候,Servlet過濾器將先執(zhí)行doFilter方法。FilterChain參數用于訪問后續(xù)過濾器。
public void destroy();//銷毀
Filter對象創(chuàng)建后會駐留在內存,當web應用移除或服務器停止時才銷毀。在Web容器卸載 Filter 對象之前被調用。該方法在Filter的生命周期中僅執(zhí)行一次。在這個方法中,可以釋放過濾器使用的資源。
推薦教程:《java教程》
新聞標題:什么是過濾器?
當前URL:http://chinadenli.net/article20/chdjjo.html
成都網站建設公司_創(chuàng)新互聯,為您提供動態(tài)網站、響應式網站、虛擬主機、標簽優(yōu)化、企業(yè)網站制作、外貿建站
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯