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

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

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

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

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

3 ответов


получить путь вы можете просто сделать:

String path = s.getServletContext().getRealPath("/WEB-INF/somedir/hdfeeh");         

s - это класс, реализующий HTTPServlet.Вы также можете использовать this.getServletContext() Если ваш сервлет класса.

затем передайте это как параметр.

Что касается использования динамически генерируемого XML, библиотека, которую вы используете, должна поддерживать использование входного потока, писать XML, преобразовывать его в массив байтов, а затем обернуть его в ByteArrayInputStream и использовать это.


для прямой и независимой реализации контейнера вы можете получить доступ к resourcewith следующий метод 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")));

теперь все содержимое файла доступно в объекте чтения.