1. 程式人生 > >Filter與Servlet的區別和聯絡

Filter與Servlet的區別和聯絡



Filter

Servlet

介面

實現Filter介面

實現Servlet介面

使用步驟

1、建立類,繼承介面

2、實現方法

init()

doFilter()

destroy()

3、配置WEB-INF/web.xml

1、建立類,繼承介面

2、實現方法

init()

service()

destroy()

getServletConfig()

getServletInfo()

3、配置WEB-INF/web.xml

初始化時間

Servlet容器啟動之後即初始化

Servlet類被呼叫之後初始化、先於Filter呼叫。

初始化可以在容器啟動後被呼叫但需要配置。

呼叫順序

1. 按照web.xml中的對映配置順序按照配置條件從後向前呼叫

2. 層次呼叫doFilter()方法中FilterChain.doFilter()之前的內容

3. 呼叫Servlet中的service()方法

4. service方法執行完畢後,層次呼叫doFilter()中FilterChain.doFilter()之後的方法,順序與之前的相反

按照web.xml中的對映配置順序按照配置條件從後向前呼叫第一個滿足條件的Servlet,呼叫之前事先執行滿足條件的Filter,不存在層次呼叫Servlet問題

銷燬

伺服器停止後銷燬,晚於Servlet銷燬之後

伺服器停止後銷燬

作用

1. 在HttpServletRequest到達Servlet之前,攔截客戶的HttpServletRequest。

2. 根據需要檢查HttpServletRequest,也可以修改HttpServletRequest頭和資料。

3. 在HttpServletResponse到達客戶端之前,攔截HttpServletResponse。

4. 根據需要檢查HttpServletResponse,也可以修改HttpServletResponse頭和資料。

主要是處理客戶端的請求並將其結果傳送到客戶端。

Filter

Servlet

介面

實現Filter介面

實現Servlet介面

使用步驟

1、建立類,繼承介面

2、實現方法

init()

doFilter()

destroy()

3、配置WEB-INF/web.xml

1、建立類,繼承介面

2、實現方法

init()

service()

destroy()

getServletConfig()

getServletInfo()

3、配置WEB-INF/web.xml

初始化時間

Servlet容器啟動之後即初始化

Servlet類被呼叫之後初始化、先於Filter呼叫。

初始化可以在容器啟動後被呼叫但需要配置。

呼叫順序

1. 按照web.xml中的對映配置順序按照配置條件從後向前呼叫

2. 層次呼叫doFilter()方法中FilterChain.doFilter()之前的內容

3. 呼叫Servlet中的service()方法

4. service方法執行完畢後,層次呼叫doFilter()中FilterChain.doFilter()之後的方法,順序與之前的相反

按照web.xml中的對映配置順序按照配置條件從後向前呼叫第一個滿足條件的Servlet,呼叫之前事先執行滿足條件的Filter,不存在層次呼叫Servlet問題

銷燬

伺服器停止後銷燬,晚於Servlet銷燬之後

伺服器停止後銷燬

作用

1. 在HttpServletRequest到達Servlet之前,攔截客戶的HttpServletRequest。

2. 根據需要檢查HttpServletRequest,也可以修改HttpServletRequest頭和資料。

3. 在HttpServletResponse到達客戶端之前,攔截HttpServletResponse。

4. 根據需要檢查HttpServletResponse,也可以修改HttpServletResponse頭和資料。

主要是處理客戶端的請求並將其結果傳送到客戶端。