Filter和Listener學習筆記

2021-10-24 16:23:56 字數 2290 閱讀 4011

概念:

快速入門:

步驟:

定義乙個類,實現介面filter

複寫方法

配置攔截路徑

web.xml註解

**:

@webfilter

("/*"

)//訪問所有資源之前,都會執行該過濾器

public

class

filterdemo1

implements

filter

@override

public

void

dofilter

(servletrequest servletrequest, servletresponse servletresponse, filterchain filterchain)

throws ioexception, servletexception

@override

public

void

destroy()

}

過濾器細節:

1. web.xml配置	

demo1

cn.itcast.web.filter.filterdemo1

/*2. 過濾器執行流程

1. 執行過濾器

2. 執行放行後的資源

3. 回來執行過濾器放行**下邊的**

3. 過濾器生命週期方法

1. init:在伺服器啟動後,會建立filter物件,然後呼叫init方法。只執行一次。用於載入資源

2. dofilter:每一次請求被攔截資源時,會執行。執行多次

3. destroy:在伺服器關閉後,filter物件被銷毀。如果伺服器是正常關閉,則會執行destroy方法。只執行一次。用於釋放資源

4. 過濾器配置詳解

* 攔截路徑配置:

1. 具體資源路徑: /index.jsp 只有訪問index.jsp資源時,過濾器才會被執行

2. 攔截目錄: /user/* 訪問/user下的所有資源時,過濾器都會被執行

3. 字尾名攔截: *.jsp 訪問所有字尾名為jsp資源時,過濾器都會被執行

4. 攔截所有資源:/* 訪問所有資源時,過濾器都會被執行

* 攔截方式配置:資源被訪問的方式

* 註解配置:

* 設定dispatchertypes屬性

1. request:預設值。瀏覽器直接請求資源

2. forward:**訪問資源

3. include:包含訪問資源

4. error:錯誤跳轉資源

5. async:非同步訪問資源

* web.xml配置

* 設定標籤即可

5. 過濾器鏈(配置多個過濾器)

* 執行順序:如果有兩個過濾器:過濾器1和過濾器2

1. 過濾器1

2. 過濾器2

3. 資源執行

4. 過濾器2

5. 過濾器1

* 過濾器先後順序問題:

1. 註解配置:按照類名的字串比較規則比較,值小的先執行

* 如: afilter 和 bfilter,afilter就先執行了。

* 增強物件的功能:

* 設計模式:一些通用的解決固定問題的方式

1. 裝飾模式

2. **模式

* 概念:

1. 真實物件:被**的物件

2. **物件:

3. **模式:**物件**真實物件,達到增強真實物件功能的目的

* 實現方式:

1. 靜態**:有乙個類檔案描述**模式

2. 動態**:在記憶體中形成**類

* 實現步驟:

1. **物件和真實物件實現相同的介面

2. **物件 = proxy.newproxyinstance();

3. 使用**物件呼叫方法。

4. 增強方法

* 增強方式:

1. 增強引數列表

2. 增強返回值型別

3. 增強方法體執行邏輯

servletcontextlistener:監聽servletcontext物件的建立和銷毀

步驟:

定義乙個類,實現servletcontextlistener介面

複寫方法

配置 web.xml

cn.itcast.web.listener.contextloaderlistener

* 指定初始化引數

註解:

Filter與Listener入門學習

1 概念 2 快速入門 webfilter 訪問所有資源之前都會執行該過濾器 public class filterdemo implements filter override public void dofilter servletrequest servletrequest,servletre...

interceptor和listener的比較

之前闡述過個人對servlet和filter的比較,這片文章簡要說一下interceptor和listener的比較 相關鏈結 先簡單介紹下interceptor和listener的概念 interceptor,也叫作 一條請求每經過乙個 就會觸發乙個相應的事件,如果用圖來表示的話就是 如圖,每經過...

說說Event和Listener和Adapter

仔細一查,發現的確是介面listener都有介面卡adapter,但是actionlistener沒有。因為這個介面只有乙個成員函式就是actionperformed 沒必要有adapter 然後查了一下api 幾乎大多數的都有,然後adapter主要implements於其listener和eve...