J2EE Filter 基礎知識總結

2021-10-24 01:55:27 字數 3078 閱讀 3871

filter(過濾器)

tomcat 提供的乙個元件,類似 servlet 機制與使用方式

是乙個特殊的 servlet

過濾什麼? 什麼時候使用?

自己定義乙個類,繼承 httpfilter

重寫方法,重寫 dofilter、init、destroy

dofilter 方法的三個引數,httpservletrequest、httpservletresponse、filterchain

可以丟擲兩個異常,servletexception、ioexception

配置 web.xml 檔案

>

>

***/filter-name>

>

類全名filter-class

>

filter

>

>

>

***filter-name

>

>

/請求名url-pattern

>

>

//放行前做事..

.chain.

dofilter

(request, response)

;//放行

//放行後做事..

.

雖然 filter 可以實現 servlet 全部功能,但是使用上最好作為過濾器(一般而言,乙個過濾器是用來攔截多個請求的)

filter 攔截請求的三種寫法(web.xml 配置檔案的寫法):

>

/請求名url-pattern

>

>

/*url-pattern

>

>

*.jspurl-pattern

>

filter 的使用場景:使用者認證

事務的處理

字符集處理…

(1)filter 物件採用生命週期託管方式實現單例模式

(2)預設效果是立即載入模式

與 servlet 的延遲載入模式不同,filter 是立即載入模式,並且不能通過配置 load-on-startup 來進行修改優先順序

因為 filter 必須要在 servlet、jsp 之前載入好,所以只能是立即載入模式

(3)filter 物件生命週期

tomcat9 為了更好的管理物件的產生和銷毀,提供了三個方法標識 filter物件的生命週期

init()

servlet物件建立的時候呼叫的,像似構造方法

dofilter()

執行體destroy()

servlet物件被**的時候呼叫的,像 finalize() 方法

(4)filter 物件載入時,可以攜帶資訊

在 web.xml 配置檔案中新增以下內容:

>

...>

>

key1param-name

>

>

value1param-value

>

init-param

>

...>

>

keynparam-name

>

>

valuenparam-value

>

init-param

>

filter

>

>

...>

與此對應的,filter物件生命週期的init()方法有乙個過載方法讀取 filter 物件載入時攜帶的資訊

filter 的繼承關係與 servlet 的繼承關係是非常類似的,

抽象的父類 genericfilter,實現三個介面,體現了預設介面卡模式;還增加了 init 方法過載

public

void

init

(filterconfig filterconfig)

throws servletexception

(1)filter 攔截請求

>

...filter

>

>

...>

requestdispatcher

>

>

forwarddispatcher

>

>

預設是只配置request

如果只配置forward會將預設效果覆蓋掉,只過濾請求**,

所以想要過濾任意請求,需要配置兩行。

(2)filter 處理請求

多個 filter 與 同乙個 servlet,執行順序本質上是方法的壓棧與彈棧;

執行到某個 filter 時並沒有執行chain.dofilter(request, response);,那就沒有後面的 filter 或者 servlet 的事了,而是執行該 filter 中的響應或者重定向或者**或者…

(3)filter 鏈是責任鏈設計模式

責任鏈設計模式(chain of responsbility pattern)與雙向鍊錶非常相似,差別點:

J2EE Filter 初次接觸

最近在做乙個drp 的專案,其中要給所有的request物件進行字符集設定,要是單個設定工作量太大,所以採用filter 過濾器 進行統一設定。filter實現了面向切面 aop 的程式設計思想,可以通過簡單的修改配置檔案給系統統一新增或去除一項功能。下面是我對的filter的簡單總結 filter...

Jupyter Notebook基礎知識總結

一 各個選項解釋 在notebook頁面開啟時,頁面的右上角有乙個news選項 裡面有四個選項 text file 文字檔案 類似於乙個文字編輯器 folder 資料夾 terminal 終端 開啟python3會來到如下介面 第一行的選項分別為 file 檔案 edit 編輯 view inser...

C 基礎知識整理 基礎知識(2) 類

類,是物件導向語言的基礎。類的三大特性 封裝 繼承 多型。最基本的特性就是封裝性。程式設計師用程式描述世界,將世界的所有事物都看成物件,怎麼描述這個物件?那就是類了。也就是用類來封裝物件。用書上的話說,類是具有相同屬性和行為的物件的抽象。寶馬汽車 別克汽車 五菱之光汽車.基本具有相同的屬性和行為,所...