當前位置:才華齋>IT認證>JAVA認證>

Servlet四種過濾器工作方式

JAVA認證 閱讀(1.91W)

Servlet四種過濾器工作方式,從J2EE1.3開始,Servlet2.3規範中加入了對過濾器的支援。過濾器能夠對目標資源的請求和響應進行擷取。過濾器的工作方式分為四種,下面讓我們分別來看看這四種過濾器的工作方式:

Servlet四種過濾器工作方式

  1、request過濾器

這種過濾器的工作方式比較簡單,大家也經常遇到,如下圖所示:以下是檔案配置方式:

myFilter

lter

myFilter

目標資源一

下面我們更改一下檔案的配置,如下方式:

myFilter

lter

myFilter

目標資源一

myFilter

目標資源二

也就是說此過濾器對目標資源一和目標資源二都進行過濾,然後當目標資源一被訪問的時候我們將請求轉發給目標資源二,那麼這個時候過濾器是怎麼工作的呢?如下圖所示:我們可以看到,當我們訪問目標資源一時過濾器截取了請求,然後再轉發給目標資源一,然後再轉發給目標資源二,從圖中我們可以看到過濾器沒有擷取轉發到目標資源二的請求,但是我們已經在檔案中配置了該過濾器對目標資源二的過濾,為什麼又沒有起到過濾作用呢?

答案就在於,目標資源一是客戶端直接訪問,而目標資源二是被轉發過來的,這時過濾器就不能過濾目標資源二。如果你直接訪問目標資源二,你會發現該過濾器起到了作用?

我們上面的檔案配置與以下方式等價:

myFilter

myFilter

lter

myFilter

目標資源一

REQUEST

myFilter

目標資源二

REQUEST

這種方式的.配置,說明只有直接訪問該目標資源時該過濾器才會起作用,對轉發到該目標資源的請求將忽略不處理。

那如果我想對轉發到目標資源二的請求進行過濾,那怎麼辦呢?答案見,下一種過濾器,forward過濾器。

  2、forward過濾器

我們將檔案的配置修改如下:

myFilter

myFilter

lter

myFilter

目標資源一

REQUEST

myFilter

目標資源二

FORWARD

工作方式如下圖所示:

我們看對目標資源二過濾的配置方式,這時過濾方式為forward,也就是說對轉發到目標資源二的請求過濾,如果直接訪問目標資源二,過濾器將不起作用。

  3、include過濾器

理解了forward過濾器之後,include過濾器就不難理解了。以下方式:

myFilter

目標資源二

INCLUDE

此表示對包含了目標資源二的請求過濾,如果直接訪問目標資源二,則此過濾器將不起作用。

include包含以下語句:

在JSP頁面中的動作:指令包含,這時此過濾器不工作。

  4、error過濾器

當我們訪問一個web目標資源時,如果服務器沒有找到該目標資源,那麼伺服器就會給出一個404錯誤程式碼。如果我們給404錯誤程式碼定義一個頁面,那麼當404錯誤發生時就會呼叫該頁面,請看以下檔案的配置:

myFilter

/

ERROR

404

/

當我們訪問一個不存在的檔案時,就會訪問,但是配置了過濾器對錯誤頁面進行過濾,所以過濾器先接受到請求,然後再轉發給.

如果我們訪問一個已經存在的頁面,會不會呼叫呢?如果這個頁面中有Error(404,“出錯了!”);那麼該錯誤頁面仍然會被呼叫,過濾器也會工作。