2012-10-02 10 views
16

संभव डुप्लिकेट:
How to load a .properties file into a jspjsp में संपत्ति फ़ाइल का उपयोग करने के लिए कैसे

मैं JSP में मेरी संपत्ति फ़ाइल का उपयोग करने की कोशिश कर रहा हूँ, लेकिन यह अभ्यस्त ठीक से काम करते हैं और एक त्रुटि फेंकता

Error: myproperties.properties (The system cannot find the file specified) 

यहां मैं अपनी संपत्ति फ़ाइल तक पहुंचने का प्रयास कर रहा हूं:

<% 
try 
{ 
    FileInputStream fis = new FileInputStream("myproperties.properties"); 

    Properties p = new Properties(); 
    p.load(fis); 
    String LogFileName = p.getProperty("NameOfLogFile"); 
    out.println(LogFileName); 

} 
catch (Exception e) 
{// Catch exception if any 
    out.println(e.getMessage()); 
} 

मैंने संपत्ति फ़ाइल तक पहुंचने के कई तरीकों से प्रयास किया है। मैं यह कैसे तय करुं?

+0

अपने अनुप्रयोग संरचना क्या है?जेएसपी और गुण फ़ाइल कहाँ स्थित है ?? –

+0

क्या आपकी परियोजना के '/ src' फ़ोल्डर के नीचे फ़ाइल है? –

उत्तर

29

अपने पैकेज में test.properties फ़ाइल बनाने

pname=xyz 
psurname=abc 

jsp फ़ाइल बनाने:

<%@ page language="java" import="java.util.*" %> 
<%@ page import = "java.util.ResourceBundle" %> 
<% ResourceBundle resource = ResourceBundle.getBundle("test"); 
    String name=resource.getString("pname"); 
    String surname=resource.getString("psurname"); %> 
    <%=name %> 
<%=surname%> 
+0

में कोशिश की है जहां मुझे अपने पैकेज में गुण फ़ाइल डालने की आवश्यकता है? –

+0

आमतौर पर आपको यहां गुण फ़ाइल डालना होगा ("वर्ग" नामक फ़ोल्डर में): वेब-आईएनएफ -> वर्गीकरण – Optio

4

जेएसपी सर्वलेट कंटेनर में चलता है, इसलिए इसकी वर्तमान कार्यशील निर्देशिका कंटेनर द्वारा परिभाषित की जाती है। आम तौर पर यह निर्देशिका है जहां कंटेनर स्थापित है या इसकी bin निर्देशिका है। किसी भी मामले में यह वह स्थान नहीं है जहां आप अपनी कस्टम प्रॉपर्टी फ़ाइल को स्टोर करना चाहते हैं।

आपको जो चाहिए उसे करने के लिए 2 सामान्य दृष्टिकोण हैं।

पहला तरीका अच्छा है यदि आपकी फ़ाइल आपके एप्लिकेशन का हिस्सा है और आप इसे तैनाती पर कभी नहीं बदलते हैं। इस मामले में यह संसाधनों को पढ़:

props.load(getClass().getResourceAsStream())

या और भी बेहतर

props.load(Thread.currentThread().getContextClassLoader().getResourceAsStream())

दूसरा दृष्टिकोण अच्छा है आप अपने गुण तैनाती पर्यावरण पर फाइल को बदलना चाहते हैं। इस मामले में इसे अपने कंटेनर के बाहर फ़ाइल सिस्टम में कहीं भी रखें। उदाहरण के लिए लिनक्स पर या किसी अन्य स्थान पर /opt/mycompany/conf/myproperties.propertiesFileInputStream बनाते समय अब ​​आपको पूर्ण पथ का उपयोग करना चाहिए।

सिस्टम को बेहतर कॉन्फ़िगर करने योग्य बनाने के लिए आपको कोड के अंदर कॉन्फ़िगरेशन फ़ाइल के पथ को नहीं लिखना चाहिए। सिस्टम गुणों का उपयोग करके इसे एप्लिकेशन में पास करने का बेहतर तरीका है, उदा। जब आप अपना एप्लिकेशन सर्वर चला रहे हों तो -Dmycompany.conf=/opt/mycompany/myprops.properties जैसे पैरामीटर जोड़ें। आप फ़ाइल पढ़ना चाहते हैं जब निम्न करें:

new FileInputStream(System.getProperties("mycompany.conf"))

अब आपके सिस्टम के विन्यास deployer द्वारा स्वतंत्र रूप से नियंत्रित किया जा सकता है।

0

बदलते FileInputStream fis = new FileInputStream("myproperties.properties");FileInputStream fis = new FileInputStream(new File("myproperties.properties"));

इसके अलावा करने के लिए, सुनिश्चित करें कि वर्गों है कि आप प्रयोग कर रहे हैं पहले से ही अपने jsp फ़ाइल में आयात किया जा चुका है बनाने की कोशिश करें। अर्थात्

<%@ page import="java.io.FileInputStream" %> 
<%@ page import="java.io.File" %> 
+1

हाँ मैंने ठीक से पैकेज आयात किए हैं। –

+0

हाँ रसेल गुतिरेज़ मैंने विभिन्न फ़ोल्डर lib, src, –

संबंधित मुद्दे