Filter過濾器的作用和工作原理
阿新 • • 發佈:2019-01-31
對於一個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 voidweb.xml配置:init(FilterConfig f)throws ServletException{} public void destroy(){} }
<filter> <filter-name>MyFilter</filter-name> <filter-class>MyFilter</filter-class>Filter完整類名 </filter> <filter-mapping> <filter-name>MyFilter</filter-name凡是請求以“Servlet”結尾的URL資源時,該過濾器都會起到過濾作用。> <url-pattern>/*Servlet</url-pattern> </filter-mapping>
原文:http://www.cnblogs.com/liaoyiwang/p/3186311.html