2012-10-02 7 views
16

Eventuali duplicati:
How to load a .properties file into a jspcome utilizzare file di proprietà in JSP

Sto cercando di usare il mio file di proprietà in JSP, ma non funzionerà correttamente e genera un errore

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

Qui sto cercando di accedere al mio file di proprietà:

<% 
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()); 
} 

Ho provato in molti modi per accedere al file di proprietà. Come posso risolvere questo?

+0

Qual è la sua struttura di app?Dove si trova jsp e il file delle proprietà ?? –

+0

Il file si trova nella cartella '/ src' del tuo progetto? –

risposta

29

creare il file test.properties nel pacchetto

pname=xyz 
psurname=abc 

creare il file 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

dove devo inserire il file delle proprietà nel mio pacchetto? –

+0

Di solito è necessario inserire qui il file delle proprietà (nella cartella denominata "classi"): WEB-INF -> classess – Optio

4

JSP viene eseguito nel contenitore servlet, quindi la directory di lavoro corrente viene definita dal contenitore. In genere è la directory in cui è installato il contenitore o la sua directory bin. In ogni caso non è il luogo in cui si desidera memorizzare il proprio file delle proprietà personalizzate.

Ci sono 2 approcci tipici per fare ciò che ti serve.

Il primo approccio è valido se il file fa parte dell'applicazione e non lo si modifica mai sulla distribuzione. In questo caso leggerlo da risorse:

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

o meglio ancora

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

Il secondo approccio è buono se si desidera modificare il file le vostre offerte su ambiente di distribuzione. In questo caso, mettilo da qualche parte nel file system fuori dal tuo contenitore. Ad esempio /opt/mycompany/conf/myproperties.properties su Linux o in qualsiasi altro luogo che ti piace. Ora dovresti usare il percorso assoluto quando crei FileInputStream.

Per rendere il sistema più configurabile, non è necessario scrivere il percorso del file di configurazione all'interno del codice. Un approccio migliore consiste nel passarlo all'applicazione utilizzando le proprietà di sistema, ad es. aggiungere parametro come -Dmycompany.conf=/opt/mycompany/myprops.properties quando si esegue il server delle applicazioni. Quando si vuole leggere il file procedere come segue:

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

Ora configurazione del sistema può controllato in modo indipendente da deployer.

0

Prova a cambiare FileInputStream fis = new FileInputStream("myproperties.properties");-FileInputStream fis = new FileInputStream(new File("myproperties.properties"));

Inoltre, assicurarsi che le classi che si sta utilizzando è già essere importate nel file jsp. Vale a dire,

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

sì, ho pacchetti importati correttamente. –

+0

sì Russell Gutierrez ho provato in varie cartelle lib, src, –

Problemi correlati