您好,登錄后才能下訂單哦!
Filter :
Java中的Filter 并不是一個標準的Servlet ,它不能處理用戶請求,也不能對客戶端生成響應。 主要用于對HttpServletRequest 進行預處理,也可以對HttpServletResponse 進行后處理,是個典型的處理鏈。
過濾鏈的好處是,執行過程中任何時候都可以打斷,只要不執行chain.doFilter()就不會再執行后面的過濾器和請求的內容。
1、filter的驅動:
在 web 應用程序啟動時,web 服務器將根據 web.xml 文件中的配置信息來創建每個注冊的 Filter 實例對象,并將其保存在服務器的內存中
<filter>
<filter-name>helloFilter</filter-name>
<filter-class>com.jalja.filter.HelloFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>helloFilter</filter-name>
<!-- 要攔截的資源 -->
<url-pattern>/freeMark</url-pattern>
</filter-mapping>
2、filter接口:
//destory() 在Web容器卸載 Filter 對象之前被調用。該方法在Filter的生命周期中僅執行一次。在這個方法中,可以釋放過濾器使用的資源。
public void destroy()
//Filter 鏈的執行
//chain.doFilter(request, response);//把請求傳給下一個filter,如果該filter是該filter鏈的最后一個filter,則把請求給目標資源
public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain)
//類似于servlet的init方法,在創建Filter對象時被調用,只調用一次,對當前的filter進行初始化操作,filter單例
//FilterConfig 類似于servletConfig 可以獲得Filter的初始化參數信息
public void init(FilterConfig filterConfig)
3、filter 攔截順序:
web.xml中配置多個filter時構成filter鏈,他們的攔截順序取決于<filter-mapping>的順序
4、filter默認過濾的是 請求資源,如果是 其他方式的請求則過濾器無效 ,如果要使用就要在<filter-mapping>中添加<dispatcher>來指定過濾方式
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
<dispatcher>ERROR</dispatcher>
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。