2010-06-09 24 views
10

Estoy tratando de usar ServletContext.getResource para recuperar una referencia java.net.url a un archivo de imagen (que luego incluiré en una biblioteca PDF usando iText).
Cuando uso ServletContext.getRealPath("picture.jpg"), obtengo una cadena URL. Sin embargo, getResource siempre devuelve null.ServletContext getResource no funciona

Ejemplo 1:

String picture = ServletContext.getRealPath("picture.jpg"); 
// picture contains a non-null String with the correct path 
URL pictureURL = ServletContext.getResource(picture); 
// pictureURL is always null 

Ejemplo 2:

URL pictureURL = ServletContext.getResource("picture.jpg"); 
// pictureURL is always null 

Entonces, ¿cuál es la forma correcta de construir un objeto java.net.URL que apunta a un archivo en mi webapps/ ¿carpeta? ¿Por qué funciona getRealPath pero no getResource?

En caso de que ayuda en absoluto, aquí está mi estructura de carpetas

webapps -> mySite -> picture.jpg 

¿Mi imagen necesitan ser almacenados en cualquiera WEB-INF o WEB-INF/classes para ser leído por getResource?

Respuesta

9

Devuelve una URL del recurso que está asignado a una ruta especificada. La ruta debe comenzar con un "/" y se interpreta como relativa a la raíz de contexto actual.

Por lo tanto, debe proporcionar la ruta completa relativa al contexto. Por ejemplo:

URL pictureURL = servletContext.getResource("/images/picture.jpg"); 

(nota de la servletContext variable de entubado inferior-)

+0

la adición de la barra inicial fijado el problema – David

2

getRealPath() proporciona la ruta absoluta específico de funcionamiento de un recurso, mientras getResource() acepta una ruta relativa al directorio de contexto, y el parámetro debe comenzar con un "/". Pruebe ServletContext.getResource ("/picture.jpg") en su lugar.

Doc: getResource

Cuestiones relacionadas