java - property - Cómo cargar un archivo.properties en un jsp
leer datos de un properties java (4)
He llegado tan lejos como esto:
private Properties logoUrls = new Properties();
logoUrls.load(new FileInputStream("channelLogos.properties"));
donde channelLogos.properties está en el mismo directorio que mi JSP. Obtengo una excepción FileNotFound. ¿Dónde realmente piensa mi aplicación me refiero a "channelLogos.properties", si no es el mismo directorio que el JSP? ¿Cómo puedo determinar la ruta correcta para cargar el archivo de propiedades?
Cuando dices "el mismo directorio que JSP", ¿qué quieres decir exactamente con eso? Que su JSP se encuentra en algún lugar de, digamos, /mywebapp/somefolder/my.jsp
siendo mywebapp
la raíz de la aplicación y el archivo de propiedades es /mywebapp/somefolder/channelLogos.properties
?
Si es así, lo más probable es que NO estén en el mismo directorio. JSP se ha compilado y su ubicación puede variar según el contenedor de servlets. Su mejor opción es usar ServletContext.getRealPath()
como sugiere pkaeding con la ruta del archivo de propiedades relativa al contexto de la aplicación de Internet como argumento. Usando el ejemplo de arriba:
private Properties logoUrls = new Properties();
logoUrls.load(new FileInputStream(servletContext.getRealPath("/somefolder/channelLogos.properties")));
Dicho esto, tenga en cuenta que si insiste en colocar sus propiedades en la misma carpeta que JSP, debe tener cuidado de restringir su acceso público (a menos que esa sea la intención).
Eche un vistazo a ServletContext.getRealPath () . Eso debería darle la ruta completa al archivo de propiedades.
Me gustaría recomendar encarecidamente leer acerca de los Servlets Modelo 2 . Lo recomiendo a todos los que todavía estén haciendo Model 1 Servlets, es decir, haciendo "trabajo real" en un JSP.
En cuanto a su pregunta: Primero, arroje el archivo de propiedades en su classpath, luego lea el archivo usando getResourceAsSttream:
Thread.currentThread().getContextClassLoader().getResourceAsStream("channelLogos.properties");
Hay muchas opciones, por supuesto, y todos tendrán su favorito.
Esto hará el trabajo:
<%@page import="java.io.InputStream" %>
<%@page import="java.util.Properties" %>
<%
InputStream stream = application.getResourceAsStream("/some.properties");
Properties props = new Properties();
props.load(stream);
%>
De todos modos, realmente creo que deberías tener el archivo de propiedades en el classpath y usar un servlet