दिलचस्प पोस्ट
Google API तक पहुंच – GoogleAccountCredential.usingOAuth2 बनाम GoogleAuthUtil.getToken () .NET EXE मेमोरी पदचिह्न HTML सामग्री से स्क्रिप्ट टैग हटाएं एप्लिकेशन संदर्भ प्रारंभिक ईवेंट में एक हुक जोड़ने के लिए कैसे? कैसे उपयोगकर्ता को PHP में एक फ़ाइल अपलोड की जांच कैसे करें? मेरे POCO (टेम्पलेट) कक्षाओं में सत्यापन कैसे जोड़ा जाए आस्तियों से स्क्रिप्ट लोड करने में असमर्थ। Index.android.bundle पर खिड़कियां "मॉडल बनाया जा रहा है जब तक संदर्भ नहीं किया जा सकता है" ASP.NET पहचान के साथ अपवाद अजगर पैकेज ऑफ़लाइन स्थापना जब मैं एक वैकल्पिक मूल्य शून्य से तुलना करूँ? Json.net का उपयोग करते हुए JSON को पार्स करना मैं कैसे जांच करूं अगर कोई रिपॉजिटरी नंगे हो? अपाचे ऊंट बिल्कुल क्या है? एनजी-क्लिक गतिशील रूप से उत्पन्न HTML से काम नहीं कर रहा है jqgrid showLink

जावा ईई वेब अनुप्रयोग में वेब-आईएनएफ क्या इस्तेमाल किया जाता है?

मैं निम्न स्रोत कोड संरचना के साथ जावा ईई वेब अनुप्रयोग पर काम कर रहा हूं:

src/main/java <-- multiple packages containing java classes src/test/java <-- multiple packages containing JUnit tests src/main/resources <-- includes properties files for textual messages src/main/webapp/resources <-- includes CSS, images and all Javascript files src/main/webapp/WEB-INF src/main/webapp/WEB-INF/tags src/main/webapp/WEB-INF/views 

मुझे जो दिलचस्पी है वह WEB-INF – इसमें web.xml , web.xml फाइलें सर्विसलेट्स, स्प्रिंग बीन वायरींग कॉन्टैक्ट्स और जेएसपी टैग्स और व्यूएं सेट करने के लिए हैं।

प्रश्न का शीर्षक मूलभूत है लेकिन मैं समझने की कोशिश कर रहा हूं कि यह संरचना क्या है / परिभाषित करती है उदाहरण के लिए जेएसपी फ़ाइलें हमेशा WEB-INF अंदर WEB-INF चाहिए या वे कहीं और हो सकती हैं? और क्या ऐसा कुछ भी है जो WEB-INF में जा सकता है? विकिपीडिया की युद्ध फाइल प्रविष्टि में जावा कक्षाओं और जेआर फ़ाइलों के लिए lib वर्गों का उल्लेख है – मुझे यकीन नहीं है कि जब इन स्रोतों को अन्य स्रोत फाइल स्थानों के अतिरिक्त की आवश्यकता होगी I

Solutions Collecting From Web of "जावा ईई वेब अनुप्रयोग में वेब-आईएनएफ क्या इस्तेमाल किया जाता है?"

सर्लेट 2.4 विनिर्देश यह वेब-आईएनएफ (पृष्ठ 70) के बारे में कहता है:

WEB-INF नामक एप्लिकेशन पदानुक्रम के भीतर एक विशेष निर्देशिका मौजूद है। इस निर्देशिका में एप्लिकेशन से संबंधित सभी चीजें हैं जो आवेदन के दस्तावेज़ रूट में नहीं हैं। WEB-INF नोड आवेदन के सार्वजनिक दस्तावेज़ पेड़ का हिस्सा नहीं हैWEB-INF डायरेक्टरी में मौजूद कोई भी फाइल कंटेनर द्वारा सीधे क्लाइंट को सेवा नहीं दे सकती है। हालांकि, WEB-INF डायरेक्टरी की सामग्री getResource पर getResource और getResourceAsStream विधि कॉल का उपयोग करते हुए सर्वलेट कोड के लिए दिखाई देती है, और RequestDispatcher कॉल का उपयोग करके सामने आ सकती है।

