2011-08-15 7 views
28

मैं एक फ़ोल्डर मिल गया है कई बिल्ला पर उस में दस्तावेजों उत्कृष्टता के साथ और मैं चाहता हूँ उन फ़ाइलों को उपलब्ध होने की जब मैं मिला ब्राउज़र में उस फ़ोल्डर का यूआरएल जाना (जैसे http; // स्थानीय होस्ट: 8080/MyFolder)मैं टोमकैट पर फ़ोल्डर में सभी फाइलों को कैसे सूचीबद्ध कर सकता हूं?

फिलहाल जब मैं किसी फ़ोल्डर तक पहुंचने का प्रयास करता हूं तो मुझे 404 त्रुटि मिलती है। अगर मैं उस फ़ोल्डर में मौजूद फ़ाइल तक पहुंचने का प्रयास करता हूं, तो यह काम करता है।

+0

आपके द्वारा उपयोग किए जा रहे कोड को पोस्ट करें। साथ ही, सुनिश्चित करें कि आप यहां उपयोगकर्ता इनपुट नहीं लेते हैं या आप/etc/छाया – Woot4Moo

+0

प्रकट कर सकते हैं, यह एक htaccess अनुमति समस्या की तरह दिखता है। – Snicolas

+1

@ Woot4Moo कोई कोड नहीं है। यह सिर्फ कुछ फ़ोल्डर के साथ एक फ़ोल्डर है। मैं उस फ़ोल्डर के यूआरएल पर नेविगेट करने में सक्षम होना चाहता हूं और इसे अपाचे सर्वर की तरह ही इसमें सभी फाइलें प्रदर्शित करना चाहते हैं। – code511788465541441

उत्तर

48

बिलाव की DefaultServlet डिफ़ॉल्ट निर्देशिका लिस्टिंग नहीं दिखाने के लिए कॉन्फ़िगर कर रहा है। तुम्हें पता है, बिलाव के अपने /conf/web.xml फ़ाइल (बिलाव स्थापना फ़ोल्डर में देखो) खोलने पर, खोज DefaultServlet की <servlet> प्रविष्टि और उसके बाद

<init-param> 
    <param-name>listings</param-name> 
    <param-value>true</param-value> 
</init-param> 

को

<init-param> 
    <param-name>listings</param-name> 
    <param-value>false</param-value> 
</init-param> 

से अपने listings प्रारंभ मानदंड को बदलना ध्यान रखें की जरूरत है कि यह आपके वेबपैप के सभी फ़ोल्डरों को प्रभावित करता है। यदि आप इसे केवल एक व्यक्तिगत फ़ोल्डर के लिए सक्षम करना चाहते हैं, तो आपको कुछ Servlet कोड स्वयं लिखना होगा जो फाइलों को इकट्ठा करने के लिए java.io.File एपीआई की मदद से जॉब्स पक्ष में एचटीएमएल/सीएसएस में कुछ एचटीएमएल/सीएसएस को इकट्ठा करने के लिए काम करता है। इसे एक साफ फैशन में प्रस्तुत करें।

+0

मैंने मूल पोस्ट में वेब-इन्फ फ़ाइल जोड़ दी है। क्या आप मुझे बता सकते हैं कि उन परमात्माओं को कब छोड़ना चाहिए। धन्यवाद – code511788465541441

+0

@ सॉल्वर: दूसरा उत्तर पोर्टेबल नहीं है (यानी वेबपैप क्रैश हो जाएगा जब किसी भिन्न मेक और संभवतः यहां तक ​​कि अलग संस्करण के सर्वर पर तैनात किया जाता है)। आप देखते हैं, यह मानक सर्वलेट एपीआई का हिस्सा नहीं है। – BalusC

+1

यह प्रति-वेबैप आधार पर किया जा सकता है। आपको टॉमकैट की साइट-व्यापी 'conf/web.xml' के बजाय एप्लिकेशन के' WEB-INF/web.xml' को संशोधित करना होगा। आपको अपने 'WEB-INF/web.xml' में संपूर्ण' डिफ़ॉल्ट सेवा 'घोषणा, सेटअप और मैपिंग की प्रतिलिपि बनाना होगा, लेकिन एक बार ऐसा करने के बाद, आप सभी वेब अनुप्रयोगों के बजाय एक वेब एप्लिकेशन के लिए निर्देशिका-सूची सक्षम कर सकते हैं उस टोमकैट उदाहरण पर तैनात किया गया। –

4

यहां कुछ दस्तावेज बताए गए हैं कि यह कैसे करें।

http://tomcat.apache.org/tomcat-7.0-doc/default-servlet.html

मूल विचार बिल्ला का मुख्य web.xml में true को listings पैरामीटर का मान बदलने के लिए है।

<servlet> 
    <servlet-name>default</servlet-name> 
    <servlet-class> 
     org.apache.catalina.servlets.DefaultServlet 
    </servlet-class> 
    <init-param> 
     <param-name>debug</param-name> 
     <param-value>0</param-value> 
    </init-param> 
    <init-param> 
     <param-name>listings</param-name> 
     <param-value>false</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

लेकिन उपर्युक्त सभी निर्देशिकाओं का खुलासा करेगा। आदेश ठीक नियंत्रण पाने के लिए, चरणों का पालन करें यहाँ विस्तार से बताया:

http://tomcat.apache.org/tomcat-7.0-doc/default-servlet.html#dir

+0

@downvoter: टिप्पणी करने की देखभाल? – adarshr

+0

मैंने डाउनवोट नहीं किया था, लेकिन आपके शुरुआती उत्तर ने केवल डिफ़ॉल्ट निर्देशिका सूची लेआउट को कस्टमाइज़ करने का तरीका बताया था, इसे सक्षम करने के तरीके के बारे में नहीं। – BalusC

2

यहां एक साधारण servlet है जो पूरी तरह से कस्टम दृष्टिकोण की शुरुआत हो सकता है।

18

आप इसे किसी दिए गए यूआरएल पैटर्न से भी सक्षम कर सकते हैं। बस सर्वलेट और सर्वलेट-मानचित्रण आप करने के लिए एप्लिकेशन web.xml

<servlet> 
    <!-- List files in /ws-definitions --> 
    <servlet-name>ListWsDefinitions</servlet-name> 
    <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class> 
    <init-param> 
     <param-name>debug</param-name> 
     <param-value>0</param-value> 
    </init-param> 
    <init-param> 
     <param-name>listings</param-name> 
     <param-value>true</param-value> 
    </init-param> 
    <load-on-startup>100</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>ListWsDefinitions</servlet-name> 
    <url-pattern>/ws-definitions/*</url-pattern> 
</servlet-mapping> 

नीचे इस उदाहरण निर्देशिका में जोड़ें "/ WS-परिभाषाएँ /" सुन हो जाएगा।

<welcome-file-list> 
    <welcome-file>index.html</welcome-file> 
    <welcome-file>index.htm</welcome-file> 
    <welcome-file>index.jsp</welcome-file> 
</welcome-file-list> 

संपादित करें यह इस प्रकार है::

<welcome-file-list> 
    <welcome-file></welcome-file> 
    <welcome-file></welcome-file> 
    <welcome-file></welcome-file> 
</welcome-file-list> 

+0

मैंने टॉमकैट का उपयोग करके फाइल सूची तक पहुंचने की कोशिश की और यह अच्छी तरह से काम किया। धन्यवाद! – Ricardo

+4

यह स्वीकार्य उत्तर होना चाहिए! – jutky

+0

नहीं, एक अलग सर्वर बनाने/संस्करण पर तैनात किए जाने पर ऐसा वेबपैप क्रैश हो जाएगा। दूसरे शब्दों में, ऐसा वेबपैप पोर्टेबल नहीं है। इसके बजाय वेबपैड अंत के बजाय सर्वर अंत में इसे कॉन्फ़िगर करें। या, अपनी खुद की पुन: प्रयोज्य निर्देशिका लिस्टिंग servlet homegrow। – BalusC

1

तो लिस्टिंग परम मान बदलने से काम नहीं करता, संपादन स्वागत फ़ाइल सूची

मूलभूत मूल्यों निम्नलिखित थे कोशिश उन्हें हटाने पर इसे पूरी तरह से काम करना चाहिए

+0

धन्यवाद, यह मेरे बिना मेरे लिए काम नहीं किया। – masterxilo

3

यदि आप टॉमकैट 6 का उपयोग कर रहे हैं (जो सर्वलेट 2.5 विनिर्देश लागू करता है) या एक नया संस्करण, आपको निर्देशिका सूची प्रदर्शित करने के लिए CATALINA_HOME/conf/निर्देशिका में web.xml को बदलने की आवश्यकता नहीं है।इसके बजाय आपको वेब एप्लिकेशन की अपनी वेब.एक्सएमएल फ़ाइल को वेब-आईएनएफ के तहत बदलना चाहिए।

Adarshr उल्लेख किया है, यह आप क्या web.xml

<servlet> 
    <servlet—name>default</servlet—name> 
    <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class> 
    <init-param> 
    <param-name>debug</param-name> 
    <param-value>0</param-value> 
    </init-param> 
    <init-param> 
    <param-name>listings</param-name> 
    <param-value>true</param-value> 
</init-param> 
<load-on-startup>1</load-on-startup> 
</servlet> 

तुम भी तुम सिर्फ एक वेब को लागू करने की कोशिश कर रहे हैं निम्नलिखित

<servlet-mapping> 
    <servlet-name>default</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 
0

जोड़ने की जरूरत को जोड़ने की जरूरत है है अपने सर्वलेट के बाहर फ़ाइलों के लिए आधारित फ़ाइल ब्राउज़र, आप this answer में उल्लिखित कस्टम वेबपैप का उपयोग कर सकते हैं।