Подтвердить что ты не робот

Как загрузить ресурс из каталога WEB-INF веб-архива

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

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

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

4b9b3361

Ответ 1

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

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

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

EDITED: если вы находитесь внутри объекта Servlet, тогда вызовите getServletContext(). Если вы находитесь в JSP, используйте предопределенную переменную application.

Ответ 2

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

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

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

  • Теперь можно использовать загрузчик классов:

    InputStream inStream = class.getClass().getClassLoader().getResourceAsStream("Web-INF/web.xml")
    

Ответ 3

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

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

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