1. 程式人生 > >Filter過濾器的作用和工作原理

Filter過濾器的作用和工作原理

對於一個web應用程式來說,過濾器是處於web容器內的一個元件,它會過濾特定請求資源請求資訊和響應資訊。一個請求來到時,web容器會判斷是否有過濾器與該資訊資源相關聯,如果有則交給過濾器處理,然後再交給目標資源,響應的時候則以相反的順序交給過濾器處理,最後再返回給使用者瀏覽器。

過濾器類需要實現javax.servlet.Filter,該介面的doFilter()方法是業務處理的核心程式碼區,類似於servlet的service()方法。doFilter()方法的引數列表有一個FilterChain介面的實現物件,它只有一個方法doFilter(),在呼叫該方法之前的程式碼會在達到目標資源前執行,之後的程式碼會在目標資源已經響應後執行,例如:

public class MyFilter implements Filter{
    //過濾器的邏輯業務方法
    public void doFilter(ServletRequest req,ServletResponse res,FilterChain chain)throws IOException,ServletException{
    //達到目標資源前的程式碼
    ...
    //該方法的呼叫會將請求轉發給下一個過濾器或目標資源
    chain.doFilter(req,res);
    //目標資源響應後的程式碼
    ...
    }
    public void
init(FilterConfig f)throws ServletException{} public void destroy(){} }
web.xml配置:
<filter>
    <filter-name>MyFilter</filter-name>
    <filter-class>MyFilter</filter-class>Filter完整類名
</filter>
<filter-mapping>
    <filter-name>MyFilter</filter-name
> <url-pattern>/*Servlet</url-pattern> </filter-mapping>
凡是請求以“Servlet”結尾的URL資源時,該過濾器都會起到過濾作用。

原文:http://www.cnblogs.com/liaoyiwang/p/3186311.html