आप वास्तव में @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>
दृष्टिकोण के बावजूद, यह सब टॉमकैट में संस्करण 7.0.28 तक विफल हो जाएगा क्योंकि यह <filter-mapping>
बिना उपस्थिति के चुटकुले है <filter>
। Tomcat का उपयोग करते हुए भी देखें , web.xml के अंदर <eb> फ़िल्टर फ़िल्टर के साथ काम नहीं करता है
order
नेस्टेड@WebFilterMapping
एनोटेशन की विशेषता प्रस्तुत कर सकते थे । मुझे आश्चर्य है कि क्या यह सरलता के लिए नहीं किया