Java 過濾器的順序
阿新 • • 發佈:2018-12-05
過濾器的順序由 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 後處理