|
|
在實作Filter介面時必須實作init()方法,該方法傳入一個FilterConfig物件作為參數,它包括了一些容器傳遞給Filter,有關於Filter的相關設定資訊,您可以透過下面幾個方法來取得這些資訊: public java.lang.String getFilterName()
其中getInitParameter()與getInitParameterNames()資訊的取得來源,即web.xml中設定的參數訊息,使用方
法與之前設定Servlet時相同,一個例子如下:
public java.lang.String getInitParameter(java.lang.String name) public java.util.Enumeration getInitParameterNames() public ServletContext getServletContext()
... 在Servlet 2.3之前,Filter的觸發只能透過使用者的直接請求,而在Servlet 2.4之後,您可以透過幾個可能的轉發或包括等方式來觸發Filter,這可以在web.xml中加以設定,觸發Filter的方式有FORWARD、 INCLUDE、REQUEST與ERROR,即轉發、包含、請求與錯誤網頁請求時,預設的觸發方式是REQUEST,您可以使用< dispatcher>標籤來加以設定,例如:
... 除了在doFilter()中撰寫簡單的過濾功能、添加request或response的資訊之外,您也許還會想要直接的加強request與 response的處理方式,例如增加對請求資源的壓縮功能,這種在原來的request與response功能之上,再添加額外的處理功能,可以採用 Decorator 模式。 在Servlet 2.4之後,提供了實作裝飾模式的Wrapper類別:ServletRequestWrapper、ServletResponseWrapper、 HttpServletRequestWrapper、HttpServletResponseWrapper,前兩者分別實作了 ServletRequest與ServletResponse,後兩者則分別又繼承了前兩者,您可以繼承這些類別,以裝飾模式來添加request與 response的額外處理能力。 |