1. 程式人生 > >關於tomcat中web.xml中的多個filter的執行順序

關於tomcat中web.xml中的多個filter的執行順序

今天在專案裡面碰見一個很奇怪的問題:在一個過濾器中處理了request.getParameter(arg0)後,請求就不會轉發到下一個過濾器了(個案,目前一個只在2個專案中出現)。

在沒找到原因之前,只有通過,轉換過濾器執行順序來解決

整理了一下……

多個篩選器的執行順序:

   1. 將 filter-mapping 元素包含與請求匹配的 url-pattern的篩選器按其在 web.xml 部署描述符中出現的順序新增到鏈中。
   2. 將 filter-mapping 元素包含與請求匹配的 servlet-name 的篩選器新增在鏈中與 URL 模式匹配的篩選器之後。
   3. 鏈上先進先出的,鏈中最後的專案往往是最初請求的資源。

所以:
   1.以url-pattern方式配置的filter執行時肯定先於以servlet-name方式配置的filter
   2.以url-partern方式配置的filter中,如果有多個與當前請求匹配,則按web.xml中filter-mapping出現的順序來執行