過濾器

Servlet 過濾器能夠動態地攔截請求和響應,以變換或使用包含在請求或響應中的信息java

在客戶端的請求訪問後端資源以前,攔截這些請求。 web

在服務器的響應發送回客戶端以前,處理這些響應。後端

過濾器是一個實現了 javax.servlet.Filter 接口的 Java 類。javax.servlet.Filter 接口定義了三個方法:服務器

 

方法 & 描述url

public void doFilter (ServletRequest, ServletResponse, FilterChain)spa

該方法完成實際的過濾操做,當客戶端請求方法與過濾器設置匹配的URL時,Servlet容器將先調用過濾器的doFilter方法。FilterChain用戶訪問後續過濾器。code

 

 public void init(FilterConfig filterConfig)xml

 web 應用程序啓動時,web 服務器將建立Filter 的實例對象,並調用其init方法,讀取web.xml配置,完成對象的初始化功能,從而爲後續的用戶請求做好攔截的準備工做(filter對象只會建立一次,init方法也只會執行一次)。開發人員經過init方法的參數,可得到表明當前filter配置信息的FilterConfig對象。對象

 

public void destroy()blog

 Servlet容器在銷燬過濾器實例前調用該方法,在該方法中釋放Servlet過濾器佔用的資源。

 

過濾器流程:

請求 ----> 匹配過濾器 -->doFilter() ---> servlet響應前的過濾 chain鏈(servlet響應) --->servlet的響應後的過濾

 

註解方式配置:

@WebFilter(filterName = "loginFilter",   
    urlPatterns = "/*",   
    initParams = {  
            @WebInitParam(name = "loginUI", value = "/home/loginUI"),  
            @WebInitParam(name = "loginProcess", value = "home/login"),  
            @WebInitParam(name = "encoding", value = "utf-8")  
})

web.xml 文件配置以下:

<filter>
    <filter-name>LogFilter</filter-name>
    <filter-class>com.sxt.test.LogFilter</filter-class>
    <init-param>
        <param-name>Site</param-name>
        <param-value>sxt教程</param-value>
</init-param>
 </filter>
相關文章
相關標籤/搜索