1. 程式人生 > >Java 過濾器的順序

Java 過濾器的順序

過濾器的順序由 web.xml 檔案中 <filter-mapping>的順序決定,從上到下

現有三個過濾器

  <filter>
    <filter-name>AFilter</filter-name>
    <filter-class>com.jerry.filter.AFilter</filter-class>
  </filter>
  <filter>
    <filter-name>BFilter</filter-name>
    <filter-class
>
com.jerry.filter.BFilter</filter-class> </filter> <filter> <filter-name>CFilter</filter-name> <filter-class>com.jerry.filter.CFilter</filter-class> </filter> <filter-mapping> <filter-name>AFilter</filter-name> <
url-pattern
>
/servlet/*</url-pattern> </filter-mapping> <filter-mapping> <filter-name>BFilter</filter-name> <url-pattern>/servlet/*</url-pattern> </filter-mapping> <filter-mapping> <filter-name>CFilter</filter-name> <
url-pattern
>
/servlet/*</url-pattern> </filter-mapping>

邏輯如下

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
		// 過濾器預處理邏輯程式碼。。。		
		System.out.println(this.getClass().getName() + " 預處理");
		
		// 呼叫下一個過濾器
		chain.doFilter(request, response);
		
		// 過濾器後處理邏輯程式碼。。。	
		System.out.println(this.getClass().getName() + " 後處理");
	}

輸出如下

com.jerry.filter.AFilter 預處理
com.jerry.filter.BFilter 預處理
com.jerry.filter.CFilter 預處理
呼叫:service
呼叫:doGet
com.jerry.filter.CFilter 後處理
com.jerry.filter.BFilter 後處理
com.jerry.filter.AFilter 後處理