我正在尝试使用FOP生成PDF文档。 pdf生成代码保存在servlet中,xsl位于WebContent文件夹中的特定文件夹中。
如何通过提供相对路径来访问此xsl文件?它仅在我在File对象中提供完整路径时才有效。
我需要动态生成xml内容。如何将此动态生成的xml作为源而不是File对象?
请提供您的建议。
答案 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对象中可用。