javaWeb過濾器Filter例項(1)HelloWorld?

1>Filter的基本功能是對Servlet容器呼叫Servlet的過程進行攔截,從而在Servlet進行響應處理的前實現一些特殊的功能。 2>在ServletAPI中定義了三個介面類來供開發人員編寫Filter程式:Filter,FilterChain,FilterConfig 3>Filter程式是一個實現了Filter介面的Java類,與Servlet程式相似,它由Servlet容器進行呼叫和執行 4>Filter程式需要在web.xml檔案中進行註冊和設定它所能攔截的資源: Filter程式可以攔截JSP,Servlet靜態圖片檔案和靜態html檔案

方法/步驟

1.新建兩個JSP檔案

javaWeb過濾器Filter例項(1)HelloWorld

2.首頁做個跳轉到result.jsp

javaWeb過濾器Filter例項(1)HelloWorld

3.結果頁面僅輸出一句話,表示到達結果頁

javaWeb過濾器Filter例項(1)HelloWorld

4.執行首頁

javaWeb過濾器Filter例項(1)HelloWorld

5.點選連線,到達結果頁,這是一個正常的跳轉

javaWeb過濾器Filter例項(1)HelloWorld

6.現在給它加上一個攔截器,新建HelloWorldFilter.java檔案

javaWeb過濾器Filter例項(1)HelloWorld

7.讓它實現 Filter 介面,併為每個方法輸出方法名,我們看下這個攔截器是如何執行的

javaWeb過濾器Filter例項(1)HelloWorld

8.在web.xml中註冊並對映攔截器

javaWeb過濾器Filter例項(1)HelloWorld

9.再次啟動工程,發現,inIt方法在Servlet容器載入當前WEB應用時即被建立,且只被呼叫一次。該方法用於對當前的Filter進行初始化操作

javaWeb過濾器Filter例項(1)HelloWorld

10.當點選連線後發現呼叫doFilter方法,跳轉到結果頁面,但是頁面上並沒有輸出我們想要的結果

javaWeb過濾器Filter例項(1)HelloWorld

11.再次重新整理結果頁,發現,重新整理一次,呼叫一次doFilter方法,

說明:真正Filter的邏輯程式碼需要編寫在該方法中,每次呼叫都會呼叫該方法。

javaWeb過濾器Filter例項(1)HelloWorld

12.在doFilter中增加如下程式碼即:

doFilter(ServletRequest request,ServletResponse response)把請求傳給Filter鏈的下一個Filter,

它是 FilterChain:Filter鏈,多個Filter可以構成Filter鏈。

若當前Filter是鏈的最後一個,則把請求傳給目標Servlet(或JSP)

多個Filter 攔截的順序和 配置的順序有關,靠前的先被呼叫。

javaWeb過濾器Filter例項(1)HelloWorld

13.執行結果,現在返回到正常的結果頁面

javaWeb過濾器Filter例項(1)HelloWorld

14.通俗來講,攔截器就是一個門衛,讓你進去你就進去,讓你去哪裡你就去哪裡!

檔案, 程式, 過濾器, 例項, 容器,
相關問題答案