3 ответов:
использовать
getResourceAsStream()метод на объекте ServletContext, напримерservletContext.getResourceAsStream("/WEB-INF/myfile");как вы получаете ссылку на ServletContext зависит от вашего приложения... вы хотите сделать его из сервлета или JSP-страницы?
отредактировано: если вы находитесь внутри объекта сервлета, то вызовите
getServletContext(). Если вы находитесь в JSP, используйте предопределенную переменнуюapplication.
вот как это работает для меня без использования сервлета.
допустим, я пытаюсь получить доступ к web.xml в project/WebContent/WEB-INF / web.xml
в свойстве project Source-tab добавьте исходную папку, указав на родительский контейнер для папки WEB-INF (в моем случае WebContent )
теперь давайте использовать класс 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