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頭和資料。 |
主要是處理客戶端的請求並將其結果傳送到客戶端。 |