Filter可以視作是servlet的加強(qiáng)版,主要用作對(duì)用戶的請(qǐng)求進(jìn)行預(yù)處理,或者對(duì)返回給客戶端的結(jié)果進(jìn)行再次加工,是一個(gè)典型的鏈?zhǔn)教幚砟J健1酒?jiǎn)單介紹filter的基本使用方法,主要涉及以下內(nèi)容:

  • Filter的背景知識(shí)

  • 使用Filter的流程

  • Filter的生命周期

  • 一個(gè)完整的實(shí)例

一、Filter的簡(jiǎn)單介紹
     Filter在英文中是過(guò)濾器的意思,當(dāng)然在此處的使用也是完美的切合了它的意思,我們使用filter的主要目的就是完成一個(gè)過(guò)濾的作用??梢栽谝粋€(gè)請(qǐng)求到達(dá)servlet之前,將其截取進(jìn)行邏輯判斷,然后決定是否放行到請(qǐng)求的servlet。也可以在一個(gè)response到達(dá)客戶端之前,截取結(jié)果進(jìn)行邏輯判斷,然后決定是否允許返回給客戶端。所以filter有如下幾個(gè)種類:

  • 用戶授權(quán)的filter:filter負(fù)責(zé)判斷用戶是否有權(quán)限請(qǐng)求該頁(yè)面,給予過(guò)濾判斷

  • 日志filter:截取某個(gè)用戶在本網(wǎng)站上的所有請(qǐng)求,記錄軌跡

  • 負(fù)責(zé)解碼的filter:規(guī)定處理本次請(qǐng)求的解碼方式

最后需要注意的是,一個(gè)filter過(guò)濾器可以加在多個(gè)servlet控制器上,當(dāng)然多個(gè)filter過(guò)濾器也是可以加在一個(gè)servlet控制器上的。由此也是可以看出來(lái),我們使用filter往往是對(duì)一些公共的操作進(jìn)行處理,例如:判斷用戶權(quán)限,解碼本次請(qǐng)求等,還比如,我們的web應(yīng)用中某些頁(yè)面是需要用戶登錄后才能訪問(wèn)的,以往我們都是在每個(gè)servlet頁(yè)面加上判斷控制,導(dǎo)致代碼冗余,有了filter,我們可以定義一個(gè)實(shí)現(xiàn)了filter的過(guò)濾器,讓需要判斷是否登錄的頁(yè)面都加上這么一個(gè)過(guò)濾器,可以大大降低代碼的冗余程度。

二、Filter的使用流程
     在Java中如果想要自定義一個(gè)filter過(guò)濾器的話,需要繼承Javax.servlet.Filter接口,這個(gè)接口中只有三個(gè)方法:

defa
        
		

網(wǎng)友評(píng)論