Путь к ресурсу в нашей папке war/WEB-INF?
У меня есть файл в моей папке war/WEB-INF моего проекта App engine. Я прочитал в часто задаваемых вопросах, что вы можете прочитать файл оттуда в контексте сервлета. Я не знаю, как сформировать путь к ресурсу:
/war/WEB-INF/test/foo.txt
Как бы я построил свой путь к этому ресурсу для использования с File (), как это выглядит выше?
спасибо
2 ответов
есть несколько способов сделать это. Пока файл WAR расширен (набор файлов вместо одного .war file), вы можете использовать этот API:
ServletContext context = getContext();
String fullPath = context.getRealPath("/WEB-INF/test/foo.txt");
что будет вам полный системный путь к ресурсу, который вы ищете. Однако это не сработает, если контейнер сервлетов никогда не расширит файл WAR (например, Tomcat). Что будет работать, это использование ServletContext getResource
методы.
ServletContext context = getContext();
URL resourceUrl = context.getResource("/WEB-INF/test/foo.txt");
или в качестве альтернативы, если вы просто хотите входной поток:
InputStream resourceContent = context.getResourceAsStream("/WEB-INF/test/foo.txt");
последний подход будет работать независимо от того, какой контейнер сервлетов вы используете и где установлено приложение. Первый подход будет работать только в том случае, если файл WAR распакован перед развертыванием.
EDIT: Метод getContext (), очевидно, вам придется реализовать. Страницы JSP делают его доступным как
теперь с Java EE 7 Вы можете найти ресурс более легко с
InputStream resource = getServletContext().getResourceAsStream("/WEB-INF/my.json");
https://docs.oracle.com/javaee/7/api/javax/servlet/GenericServlet.html#getServletContext--