2012-10-02 109 views
16

Duplicar posibles:
How to load a .properties file into a jspcómo utilizar archivo de propiedades en JSP

Estoy tratando de usar mi archivo de propiedades en JSP, pero no trabajará correctamente y genera un error

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

Aquí intento acceder al archivo de mi propiedad:

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

He intentado de muchas formas acceder al archivo de propiedades. ¿Cómo puedo solucionar esto?

+0

¿Cuál es la estructura de su aplicación?¿Dónde se encuentra el archivo jsp y propiedades? –

+0

¿Está el archivo debajo de la carpeta '/ src' de su proyecto? –

Respuesta

29

crear el archivo test.properties en su paquete

pname=xyz 
psurname=abc 

crear el archivo 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

¿dónde debo poner el archivo de propiedades en mi paquete? –

+0

Normalmente debe poner el archivo de propiedades aquí (en la carpeta denominada "clases"): WEB-INF -> classess – Optio

4

JSP se ejecuta en el contenedor de servlet, por lo que su directorio de trabajo actual está definido por el contenedor. Normalmente, es el directorio donde está instalado el contenedor o su directorio bin. En cualquier caso, no es el lugar donde desea almacenar su archivo de propiedades personalizadas.

Hay 2 enfoques típicos para hacer lo que necesita.

El primer enfoque es bueno si su archivo es parte de su aplicación y nunca lo cambia en la implementación. En este caso leerlo de recursos:

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

o incluso mejor

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

El segundo enfoque es bueno si desea cambiar el archivo de propiedades en el entorno de despliegue. En este caso, colóquelo en algún lugar del sistema de archivos fuera de su contenedor. Por ejemplo, /opt/mycompany/conf/myproperties.properties en Linux o en cualquier otra ubicación que desee. Ahora debe usar la ruta absoluta al crear FileInputStream.

Para que el sistema sea mejor configurable, no debe escribir la ruta al archivo de configuración dentro del código. Un mejor enfoque es pasarlo a la aplicación usando las propiedades del sistema, p. agregue el parámetro como -Dmycompany.conf=/opt/mycompany/myprops.properties cuando está ejecutando su servidor de aplicaciones. Cuando se desea leer el archivo haga lo siguiente:

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

Ahora configuración de su sistema puede controlar de forma independiente por el implementador.

0

intente cambiar FileInputStream fis = new FileInputStream("myproperties.properties");-FileInputStream fis = new FileInputStream(new File("myproperties.properties"));

Además, asegúrese de que las clases que está utilizando ya se pueden importar en el archivo JSP. A saber,

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

sí, tengo paquetes importados correctamente. –

+0

sí Russell Gutierrez He intentado en varias carpetas lib, src, –

Cuestiones relacionadas