इसका मतलब यह है कि WEB-INF संसाधन आपके वेब अनुप्रयोग के संसाधन लोडर के लिए सुलभ हैं और सार्वजनिक रूप से सीधे प्रदर्शित नहीं होते हैं

यही कारण है कि कई परियोजनाएं जेएसपी फाइलें, जेएआर / लाइब्रेरीज़ और अपनी क्लास फाइल्स या प्रॉपर्टी फाइलों या WEB-INF फ़ोल्डर में किसी भी अन्य संवेदनशील जानकारी जैसे संसाधनों को डालती हैं। अन्यथा वे एक सरल स्थिर यूआरएल (उदाहरण के लिए सीएसएस या जावास्क्रिप्ट को लोड करने के लिए उपयोगी) का प्रयोग करके सुलभ होंगे।

आपकी जेएसपी फाइल तकनीकी परिप्रेक्ष्य से कहीं भी हो सकती है। उदाहरण के लिए स्प्रिंग में आप इन्हें 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 फ़ोल्डर्स रनटाइम पर सर्लेट विनिर्देशन द्वारा आवश्यक फ़ोल्डरों के उदाहरण हैं

एक परियोजना की संरचना और परिणामी युद्ध फ़ाइल की संरचना के बीच अंतर करना महत्वपूर्ण है।

परियोजना की संरचना कुछ मामलों में युद्ध फ़ाइल की संरचना को आंशिक रूप से प्रतिबिंबित करेगी (स्थिर संसाधनों जैसे जेएसपी फ़ाइलें या एचटीएमएल और जावास्क्रिप्ट फाइलों के लिए, लेकिन यह हमेशा मामला नहीं होता है।

परिणामी युद्ध फ़ाइल में परियोजना संरचना से संक्रमण एक निर्माण प्रक्रिया द्वारा किया जाता है।

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

एक उदाहरण : WEB-INF/classes फ़ोल्डर में बाद में सभी संकलित जावा क्लास और संसाधन ( src/main/java और src/main/resources ) शामिल होंगे जिन्हें क्लासलोडर द्वारा आवेदन शुरू करने की आवश्यकता है।

एक अन्य उदाहरण : WEB-INF/lib फ़ोल्डर बाद में एप्लिकेशन द्वारा जरूरी सभी जार फ़ाइलों को शामिल करेगा। मैवेन प्रोजेक्ट में आप और मैवेन के लिए निर्भरता प्रबंधित की जाती है, स्वचालित रूप से आवश्यक जार फाइलों को आपके लिए WEB-INF/lib फ़ोल्डर में प्रतिलिपि बनाता है। यही कारण बताता है कि आपके पास मैवेन प्रोजेक्ट में एक lib फोल्डर क्यों नहीं है

जब आप जावा ईई वेब अनुप्रयोग (चौखटे या नहीं) का उपयोग करते हैं, तो इसकी संरचना कुछ आवश्यकताओं / विनिर्देशों का पालन करना चाहिए। ये विनिर्देश निम्न से आते हैं:

  • सर्वलेट कंटेनर (जैसे टोमकैट)
  • जावा सर्वलेट API
  • आपका एप्लिकेशन डोमेन
  1. सर्वलेट कंटेनर आवश्यकताओं
    यदि आप अपाचे टोमकैट का उपयोग करते हैं, तो आपके एप्लिकेशन की रूट डायरेक्टरी को वेबएफ़ फ़ोल्डर में रखा जाना चाहिए। यह अलग हो सकता है यदि आप एक अन्य सर्वोलेट कंटेनर या एप्लिकेशन सर्वर का उपयोग करते हैं
  2. जावा सर्वलेट एपीआई आवश्यकताओं
    जावा सर्वलेट एपीआई बताती है कि आपकी मूल अनुप्रयोग निर्देशिका में निम्नलिखित संरचना होनी चाहिए:

     ApplicationName | |--META-INF |--WEB-INF |_web.xml <-- Here is the configuration file of your web app(where you define servlets, filters, listeners...) |_classes <--Here goes all the classes of your webapp, following the package structure you defined. Only |_lib <--Here goes all the libraries (jars) your application need 

इन आवश्यकताओं को जावा सर्वलेट API द्वारा परिभाषित किया गया है।

3. आपका आवेदन डोमेन
अब जब आपने सर्वलेट कंटेनर (या ऐप्लिकेशन सर्वर) और जावा सर्वलेट एपीआई आवश्यकताओं की आवश्यकताओं का पालन किया है, तो आप अपने वेबपैड के अन्य भागों को आपकी आवश्यकता के आधार पर व्यवस्थित कर सकते हैं।
– आप अपने संसाधनों (जेएसपी फ़ाइलें, सादा पाठ फ़ाइलें, स्क्रिप्ट फाइल) को अपनी एप्लिकेशन रूट निर्देशिका में रख सकते हैं। लेकिन फिर, लोग अपने आवेदन से उपलब्ध कराए गए कुछ तर्कों के द्वारा संसाधित किए गए अनुरोधों के बजाय, उन्हें सीधे अपने ब्राउज़र से एक्सेस कर सकते हैं। इसलिए, अपने संसाधनों को सीधे उस तरह से एक्सेस करने से रोकने के लिए, आप उन्हें वेब-इनफ निर्देशिका में रख सकते हैं, जिनकी सामग्री सर्वर से केवल पहुंच योग्य होती है।
अगर आप कुछ फ़्रेमवर्क का उपयोग करते हैं, तो वे अक्सर कॉन्फ़िगरेशन फ़ाइलों का उपयोग करते हैं इनमें से अधिकांश ढांचे (स्ट्रट्स, स्प्रिंग, हाइबरनेट) को आप अपनी कॉन्फ़िगरेशन फ़ाइलों को क्लासपाथ ("क्लासेस" निर्देशिका) में डाल सकते हैं।

आपको वेब-इनफ किसी भी पेज, या पृष्ठों के टुकड़ों में डाल देना चाहिए, जिससे आप सार्वजनिक नहीं होना चाहते। आमतौर पर, जेएसपी या फेसलेट वेब-आईएनएफ के बाहर पाए जाते हैं, लेकिन इस मामले में वे आसानी से किसी उपयोगकर्ता के लिए एक्सेस कर सकते हैं। यदि आपके पास कुछ प्राधिकरण प्रतिबंध हैं, तो वेब-आईएनएफ का उपयोग इसके लिए किया जा सकता है

वेब-आईएनएफ / लिब में तीसरी पार्टी की लाइब्रेरीयां हैं, जो कि आप सिस्टम स्तर पर पैक नहीं करना चाहते हैं (जेएआर आपके सर्वर पर चलने वाले सभी एप्लिकेशन के लिए उपलब्ध हो सकते हैं), लेकिन केवल इस विशेष एप्लीकेशंस के लिए।

सामान्यतया, कई विन्यास फाइल वेब-इनफ में भी जाते हैं

वेब-आईएनएफ / कक्षाओं के लिए – यह किसी भी वेब ऐप में मौजूद है, क्योंकि यह वह फ़ोल्डर है जहां सभी संकलित स्रोतों को रखा गया है (नहीं JARS, लेकिन संकलित। जावा फाइल जो आपने स्वयं लिखा था)।

वेब-आईएनएफ डायरेक्टरी के तहत जेएसपी पृष्ठों को रखने का एक सम्मेलन (आवश्यक नहीं) है ताकि वे गहरे संबंध में या बुकमार्क नहीं कर सकें। इस तरह जेएसपी पृष्ठ पर सभी अनुरोध हमारे आवेदन के माध्यम से निर्देशित किए जाने चाहिए, ताकि उपयोगकर्ता के अनुभव की गारंटी दी जाए।

सुरक्षा कारणों के लिए इस सम्मेलन का पालन किया जाता है। उदाहरण के लिए यदि अनधिकृत व्यक्ति को रूट जेएसपी फ़ाइल यूआरएल से सीधे एक्सेस करने की अनुमति दी जाती है तो वे किसी भी प्रमाणीकरण के बिना पूरे आवेदन के माध्यम से नेविगेट कर सकते हैं और वे सभी सुरक्षित डेटा का उपयोग कर सकते हैं।