युद्ध फ़ाइल संरचना

प्रत्येक वेब एप्लिकेशन, जब वेब सर्वर पर अपलोड किया जाता है, एक एकल .war फ़ाइल में पैक किया जाता है। WAR अब वेब एप्लिकेशन रिसोर्सेज के लिए खड़ा है, हालाँकि यह पहले Web ARchive हुआ करता था। वास्तव में, यह एक ज़िप संग्रह है जिसमें एक पैकेज्ड वेब एप्लिकेशन है।

यहाँ युद्ध फ़ाइल की विशिष्ट सामग्री कैसी दिखती है:

/index.html
/guestbook.jsp
/images/logo.png
/js/jquery.js
/WEB-INF/web.xml
/WEB-INF/classes/com/codegym/Util.class
/WEB-INF/classes/com/codegym/MainServlet.class
/WEB-INF/classes/application.properties
/WEB-INF/lib/util.jar
/META-INF/MANIFEST.MF

युद्ध फ़ाइल के अंदर .html, .css, .js फ़ाइलें, आदि जैसे स्थिर वेब संसाधन होते हैं। साथ ही चित्र, वीडियो और सामान्य रूप से कोई भी फाइल हो सकती है। वे रूट या सबफ़ोल्डर में हो सकते हैं, इससे कोई फ़र्क नहीं पड़ता। अगर उनसे अनुरोध किया जाता है तो टोमकैट बस उनकी सेवा करेगा।

मान लीजिए कि आपका वेब एप्लिकेशन सेब नाम के तहत वेब सर्वर पर लोड किया गया है, तो जब http://localhost/apple/images/logo.png अनुरोध किया जाता है, तो टॉमकैट /images/logo.png फ़ाइल वापस कर देगा ।

अलग-अलग, यह वेब-आईएनएफ फ़ोल्डर को ध्यान देने योग्य है । इसे जावा कोड को स्टोर करने के लिए डिज़ाइन किया गया है। टॉमकैट अपनी सामग्री नहीं देगा।

/वेब-आईएनएफ/कक्षाएं/ एप्लिकेशन चलाने से पहले लोडर द्वारा आवश्यक सर्वलेट क्लास और संसाधन फ़ाइलों सहित संकलित गैर-जेएआर जावा कक्षाओं के लिए निर्देशिका
/वेब-INF/lib/ जार पुस्तकालयों को संग्रहीत करने का स्थान
/वेब-आईएनएफ/वेब.एक्सएमएल परिनियोजन वर्णनकर्ता

युद्ध फ़ाइल संरचना और मावेन परियोजना

अब मावेन परियोजना की निर्देशिका पदानुक्रम पर चलते हैं। आप आधिकारिक मैनुअल में पूरा कैटलॉग लेआउट देख सकते हैं। यहां हम परीक्षण संसाधनों को छोड़कर कुछ संक्षिप्त रूप में इससे परिचित होंगे। तो, मानक मावेन निर्देशिका पदानुक्रम इस तरह दिखता है:

स्रोत/मुख्य/java आम तौर पर स्वीकृत पैकेज पदानुक्रम के अनुसार एप्लिकेशन कक्षाओं और पुस्तकालयों के स्रोत कोड
स्रोत/मुख्य/संसाधन अनुप्रयोग संसाधन फ़ाइलें: डेटाबेस सेटिंग्स, स्थानीयकरण फ़ाइलें, आदि।
स्रोत/मुख्य/वेबएप वेब अनुप्रयोग संसाधन (JSP फ़ाइलें, पाठ फ़ाइलें, स्क्रिप्ट, आदि)

जैसा कि आप देख सकते हैं, यह उस WAR फ़ाइल की संरचना से काफी अलग है जिसे आप जानते हैं। लेकिन वास्तव में क्या होता है जब एक वेब एप्लिकेशन को संकलित करना जावा ईई विनिर्देश में परिभाषित संरचना में फ़ाइलों को स्थानांतरित करना और जोड़ना है।

src/main/webapp निर्देशिका वेब एप्लिकेशन के संदर्भ रूट को परिभाषित करती है (जब किसी सर्वर पर तैनात किया जाता है, तो संदर्भ रूट WAR फ़ाइल के नाम के समान होता है) और इसमें पहले से ही WEB-INF निर्देशिका शामिल होती है। यही है, src/main/webapp की सामग्री पूरी तरह से वेब एप्लिकेशन में स्थानांतरित हो जाती है।

आपके सभी जावा क्लासेस को क्लास फाइलों में संकलित किया जाता है और, उनकी पैकेज संरचना को बनाए रखते हुए, /WEB-INF/classes/ निर्देशिका में ले जाया जाता है । शामिल पुस्तकालयों के जार, जो मावेन pom.xml निर्भरता में परिभाषित हैं जैसा कि हमने ऊपर परिभाषित किया है, को /WEB-INF/lib/ निर्देशिका में ले जाया जाता है ।

एप्लिकेशन संसाधन src/main/संसाधनों को एप्लिकेशन के क्लासपाथ में ले जाया जाता है, विशेष रूप से उसी /WEB-INF/classes/ निर्देशिका में ।

इसे पूरी तरह से स्पष्ट करने के लिए, इस आरेख को देखें, जो आपको यह समझने में मदद करेगा कि प्रोजेक्ट बनाते समय कैसे और क्या होता है:

युद्ध फ़ाइल डिवाइस