ServletContext getResource не работает - PullRequest
11 голосов
/ 09 июня 2010

Я пытаюсь использовать 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

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

Ответы [ 2 ]

11 голосов
/ 09 июня 2010

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

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

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

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

2 голосов
/ 09 июня 2010

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

Doc: getResource

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...