मानक सर्वलेट एपीआई इस सुविधा का समर्थन नहीं करता है। आप या तो इसके लिए टर्की के एक (जो कि काफी हद तक अपाचे एचटीडी के समान है mod_rewrite
) के लिए एक रीराइट-यूआरएल फिल्टर का उपयोग कर सकते हैं , या doFilter()
फ़िल्टर सुनने की विधि में एक चेक जोड़ सकते हैं /*
।
String path = ((HttpServletRequest) request).getRequestURI();
if (path.startsWith("/specialpath/")) {
chain.doFilter(request, response); // Just continue chain.
} else {
// Do your business stuff here for all paths other than /specialpath.
}
यदि आवश्यक हो तो आप init-param
फ़िल्टर के रूप में पथ-से-अनदेखा निर्दिष्ट कर सकते हैं ताकि आप इसे web.xml
वैसे भी नियंत्रित कर सकें । आप इसे निम्नानुसार फ़िल्टर में प्राप्त कर सकते हैं:
private String pathToBeIgnored;
public void init(FilterConfig config) {
pathToBeIgnored = config.getInitParameter("pathToBeIgnored");
}
यदि फ़िल्टर 3rd पार्टी एपीआई का हिस्सा है और इस प्रकार आप इसे संशोधित नहीं कर सकते हैं, तो इसे और अधिक विशिष्ट पर मैप करें url-pattern
, उदाहरण के लिए /otherfilterpath/*
और एक नया फ़िल्टर बनाएं , /*
जिस पर आगे चलकर 3rd पार्टी फ़िल्टर से मेल खाता है।
String path = ((HttpServletRequest) request).getRequestURI();
if (path.startsWith("/specialpath/")) {
chain.doFilter(request, response); // Just continue chain.
} else {
request.getRequestDispatcher("/otherfilterpath" + path).forward(request, response);
}
इससे बचने के लिए कि यह फ़िल्टर आपको एक अनंत लूप में बुलाएगा, जिसे आपको REQUEST
केवल और केवल 3 पार्टी फिल्टर पर सुनने (भेजने) की आवश्यकता होगी FORWARD
।
यह सभी देखें: