1、自定義過濾器
過濾器類實現(xiàn) javax.servlet.Filter。然后添加注解 @WebFilter(filterName=“過濾器名稱” urlPatterns=“過濾規(guī)則” )
@Order(int) 注解,配合 @WebFilter 注解使用,用于多個過濾器時定義執(zhí)行順序,值越小越先執(zhí)行。
在啟動類上加一個注解 @ServletComponentScan(basePackages=“需要掃描的過濾器”)
使用@Order注解來設置過濾器的執(zhí)行順序,是無效的!
使用@Order注解指定一個int值,越小越先執(zhí)行。很多博客文章都是這么說的,真的可以使用這個注解指定順序嗎?答案是否定的。
經(jīng)過測試,發(fā)現(xiàn) @Order 注解指定 int 值沒有起作用,是無效的。為啥?因為看源碼發(fā)現(xiàn) @WebFilter 修飾的過濾器在加載時,沒有使用 @Order 注解,而是使用的類名來實現(xiàn)自定義Filter順序
所以這種方式下想定義Filter的順序,就必須限定 Filter 的類名,比如剛才那個 Filter 叫 Filter01,假如我們現(xiàn)在新寫了一個 Filter 叫 Filter02,那么順序就是 Filter01> Filter02。
所以這種方式雖然實現(xiàn)起來簡單,只需要注解,但自定義順序就必須要限定類名,使用類名達到排序效果了。
