2010-06-09 2 views
10

Я пытаюсь использовать ServletContext.getResource для получения ссылки на файл изображения (который затем я буду включать в библиотеку PDF с помощью iText).
Когда я использую ServletContext.getRealPath("picture.jpg"), я возвращаю строковый URL-адрес. Однако getResource всегда возвращает null.ServletContext getResource не работает

Пример 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 

Пример 2:

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

Так что правильный способ построить объект java.net.URL, указывающий на файл в моем webapps/ папка? Почему работает getRealPath, но не getResource?

В случае это помогает вообще, вот моя структура папок

webapps -> mySite -> picture.jpg 

ли мое изображение нужно хранить в любом WEB-INF или WEB-INF/classes для чтения getResource?

ответ

9

Возвращает URL-адрес ресурса, который сопоставляется указанному пути. Путь должен начинаться с «/» и интерпретируется как относительно текущего корня контекста.

Таким образом, вы должны предоставить контекстный относительный полный путь. Например:

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

(обратите внимание на нижнем регистре servletContext переменной)

+0

добавляя слэш устранило проблему – David

2

getRealPath() обеспечивает операционную конкретный абсолютный путь ресурса, в то время как getResource() принимает путь относительно каталога контекста, а параметр должен начать с "/". Вместо этого попробуйте ServletContext.getResource ("/picture.jpg").

Doc: getResource

Смежные вопросы