Bạn thực sự không thể xác định thứ tự thực hiện bộ lọc bằng cách sử dụng @WebFilterchú thích. Tuy nhiên, để giảm thiểu việc web.xmlsử dụng, nó đủ để chú thích tất cả các bộ lọc chỉ với một filterNameđể bạn không cần <filter>định nghĩa, mà chỉ cần một<filter-mapping> định nghĩa theo thứ tự mong muốn.
Ví dụ,
@WebFilter(filterName="filter1")
public class Filter1 implements Filter {}
@WebFilter(filterName="filter2")
public class Filter2 implements Filter {}
chỉ với web.xmlđiều này:
<filter-mapping>
<filter-name>filter1</filter-name>
<url-pattern>/url1/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>filter2</filter-name>
<url-pattern>/url2/*</url-pattern>
</filter-mapping>
Nếu bạn muốn giữ mẫu URL @WebFilter, thì bạn có thể làm như vậy,
@WebFilter(filterName="filter1", urlPatterns="/url1/*")
public class Filter1 implements Filter {}
@WebFilter(filterName="filter2", urlPatterns="/url2/*")
public class Filter2 implements Filter {}
nhưng bạn vẫn nên giữ <url-pattern>trong web.xml, bởi vì nó yêu cầu theo XSD, mặc dù nó có thể để trống:
<filter-mapping>
<filter-name>filter1</filter-name>
<url-pattern />
</filter-mapping>
<filter-mapping>
<filter-name>filter2</filter-name>
<url-pattern />
</filter-mapping>
Bất kể cách tiếp cận nào, tất cả điều này sẽ thất bại trong Tomcat cho đến phiên bản 7.0.28 vì nó bị bóp nghẹt khi <filter-mapping>không có <filter>. Xem thêm Sử dụng Tomcat, @WebFilter không hoạt động với <bộ lọc ánh xạ> bên trong web.xml
orderthuộc tính của@WebFilterMappingchú thích lồng nhau . Tôi tự hỏi liệu người ta không làm điều đó vì đơn giản