2010-06-09 3 views
10

J'essaie d'utiliser ServletContext.getResource pour récupérer une référence java.net.url à un fichier image (que je vais ensuite inclure dans une bibliothèque PDF en utilisant iText).
Lorsque j'utilise ServletContext.getRealPath("picture.jpg"), je récupère une URL de chaîne. Toutefois, getResource renvoie toujours null.ServletContext getResource ne fonctionne pas

Exemple 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 

Exemple 2:

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

Alors quelle est la bonne façon de construire un objet java.net.URL pointant vers un fichier dans mon webapps/ dossier? Pourquoi getRealPath fonctionne-t-il mais pas getResource?

Dans le cas où il aide à tous, voici ma structure de dossiers

webapps -> mySite -> picture.jpg 

Est-ce que ma photo doivent être stockés soit dans WEB-INF ou WEB-INF/classes être lu par getResource?

Répondre

9

Renvoie une URL à la ressource mappée à un chemin spécifié. Le chemin doit commencer par un "/" et est interprété comme relatif à la racine de contexte actuelle. Vous devez donc indiquer le chemin d'accès complet relatif au contexte. Par conséquent, vous devez indiquer le chemin d'accès complet relatif au contexte.

Par exemple:

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

(noter la variable servletContext inférieur tubé)

+0

ajouter la principale barre fixe le problème – David

2

getRealPath() fournit le chemin absolu spécifique d'exploitation d'une ressource, alors que getResource() accepte un chemin relatif au répertoire contexte, et le paramètre doit commencer avec un "/". Essayez plutôt ServletContext.getResource ("/picture.jpg").

Doc: getResource