程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> Servlet Filter,servletfilter

Servlet Filter,servletfilter

編輯:JAVA綜合教程

Servlet Filter,servletfilter


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>

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved