คุณไม่สามารถกำหนดลำดับการดำเนินการตัวกรองได้โดยใช้@WebFilter
คำอธิบายประกอบ อย่างไรก็ตามเพื่อลดการweb.xml
ใช้งานให้น้อยที่สุดก็เพียงพอแล้วที่จะเพิ่มคำอธิบายประกอบตัวกรองทั้งหมดด้วยเพียงfilterName
เพื่อให้คุณไม่ต้องการ<filter>
คำจำกัดความ แต่เป็นเพียง<filter-mapping>
คำจำกัดความตามลำดับที่ต้องการ
ตัวอย่างเช่น,
@WebFilter(filterName="filter1")
public class Filter1 implements Filter {}
@WebFilter(filterName="filter2")
public class Filter2 implements Filter {}
ด้วยweb.xml
เพียงแค่นี้:
<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>
หากคุณต้องการเก็บรูปแบบ URL ไว้@WebFilter
คุณก็สามารถทำได้
@WebFilter(filterName="filter1", urlPatterns="/url1/*")
public class Filter1 implements Filter {}
@WebFilter(filterName="filter2", urlPatterns="/url2/*")
public class Filter2 implements Filter {}
แต่คุณควรจะยังคง<url-pattern>
อยู่ในweb.xml
เพราะมันเป็นต่อ XSD แม้ว่ามันจะว่างเปล่า:
<filter-mapping>
<filter-name>filter1</filter-name>
<url-pattern />
</filter-mapping>
<filter-mapping>
<filter-name>filter2</filter-name>
<url-pattern />
</filter-mapping>
โดยไม่คำนึงถึงวิธีการทั้งหมดนี้จะล้มเหลวในการ Tomcat จนถึงรุ่น 7.0.28 เพราะมันฉายาในการปรากฏตัวของโดยไม่ต้อง<filter-mapping>
<filter>
ดูเพิ่มเติมที่การใช้ Tomcat @WebFilter ไม่ทำงานกับ <filter-mapping> ข้างใน web.xml
order
คุณลักษณะของ@WebFilterMapping
คำอธิบายประกอบแบบซ้อนได้ ฉันสงสัยว่าคนที่ทำไม่ได้ทำเพื่อความเรียบง่ายหรือไม่