Доступ к файлу в папке WebContent из сервлета
Я пытаюсь создать PDF-документ с помощью FOP. Код генерации pdf хранится в сервлете, а xsl - в определенной папке в папке WebContent.
Как я могу получить доступ к этому файлу xsl, указав относительный путь? Это работает только в том случае, если я даю полный путь в объекте File.
Мне нужно динамически генерировать содержимое xml. Как я могу дать этот динамически генерируемый xml в качестве источника вместо объекта File?
Пожалуйста, предоставьте свои предложения.
3 ответов:
Чтобы получить путь, вы можете просто сделать:
String path = s.getServletContext().getRealPath("/WEB-INF/somedir/hdfeeh");
sявляется классом, реализующимHTTPServlet.Вы также можете использоватьthis.getServletContext(), Если это ваш класс сервлетов.Затем передайте это в качестве параметра.
Что касается использования динамически генерируемого XML, библиотека, которую вы используете, должна поддерживать использование входного потока, записать ваш XML, преобразовать его в массив байтов, затем обернуть его в
ByteArrayInputStreamи использовать это.
Для прямой и независимой реализации контейнера вы можете получить доступ к ресурсу с помощью следующего метода getResource () внутри вашего сервлета:
/запуск сервлета /
public InputStream getResource(String resourcePath) { ServletContext servletContext = getServletContext(); InputStream openStream = servletContext.getResourceAsStream( resourcePath ); return openStream; } public void testConsume() { String path = "WEB-INF/teste.log"; InputStream openStream = getResource( path ); int c = -1; byte[] bb = new byte[1024]; while ( -1 != ( c = openStream.read( bb ) ) ) { /* consume stream */ } openStream.close(); }/конец сервлета /
Я использовал следующий метод для чтения файла в разделе web content
BufferedReader reader = new BufferedReader(new InputStreamReader(request.getSession().getServletContext().getResourceAsStream("/json/sampleJson.json")));Теперь все содержимое файла доступно в объекте reader.
Comments