之前我們控制多個filter的執行順序是通過web.xml中控制filter的位置來控制的,放在上面的會比放在下面的先執行,如下“用戶登錄檢查過濾器”會比“接口日誌過濾器”先執行
<!-- 用戶登錄檢測過濾器 -->
<filter>
<filter-name>UserLoginFilter</filter-name>
<filter-class>net.tfgzs.demo.filter.UserLoginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>UserLoginFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!--接口日誌過濾器-->
<filter>
<filter-name>ApiLog</filter-name>
<filter-class>net.tfgzs.demo.filter.ApiLog</filter-class>
</filter>
<filter-mapping>
<filter-name>ApiLog</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
但是當我們使用@WebFilter註解的時候發現註解裏面沒有提供可以控制執行順序的參數
@WebFilter 的屬性
通過實踐發現如果想要控制filer的執行順序可以 通過控制filter的文件名 來控制
比如:
UserLoginFilter.java 和 ApiLog.java 這兩個文件裏面分別是“用戶登錄檢查過濾器”和“接口日誌過濾器”,因爲這兩個文件的 首字母A排U之前 ,導致每次執行的時候都是先執行“接口日誌過濾器”再執行“用戶登錄檢查過濾器”,所以我們現在修改兩個文件的名稱分別爲
Filter0_UserLogin.java
Filter1_ApiLog.java
這樣就能先執行“用戶登錄檢查過濾器”再執行“接口日誌過濾器”
原文鏈接:https://blog.csdn.net/LiMing_0820/article/details/53332070