2009-09-25 14 views
7

से वेबकंटेंट फ़ोल्डर में फ़ाइल एक्सेस करें मैं एफओपी का उपयोग करके एक पीडीएफ दस्तावेज उत्पन्न करने की कोशिश कर रहा हूं। पीडीएफ पीढ़ी कोड को सर्वलेट में रखा जाता है और एक्सएसएल वेबकंटेंट फ़ोल्डर में एक विशिष्ट फ़ोल्डर में होता है।सर्वलेट

मैं इस xsl फ़ाइल को सापेक्ष पथ देकर कैसे एक्सेस कर सकता हूं? यह केवल तभी काम करता है जब मैं फ़ाइल ऑब्जेक्ट में पूरा पथ देता हूं।

मुझे गतिशील रूप से XML सामग्री उत्पन्न करने की आवश्यकता है। मैं इस गतिशील रूप से जेनरेट की गई XML को फ़ाइल ऑब्जेक्ट के बजाय स्रोत के रूप में कैसे दे सकता हूं?

कृपया अपने सुझाव प्रदान करें।

उत्तर

16

पथ आप कर सकते हैं प्राप्त करने के लिए बस करो:

String path = s.getServletContext().getRealPath("/WEB-INF/somedir/hdfeeh");   

s वर्ग कि HTTPServlet लागू करता है.आप भी this.getServletContext() उपयोग कर सकते हैं, अगर उसके अपने सर्वलेट वर्ग है।

फिर इसे पैरामीटर के रूप में पास करें।

गतिशील रूप से जेनरेट किए गए एक्सएमएल का उपयोग करने के लिए, जिस पुस्तकालय का आप उपयोग कर रहे हैं उसे इनपुट स्ट्रीम का उपयोग करके समर्थन करना चाहिए, अपना एक्सएमएल लिखें, इसे बाइट सरणी में परिवर्तित करें, फिर इसे ByteArrayInputStream में लपेटें और इसका उपयोग करें।

+4

इसे काफी नहीं मिला। मुझे नहीं पता कि क्या है? – newbie

+2

@newbie 's एक ऐसी वस्तु है जो लागू करता है [' ServletConfig'] (http://docs.oracle.com/javaee/5/api/javax/servlet/ServletConfig.html)। 'HttpServlet' एक कक्षा को बढ़ाता है जो 'ServletConfig' लागू करता है। इसका मतलब है कि यदि आपकी कक्षा 'HttpServlet' तक फैली हुई है, तो आप 'this.getServletContext()' कर सकते हैं। –

+0

यह मेरे लिए काम नहीं करता है। अगर मैं इस तरह के पथ के साथ फ़ाइल मौजूद है, तो यह झूठी वापसी होगी। मेरे प्रश्न पर एक नज़र डालें: http://stackoverflow.com/questions/36598562/unable-to-access-file-in-web-inf-folder-from-servlet –

6

एक सीधा और स्वतंत्र कंटेनर को लागू करने के लिए, आप अपने सर्वलेट अंदर निम्न विधि getResource() resourcewith पहुँच सकते हैं:

/शुरू सर्वलेट/

public InputStream getResource(String resourcePath) { 
    ServletContext servletContext = getServletContext(); 
    InputStream openStream = servletContext.getResourceAsStream(resourcePath); 
    return openStream; 
} 

public void testConsume() { 
    String path = "WEB-INF/teste.log"; 
    InputStream openStream = getResource(path); 

    int c = -1; 
    byte[] bb = new byte[1024]; 
    while (-1 != (c = openStream.read(bb))) { 
    /* consume stream */ 
    } 
    openStream.close(); 
} 

/अंत सर्वलेट/

+0

दुर्भाग्य से मैं संसाधन को लोड करने में सक्षम नहीं हूं धारा। मैं अपवाद java.net.MalformedURLException मैं ServletContext और उसके कोई भी विचार [email protected] के रूप में दिखाया मुद्रित मिल सकता है? – jobinbasani

+1

servletContext.getRealPath (filePath) का उपयोग करने के बाद; यह ठीक काम कर रहा है :) – jobinbasani

+0

यहाँ, कोड ठीक काम करता है। मैं टोमकैट 6. * का उपयोग कर रहा हूं। अब मैं देखता हूं कि आप आईबीएम मंच का उपयोग कर रहे हैं। शायद, यह परिणामों के बीच अंतर है। – apast

1

मैंने वेब सामग्री

के तहत फ़ाइल को पढ़ने के लिए निम्न विधि का उपयोग किया 10
BufferedReader reader = new BufferedReader(new InputStreamReader(request.getSession().getServletContext().getResourceAsStream("/json/sampleJson.json"))); 

अब सभी फ़ाइल सामग्री पाठक ऑब्जेक्ट में उपलब्ध है।