Доступ к файлу в папке WebContent из сервлета



Я пытаюсь создать PDF-документ с помощью FOP. Код генерации pdf хранится в сервлете, а xsl - в определенной папке в папке WebContent.



Как я могу получить доступ к этому файлу xsl, указав относительный путь? Это работает только в том случае, если я даю полный путь в объекте File.



Мне нужно динамически генерировать содержимое xml. Как я могу дать этот динамически генерируемый xml в качестве источника вместо объекта File?



Пожалуйста, предоставьте свои предложения.

588   3  

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

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