2009-08-14 18 views
5

क्या सर्वलेट फ़िल्टर के लिए सभी servlets और उनके मैपिंग की सूची प्राप्त करने का कोई तरीका है?आप servlet से web.xml का निरीक्षण कैसे करते हैं?

+1

मानक API का उपयोग नहीं कर रहा है। विशिष्ट कंटेनर आपको ऐसा करने दे सकते हैं, लेकिन यह आपके कंटेनर पर निर्भर करेगा। – skaffman

+0

यह अजीब बात है कि इस तरह की चीजों के लिए एपीआई होता था, लेकिन गिरा दिया गया था। – jsight

उत्तर

4

कोई मानक एपीआई नहीं है (अब और क्या सीमित था) - लेकिन यह मानक स्कीमा वाला एक्सएमएल फ़ाइल है। आप के माध्यम से अपने फिल्टर में इसे प्राप्त कर सकते हैं:

filterConfig.getServletContext().getResource("/WEB-INF/web.xml"); 

और क्या आप SAX/डोम/XPath/क्या है आप, उदाहरण के लिए उपयोग कर इसे से चाहते

InputStream is = filterConfig.getServletContext() 
    .getResourceAsStream("/WEB-INF/web.xml"); 
DocumentBuilder builder = DocumentBuilderFactory.newInstance() 
    .newDocumentBuilder(); 
Document document = builder.parse(is); 
NodeList servlets = document.getElementsByTagName("servlet"); 
+0

यह ईई 6 में थोड़ा सा गिरता है, जहां सर्वलेट को एनोटेशन द्वारा परिभाषित किया जा सकता है, और वेब-fragment.xml फ़ाइलों द्वारा। उन लोगों पर भी एक ही दृष्टिकोण का उपयोग किया जा सकता है; यह प्रोग्रामिंग का एक साधारण मामला है। –