Как загрузить ресурс из каталога WEB-INF веб-архива - PullRequest
56 голосов
/ 10 июля 2009

У меня есть веб-архив с файлом, помещенным в каталог WEB-INF.

Как загрузить этот файл в класс Java?

Я знаю, что могу поместить его в каталог классов и загрузить его оттуда. Было бы просто положить его в WEB-INF.

Ответы [ 3 ]

87 голосов
/ 10 июля 2009

Используйте метод getResourceAsStream() для объекта ServletContext, например,

servletContext.getResourceAsStream("/WEB-INF/myfile");

Каким образом вы получаете ссылку на ServletContext, зависит от вашего приложения ... вы хотите сделать это с помощью сервлета или JSP?

РЕДАКТИРОВАНИЕ: Если вы находитесь внутри объекта Servlet, тогда вызовите getServletContext(). Если вы находитесь в JSP, используйте предопределенную переменную application.

6 голосов
/ 09 апреля 2013

Вот как это работает для меня без использования сервлета.

Допустим, я пытаюсь получить доступ к web.xml в проекте / WebContent / WEB-INF / web.xml

  1. В свойстве проекта Source-tab добавьте исходную папку, указав на родительский контейнер для папки WEB-INF (в моем случае WebContent)

  2. Теперь давайте используем загрузчик классов:

    InputStream inStream = class.getClass().getClassLoader().getResourceAsStream("Web-INF/web.xml")
    
0 голосов
/ 23 июня 2017

Проблема с доступом к файлу sqlite db, который я создал на своем сервере java (jersey), возникла исключительно из-за пути. В некоторых документах говорится, что URL-адрес соединения jdbc должен выглядеть так: «jdbc: sqlite: //path-to-file/sample.db». Я думал, что двойная косая черта является частью пути в стиле протокола HT и будет правильно отображаться при развертывании, но на самом деле это абсолютный или относительный путь. Итак, когда я поместил файл в корень папки WebContent (проект tomcat), URI, подобный этому, работал «jdbc: sqlite: sample.db».

Единственное, что меня бросало, это то, что, когда я проходил через отладчик, я получил сообщение, в котором говорилось «открытие базы данных: ... отказано в доступе». Я думал, что это вопрос разрешений файловой системы или, возможно, пользовательских разрешений sql. Узнав, что в SQLite отсутствует концепция ролей / разрешений, таких как MySQL и т. Д., Я в конце концов изменил права доступа к файлам, прежде чем пришел к тому, что я считаю правильным решением, но я думаю, что это просто плохое сообщение (т.е. разрешение отклонено, вместо файла не найден).

Надеюсь, это кому-нибудь поможет.

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