ServletContext getResource не работает
Я пытаюсь использовать ServletContext.getResource
для получения ссылки java.net.url
к файлу изображения (который затем я буду включать в библиотеку PDF с помощью iText).
Когда я использую ServletContext.getRealPath("picture.jpg")
, я возвращаю строковый URL-адрес. Однако getResource всегда возвращает null
.
Пример 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
?
Ответы
Ответ 1
Возвращает URL-адрес ресурса, который сопоставляется с указанным путем. Путь должен начинаться с "/" и интерпретируется как относительно текущего корня контекста.
Итак, вы должны предоставить контекстный относительный полный путь. Например:
URL pictureURL = servletContext.getResource("/images/picture.jpg");
(обратите внимание на нижнюю обтекаемую переменную servletContext
)
Ответ 2
getRealPath()
предоставляет конкретный абсолютный путь к ресурсу, а getResource()
принимает путь относительно каталога контекста, а параметр должен начинаться с символа "/". Вместо этого попробуйте ServletContext.getResource ("/picture.jpg")
.
Doc:
getResource