魯春利的工做筆記,好記性不如爛筆頭java
Filter接口web
Filter也稱之爲過濾器,經過Filter對全部web資源(例如Jsp, Servlet, 靜態文件等)進行攔截,從而實現一些特殊的功能。例如實現URL級別的權限訪問控制、過濾敏感詞彙、壓縮響應信息等。設計模式
package javax.servlet; /** * A filter is an object that performs filtering tasks on either the * request to a resource (a servlet or static content), or on the response * from a resource, or both. * * @since Servlet 2.3 */ 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(); }
Filter的建立和銷燬由WEB服務器負責。 web 應用程序啓動時,web 服務器將建立Filter的實例對象,並調用其init方法,完成對象的初始化功能,從而爲後續的用戶請求做好攔截的準備工做,filter對象只會建立一次,init方法也只會執行一次。經過init方法的參數,可得到表明當前filter配置信息的FilterConfig對象。服務器
FilterConfig接口app
用戶在配置filter時,能夠使用<init-param>爲filter配置一些初始化參數,當web容器實例化Filter對象,調用其init方法時,會把封裝了filter初始化參數的filterConfig對象傳遞進來。所以開發人員在編寫filter時,經過filterConfig對象的方法,就可得到:
ide
String getFilterName():獲得filter的名稱。
String getInitParameter(String name): 返回在部署描述中指定名稱的初始化參數的值。若是不存在返回null.
Enumeration getInitParameterNames():返回過濾器的全部初始化參數的名字的枚舉集合。
public ServletContext getServletContext():返回Servlet上下文對象的引用。spa
package com.invicme.apps.shiro.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.annotation.WebFilter; /** * @author lucl */ @WebFilter("/*") public class MyFilter implements Filter { public MyFilter() { System.out.println("MyFilter......"); } public void init(FilterConfig fConfig) throws ServletException { System.out.println("MyFilter init......"); } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { System.out.println("MyFilter doFilter......"); chain.doFilter(request, response); } public void destroy() { System.out.println("MyFilter destroy......"); } }
Decorator設計模式設計