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