सर्वलेट 2.4 विनिर्देश का कहना है इस वेब-INF (पेज 70) के बारे में:
एक विशेष निर्देशिका नाम के पदानुक्रम में मौजूद है
WEB-INF
। इस निर्देशिका में एप्लिकेशन से संबंधित सभी चीजें शामिल हैं जो एप्लिकेशन के दस्तावेज़ रूट में नहीं हैं। नोड आवेदन की सार्वजनिक दस्तावेज पेड़ का हिस्सा नहीं है । निर्देशिका में निहित कोई फ़ाइल कंटेनर द्वारा सीधे क्लाइंट को नहीं दी जा सकती है। हालाँकि, निर्देशिका की सामग्री
सर्वलेट कोड के लिए
और मेथड कॉल्स का उपयोग करते हुए दिखाई देती है , और कॉल्स का उपयोग करके इसे उजागर किया जा सकता है ।WEB-INF
WEB-INF
WEB-INF
getResource
getResourceAsStream
ServletContext
RequestDispatcher
इसका मतलब है कि WEB-INF
संसाधन आपके वेब-एप्लिकेशन के संसाधन लोडर के लिए सुलभ हैं और जनता के लिए प्रत्यक्ष रूप से दिखाई नहीं देते हैं।
यही कारण है कि बहुत सी परियोजनाओं ने अपने संसाधनों को जेएसपी फाइलों, जेएआर / पुस्तकालयों और अपनी स्वयं की क्लास फाइलों या संपत्ति फाइलों या WEB-INF
फ़ोल्डर में किसी अन्य संवेदनशील जानकारी जैसे डाल दिया है । अन्यथा वे एक साधारण स्थिर URL (उदाहरण के लिए CSS या जावास्क्रिप्ट लोड करने के लिए उपयोगी) का उपयोग करके सुलभ होंगे।
आपकी JSP फाइलें तकनीकी दृष्टिकोण से कहीं भी हो सकती हैं। उदाहरण के लिए स्प्रिंग में आप उन्हें WEB-INF
स्पष्ट रूप से कॉन्फ़िगर कर सकते हैं :
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:prefix="/WEB-INF/jsp/"
p:suffix=".jsp" >
</bean>
WEB-INF/classes
और WEB-INF/lib
फ़ोल्डरों विकिपीडिया के में वर्णित युद्ध फ़ाइलें लेख कार्यावधि में सर्वलेट विनिर्देश के लिए आवश्यक फ़ोल्डरों के उदाहरण हैं।
किसी परियोजना की संरचना और परिणामस्वरूप WAR फ़ाइल की संरचना के बीच अंतर करना महत्वपूर्ण है।
कुछ मामलों में परियोजना की संरचना आंशिक रूप से WAR फ़ाइल की संरचना (जैसे JSP फाइलें या HTML और जावास्क्रिप्ट फ़ाइलों के लिए स्थैतिक संसाधनों के लिए) को प्रतिबिंबित करेगी, लेकिन यह हमेशा ऐसा नहीं होता है।
परिणामी WAR फ़ाइल में प्रोजेक्ट संरचना से परिवर्तन एक बिल्ड प्रक्रिया द्वारा किया जाता है।
जब आप आमतौर पर अपनी स्वयं की निर्माण प्रक्रिया को डिजाइन करने के लिए स्वतंत्र होते हैं, आजकल ज्यादातर लोग अपाचे मावेन जैसे मानकीकृत दृष्टिकोण का उपयोग करेंगे । अन्य बातों के अलावा, मावेन परियोजना संरचना में किन संसाधनों के लिए चूक को परिभाषित करता है जिसके परिणामस्वरूप विरूपण साक्ष्य में संसाधन (जिसके परिणामस्वरूप विरूपण इस मामले में WAR फ़ाइल है)। कुछ मामलों में मानचित्रण में एक सादे प्रतिलिपि प्रक्रिया होती है अन्य मामलों में मानचित्रण प्रक्रिया में एक परिवर्तन शामिल होता है, जैसे फ़िल्टरिंग या संकलन और अन्य।
एक उदाहरण : WEB-INF/classes
फ़ोल्डर में बाद में सभी संकलित जावा कक्षाएं और संसाधन ( src/main/java
और src/main/resources
) होंगे जिन्हें एप्लिकेशन शुरू करने के लिए क्लास लोडर द्वारा लोड किए जाने की आवश्यकता है।
एक और उदाहरण : WEB-INF/lib
फ़ोल्डर में बाद में एप्लिकेशन द्वारा आवश्यक सभी जार फाइलें होंगी। एक मावेन परियोजना में निर्भरताएं आपके लिए प्रबंधित की जाती हैं और मावेन स्वचालित रूप से आपके लिए आवश्यक जार फ़ाइलों को WEB-INF/lib
फ़ोल्डर में कॉपी कर देता है। यह बताता है कि आपके पास lib
मावेन प्रोजेक्ट में फ़ोल्डर क्यों नहीं है ।