Я пытаюсь создать PDF-документ с помощью FOP. Код генерации PDF хранится в сервлете, а xsl находится в определенной папке в папке WebContent.
Как я могу получить доступ к этому файлу xsl, указав относительный путь? Это работает, только если я укажу полный путь в объекте File.
Мне нужно динамически генерировать содержимое xml. Как я могу указать этот динамически сгенерированный xml в качестве источника вместо объекта File?
Пожалуйста, предоставьте свои предложения.
Ответ 1 · рейтинг 18 · GBa
Чтобы получить путь, вы можете просто сделать:
String path = s.getServletContext().getRealPath("/WEB-INF/somedir/hdfeeh");
s - это класс, который реализует HTTPServlet. Вы также можете использовать this.getServletContext(), если это ваш класс сервлета.
Затем передайте это как параметр.
Что касается использования динамически сгенерированного XML, используемая вами библиотека должна поддерживать использование входного потока, писать свой XML, преобразовывать его в массив байтов, затем обернуть его в ByteArrayInputStream и использовать это.
Ответ 2 · рейтинг 6 · Andre Pastore
Для прямой и независимой реализации контейнера вы можете получить доступ к ресурсу с помощью следующего метода 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();
}
/завершить сервлет/
Ответ 3 · рейтинг 1 · Rajan
Я использовал следующий метод для чтения файла в веб-контенте.
BufferedReader reader = new BufferedReader(new InputStreamReader(request.getSession().getServletContext().getResourceAsStream("/json/sampleJson.json")));
Теперь все содержимое файла доступно в объекте чтения.