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



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



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



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

246   3  

3 ответов:

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

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

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

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

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

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

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

  2. теперь давайте использовать класс loader:

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

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

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

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

Comments

    Ничего не найдено.