JavaWeb的三大元件之過濾器
JavaWeb過濾器
過濾器可以讓請求得到目標資源,也可以不讓請求達到! * 過濾器有攔截請求的能力,且過濾器是單例模式!
過濾器的實現方法:
1. 寫一個類實現Filter介面(注意匯入的是:javax.servlet.Filter介面) 2. 在web.xml中進行配置,以下為具體配置格式
<filter> <filter-name>helloFilter</filter-name> <filter-class>包名.類名</filter-class> </filter> <filter-mapping> <filter-name>helloFilter</filter-name> <url-pattern>/要過濾的資源(/*時為過濾所有資源)</url-pattern> </filter-mapping>
Filter介面的方法:
void init(FilterConfig):建立Filter後執行,在伺服器啟動時建立
* FilterConfig引數-->與ServletConfig相似 * 獲取初始化引數:getInitParameter() * 獲取過濾器名稱:getFilterName() * 獲取appliction:getServletContext() void destory():過濾器銷燬之前執行!在伺服器關閉時銷燬 void doFilter(ServletRequest,ServletResponse,FilterChain):每次過濾時都會執行,判斷是否通過過濾器
* FilterChain引數 * doFilter(ServletRequest, ServletResponse):通過當前過濾器,若有多個過濾器則到達下一過濾器。
過濾器的過濾順序:根據web.xml的<filter-mapping>的位置從上到下過濾,與過濾資源無關(即與<url-pattern>值無關)。
過濾器的四種過濾方式:需要在<filter-mapping>裡配置以下標籤,四種過濾方式可以隨意搭配使用來面對不同的情況
<dispatcher>REQUEST</dispatcher>:過濾請求,沒有設定時的預設方式,當設定了其它過濾方式時會
使用其它過濾方式,預設過濾方式消失。
<dispatcher>FORWARD</dispatcher>:過濾轉發
<dispatcher>INCLUDE</dispatcher>:過濾包含
<dispatcher>ERROR</dispatcher>: 過濾錯誤