从servlet访问WebContent文件夹中的文件

时间:2009-09-25 19:02:58

标签: java servlets apache-fop

我正在尝试使用FOP生成PDF文档。 pdf生成代码保存在servlet中,xsl位于WebContent文件夹中的特定文件夹中。

如何通过提供相对路径来访问此xsl文件?它仅在我在File对象中提供完整路径时才有效。

我需要动态生成xml内容。如何将此动态生成的xml作为源而不是File对象?

请提供您的建议。

3 个答案:

答案 0 :(得分:17)

要获得您可以做的路径:

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

s是实现HTTPServlet的类。如果是你的servlet类,也可以使用this.getServletContext()

然后将其作为参数传递。

就使用动态生成的XML而言,您正在使用的库应该支持使用输入流,编写XML,将其转换为字节数组,然后将其包装在ByteArrayInputStream中并使用它。 / p>

答案 1 :(得分:6)

对于直接和独立的容器实现,您可以使用servlet中的以下方法getResource()访问资源:

/ 启动servlet /

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();
}

/ 结束servlet /

答案 2 :(得分:1)

我使用以下方法在网络内容下阅读文件

BufferedReader reader = new BufferedReader(new InputStreamReader(request.getSession().getServletContext().getResourceAsStream("/json/sampleJson.json")));

现在所有文件内容都在reader对象中可用。