1. 程式人生 > >java_day30_javaWeb三大組件之過濾器Filter

java_day30_javaWeb三大組件之過濾器Filter

服務器 str bsp 求和 客戶端請求 error 意義 ppi strong

過濾器filter

一.簡介及原理

  1.Filter也稱之為過濾器,管理web服務器的所有web資源,如jsp,servlet,html,圖片等.如實現URL級別的權限訪問控制

  2.Filter接口中有一個doFilter方法,配置對哪個web資源進行攔截後,WEB服務器每次在調用web資源的service方法之前,都會先調用一下filter的doFilter方法,request請求和response響應都會進入配置的filter,根據filter內的代碼決定客戶端請求到的服務器的資源,如攔截,動態頁面靜態化等處理

二.過濾器註冊和映射Filter

  1.註冊

  <filter>
    <filter-name>FirstFilter</filter-name> //Filter名
    <filter-class>com.lanou3g.code0523.FirstFilter</filter-class> //Filter的全限定類名
  </filter>

  2.映射:通過web.xml註冊,也可以通過註解@WebFilter註冊
<filter-mapping>元素用於設置一個 Filter 所負責攔截的資源。一個Filter攔截的資源可通過兩種方式來指定:Servlet 名稱和資源訪問的請求路徑
  <filter-name>子元素用於設置filter的註冊名稱。該值必須是在<filter>元素中聲明過的過濾器的名字
  <url-pattern>設置 filter 所攔截的請求路徑(過濾器關聯的URL樣式)
  <servlet-name>指定過濾器所攔截的Servlet名稱。
  <dispatcher>指定過濾器所攔截的資源被 Servlet 容器調用的方式,可以是REQUEST,INCLUDE,FORWARD和ERROR之一,默認REQUEST。用戶可以設置多個<dispatcher> 子元素用來指定 Filter 對資源的多種調用方式進行攔截。

<filter-mapping>
<filter-name>testFilter</filter-name>   //映射的過濾器名稱
<url-pattern>/index.jsp</url-pattern>  //攔截的URL
<dispatcher>REQUEST</dispatcher>  //攔截request請求及請求重定向
<dispatcher>FORWARD</dispatcher> //攔截請求轉發
</filter-mapping>

 <dispatcher> 子元素可以設置的值及其意義:
REQUEST:當用戶直接訪問頁面時,Web容器將會調用過濾器。如果目標資源是通過RequestDispatcher的include()或forward()方法訪問
時,那麽該過濾器就不會被調用。
INCLUDE:攔截請求包含

.
FORWARD:攔截請求轉發.
ERROR:如果目標資源是通過聲明式異常處理機制調用時,那麽該過濾器將被調用。除此之外,過濾器不會被調用。

java_day30_javaWeb三大組件之過濾器Filter