Filter可以視作是servlet的加強版,主要用作對用戶的請求進行預處理,或者對返回給客戶端的結(jié)果進行再次加工,是一個典型的鏈式處理模式。本篇簡單介紹filter的基本使用方法,主要涉及以下內(nèi)容:
Filter的背景知識
使用Filter的流程
Filter的生命周期
一個完整的實例
一、Filter的簡單介紹
Filter在英文中是過濾器的意思,當然在此處的使用也是完美的切合了它的意思,我們使用filter的主要目的就是完成一個過濾的作用??梢栽谝粋€請求到達servlet之前,將其截取進行邏輯判斷,然后決定是否放行到請求的servlet。也可以在一個response到達客戶端之前,截取結(jié)果進行邏輯判斷,然后決定是否允許返回給客戶端。所以filter有如下幾個種類:
用戶授權(quán)的filter:filter負責判斷用戶是否有權(quán)限請求該頁面,給予過濾判斷
日志filter:截取某個用戶在本網(wǎng)站上的所有請求,記錄軌跡
負責解碼的filter:規(guī)定處理本次請求的解碼方式
最后需要注意的是,一個filter過濾器可以加在多個servlet控制器上,當然多個filter過濾器也是可以加在一個servlet控制器上的。由此也是可以看出來,我們使用filter往往是對一些公共的操作進行處理,例如:判斷用戶權(quán)限,解碼本次請求等,還比如,我們的web應用中某些頁面是需要用戶登錄后才能訪問的,以往我們都是在每個servlet頁面加上判斷控制,導致代碼冗余,有了filter,我們可以定義一個實現(xiàn)了filter的過濾器,讓需要判斷是否登錄的頁面都加上這么一個過濾器,可以大大降低代碼的冗余程度。
二、Filter的使用流程
在Java中如果想要自定義一個filter過濾器的話,需要繼承Javax.servlet.Filter接口,這個接口中只有三個方法:
defa