आपका वेब एप्लिकेशन एक विशिष्ट उद्देश्य के साथ कई अलग-अलग फिल्टर्स को परिभाषित कर सकता है। मान लें, आप दो फिल्टर्स AuthenFilter और LogFilter परिभाषित करते हैं। प्रक्रिया का शेष भाग ऊपर बताए अनुसार ही रहेगा सिवाय इसके कि आपको नीचे बताए अनुसार एक अलग मैपिंग बनाने की आवश्यकता है:
web.xml में फिल्टर कॉन्फ़िगरेशन
<filter>
<filter-name>LogFilter</filter-name>
<filter-class>LogFilter</filter-class>
<init-param>
<param-name>test-param</param-name>
<param-value>Initialization Parameter</param-value>
</init-param>
</filter>
<filter>
<filter-name>AuthenFilter</filter-name>
<filter-class>AuthenFilter</filter-class>
<init-param>
<param-name>test-param</param-name>
<param-value>Initialization Parameter</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>LogFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>AuthenFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
फिल्टर्स एप्लिकेशन ऑर्डर
web.xml में filter-mapping एलिमेंट्स का क्रम उस क्रम को निर्धारित करता है जिसमें वेब कंटेनर सर्वलेट या JSP पर फिल्टर लागू करता है। फिल्टर के क्रम को उलटने के लिए, आपको बस web.xml फ़ाइल में filter-mapping एलिमेंट्स को उलटने की आवश्यकता है।
उदाहरण के लिए, उपरोक्त उदाहरण पहले LogFilter लागू करेगा और फिर किसी भी सर्वलेट या JSP पर AuthenFilter लागू करेगा; निम्न उदाहरण क्रम को उलट देगा:
<filter-mapping>
<filter-name>AuthenFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>LogFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
मुख्य बिंदु
- प्रत्येक फिल्टर का एक अद्वितीय
filter-nameऔरfilter-classहोना चाहिए। init-paramफिल्टर को आरंभीकरण पैरामीटर पास करने की अनुमति देता है।url-patternनिर्धारित करता है कि फिल्टर किन रिक्वेस्ट्स पर लागू होता है (/* = सभी)।- क्रम मायने रखता है: पहला फिल्टर रिक्वेस्ट को पहले प्रोसेस करता है, फिर अगले को पास करता है।
- फिल्टर्स
FilterChain.doFilter()को कॉल करके श्रृंखला को जारी रख सकते हैं।
सर्वोत्तम अभ्यास
- लॉगिंग फिल्टर्स को जल्दी लागू करें (आने वाली रिक्वेस्ट लॉग करने के लिए)।
- प्रमाणीकरण फिल्टर्स को संसाधन एक्सेस से पहले लागू करें।
<dispatcher>एलिमेंट्स का उपयोग करके नियंत्रित करें कि फिल्टर किन डिस्पैचर प्रकारों (REQUEST, FORWARD, INCLUDE, ERROR, ASYNC) पर लागू होता है।