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


對於一個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資源時,該過濾器都會起到過濾作用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM