ऐसा करने के कुछ तरीके हैं। जब तक WAR फ़ाइल का विस्तार होता है (एक .war फ़ाइल के बजाय फ़ाइलों का एक सेट), आप इस API का उपयोग कर सकते हैं:
ServletContext context = getContext();
String fullPath = context.getRealPath("/WEB-INF/test/foo.txt");
http://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/ServletContext.html#getRealPath(java.lang.String)
आप जिस संसाधन की तलाश कर रहे हैं, उसका पूरा सिस्टम पथ आपको मिल जाएगा। हालाँकि, यह काम नहीं करेगा यदि सर्वलेट कंटेनर WAR फ़ाइल (जैसे टॉमकैट) का विस्तार कभी नहीं करता है। सर्वलेटकोटेक्स्ट के getResource
तरीकों का उपयोग करके क्या काम करेगा ।
ServletContext context = getContext();
URL resourceUrl = context.getResource("/WEB-INF/test/foo.txt");
या वैकल्पिक रूप से यदि आप केवल इनपुट स्ट्रीम चाहते हैं:
InputStream resourceContent = context.getResourceAsStream("/WEB-INF/test/foo.txt");
http://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/ServletContext.html#getResource(java.lang.String)
बाद का दृष्टिकोण आपके द्वारा उपयोग किए जाने वाले किसी भी मामले में काम नहीं करेगा और एप्लिकेशन इंस्टॉल किया गया है। पूर्व दृष्टिकोण केवल तभी काम करेगा जब WAR फ़ाइल परिनियोजन से पहले अनज़िप की गई हो।
संपादित करें:
getContext () विधि स्पष्ट रूप से कुछ है जिसे आपको लागू करना होगा। JSP पृष्ठ इसे context
क्षेत्र के रूप में उपलब्ध कराते हैं । एक सर्वलेट में आप इसे अपने से प्राप्त ServletConfig
करते हैं जिसे सर्वलेट की init()
विधि में पारित किया जाता है । यदि आप इसे उस समय संग्रहीत करते हैं, तो आप अपने सर्वलेटकोटेक्स्ट को उसके बाद किसी भी समय प्राप्त कर सकते हैं।