JSP筆記——8.Filter介紹

跟它的名字一樣,filter能夠攔截特定的用戶請求或者相應,並對這些東西進行處理。雖然很少用,不過也可以對request進行response。filter可以攔截多個請求相應,一個請求響應也可以被多個filter攔截。使用filter只需要創建filter處理類,然後在xml中配置filter。


創建filter類

必須實現Filter接口,裏面要有三個方法:init用於初始化filter;destroy用於銷燬filter前完成某些資源的回收;doFilter實現過濾功能。因爲filter是處理鏈中的一部分,因此要有chain.doFilter這個方法。在這個方法之前是request預處理,這個方法之後是response後處理。


配置Filter

因爲filter是servlet增強版,所以配置上也是比如出一轍,filter中配置name跟class,filter-mapping中配置name跟url(同樣也可以通過註解配置,但是太不人性化了)。

filter與servlet只是,filter的doFilter方法裏面多了一個FilterChain參數,這個參數可以決定是否放行request請求。實際開發中可以把多個servlet中的相同代碼拿到filter中(但是必須保證順序)。Filter也可以在xml中設置初始參數。具體做法與servlet一樣。也是通過init-param子元素來實現。


使用URL Rewrte實現網站僞靜態

由於搜索引擎優先考慮收錄靜態html頁面,因此有必要將jsp僞裝成靜態的。用filter攔截所有發向html的請求,然後轉發到jsp即可。可以使用4.0.3版本的Url Rewrite開源項目來實現僞靜態。下載好對應的jar包,放在web-inf/lib下,然後在xml中配置名爲UrlRewriteFilter的過濾器,對應的類在那個jar包中,url樣式爲/*表示攔截所有請求。重點是:還要在web-inf路徑下增加urlrewrite.xml文件,該文件定義了僞靜態的映射規則,規則是基於正則表達式的。參考文檔1參考文檔2

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章