Filter是java servlet中提供的一個接口,在進行Javaweb開發時一般繼承該接口實現一個過濾器類,主要功能是攔截對指定的服務器web資源調用,在調用前執行相應的動做java
public interface Filter { void init(FilterConfig var1) throws ServletException; void doFilter(ServletRequest var1, ServletResponse var2, FilterChain var3) throws IOException, ServletException; void destroy(); }
public void init(FilterConfig filterConfig)
web 應用程序啓動時,web 服務器將建立Filter 的實例對象,讀取web.xml配置,將Filter的配置參數信息生成一個FilterConfig對象,傳入調用其init方法,完成Filter對象的初始化功能,從而爲後續的用戶請求做好攔截的準備工做(filter對象只會建立一次,init方法也只會執行一次)。開發人員經過init方法的參數,可得到表明當前filter配置信息的FilterConfig對象。web
public void doFilter (ServletRequest, ServletResponse, FilterChain)
該方法完成實際的過濾操做,當客戶端請求方法與過濾器設置匹配的URL時,Servlet容器將先調用過濾器的doFilter方法。FilterChain用戶訪問後續過濾器,即在doFilter方法內繼續調用,FiterChain.doFilter(request,response)服務器
public void destroy()
Servlet容器在銷燬過濾器實例前調用該方法,在該方法中釋放Servlet過濾器佔用的資源。app
編寫好的filter類須要在web.xml中配置url
<filter> <filter-name>global</filter-name> <filter-class>net.yuchen.web.MyFilter</filter-class> <init-param> <param-name>action-path</param-name> <param-value>net.yuchen.web.action</param-value> </init-param> <init-param> <param-name>template-path</param-name> <param-value>/WEB-INF/templates</param-value> </init-param> </filter> <filter-mapping> <filter-name>global</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
<filter-name>: 指定過濾器名稱spa
<filter-class>:過濾器的完整類名xml
<init-param>: 配置參數,<param-name>指定參數名,<param-value>爲參數值,這些參數會在filter對象初始化時被讀取,在init()方法中能夠經過filterConfig.getInitParameter("param-name")訪問到對象
<filter-mapping>: 指定過濾器名稱及做用的URL範圍,/*爲全局做用繼承