java - extension - archivo web xml netbeans
Cómo cargar un recurso del directorio WEB-INF de un archivo web (3)
Tengo un archivo web con un archivo colocado en el directorio WEB-INF.
¿Cómo cargo ese archivo en una clase java?
Sé que puedo ponerlo en el directorio de clases y cargarlo desde allí. Simplemente lo pondría en WEB-INF.
Así es como funciona para mí sin uso de servlets.
Digamos que estoy intentando acceder a web.xml en project / WebContent / WEB-INF / web.xml
En la pestaña Origen del proyecto de la propiedad del proyecto, agregue la carpeta fuente señalando el contenedor principal para la carpeta WEB-INF (en mi caso, WebContent)
Ahora usemos el cargador de clases:
InputStream inStream = class.getClass().getClassLoader().getResourceAsStream("Web-INF/web.xml")
El problema que tuve al acceder al archivo db sqlite que creé en mi servidor java (jersey) tenía que ver únicamente con la ruta. Algunos de los documentos dicen que la URL jdbc connect debería verse como "jdbc: sqlite: //path-to-file/sample.db". Pensé que la barra doble era parte de una ruta estilo protocolo HT y se correlacionaría correctamente cuando se despliega, pero en realidad, es una ruta absoluta o relativa. Entonces, cuando coloqué el archivo en la raíz de la carpeta WebContent (proyecto tomcat), un uri como este funcionaba "jdbc: sqlite: sample.db".
Lo único que me estaba arrojando fue que cuando estaba revisando el depurador, recibí un mensaje que decía "abriendo db: ... permiso denegado". Pensé que era una cuestión de permisos del sistema de archivos o quizás permisos de usuario sql. Después de descubrir que SQLite no tiene el concepto de roles / permisos como MySQL, etc., eventualmente cambié los permisos del archivo antes de llegar a lo que creo que era la solución correcta, pero creo que era solo un mensaje malo (es decir, permiso denegado, en lugar de archivo no encontrado).
Espero que esto ayude a alguien.
Utilice el método getResourceAsStream()
en el objeto ServletContext, por ejemplo
servletContext.getResourceAsStream("/WEB-INF/myfile");
Cómo obtiene una referencia al ServletContext depende de su aplicación ... ¿quiere hacerlo desde un Servlet o desde un JSP?
EDITADO: si se encuentra dentro de un objeto Servlet, llame a getServletContext()
. Si está en JSP, use la application
variable predefinida.