整個struts的入口就在FilterDispatcher這個過濾器上(struts用FilterDispatcher再進行請求分發等等功能),可見servlet過濾器的重要做用html
什麼叫過濾器呢?
過濾器就是能夠對瀏覽器向jsp,servlet,html等這些web資源發出請求和服務器迴應給瀏覽器的內容,他能夠進行過濾。這個過濾過程當中能夠攔截瀏覽器發出的請求和服務器迴應給瀏覽器的內容。攔截以後,就能夠進行查看,而且能夠對攔截內容進行提取,或者進行修改。Servlet過濾器攔截請求和響應,以便查看,提取或操做客戶機和服務器之間
交換數據。
Servlet過濾器的用途:
用戶認證與受權管理:咱們開發一個web應用,確定有不一樣權限的用戶,有管理員,有普通用戶。而管理員又可能分爲一級管理員,二級管理員,三級管理員。每一級管理員可能又有不一樣的管理權限操做,訪問不一樣的資源。過去咱們可能都是在jsp頁面,servlet中加以權限的控制。經過session,看他是否有這個權限,若是有,則讓他操做某個資源。這些都是些共性。那麼如今咱們就能夠把他提取出來。讓他經過過濾器來實現;用戶來訪問一個資源,咱們經過過濾器來過濾這個請求,在程序中判斷是否有權限來訪問這個資源;有,則讓他去訪問,沒有,就讓他轉到另一個頁面。這樣經過過濾器就實現了受權管理;
統計web應用的訪問量,和訪問的命中率,報告;
實現web應用的日誌處理功能;
實現數據壓縮功能;
對傳輸的數據進行加密;
實現XML文件的XSLT轉換;
實現Servlet過濾器
編寫實現javax.servlet.Fillter接口的類;
package javax.servlet;
import java.io.IOException;
public interface Filter{
public void init(FilterConfig filterConfig)throws ServletException;
public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)throws IOException, ServletException;
public void destroy();
}
配置servlet過濾器;
過濾器須要經過web.xml進行配置
<filter>定義過濾器的名稱,而且聲明實現類
<filter-mapping>將過濾器與Servlet或URL模式關聯。
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>webbook.hongten.CharacterEncodingFilter</filter-class>
</filter>java
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
web
參考:Java Web Servlet過濾器瀏覽器