我正在尝试使用 FOP 生成 PDF 文档。pdf 生成代码保存在 servlet 中,而 xsl 位于 WebContent 文件夹中的特定文件夹中。
如何通过提供相对路径来访问此 xsl 文件?仅当我在 File 对象中提供完整路径时,它才有效。
我需要动态生成 xml 内容。如何将此动态生成的 xml 作为源而不是 File 对象?
请提供您的建议。
我正在尝试使用 FOP 生成 PDF 文档。pdf 生成代码保存在 servlet 中,而 xsl 位于 WebContent 文件夹中的特定文件夹中。
如何通过提供相对路径来访问此 xsl 文件?仅当我在 File 对象中提供完整路径时,它才有效。
我需要动态生成 xml 内容。如何将此动态生成的 xml 作为源而不是 File 对象?
请提供您的建议。
要获得路径,您可以这样做:
String path = s.getServletContext().getRealPath("/WEB-INF/somedir/hdfeeh");
s
是实现的类。如果它是您的 servlet 类,HTTPServlet
您也可以使用。this.getServletContext()
然后将其作为参数传递。
至于使用动态生成的 XML,您使用的库应该支持使用输入流,编写您的 XML,将其转换为字节数组,然后将其包装在 a 中ByteArrayInputStream
并使用它。
对于直接且独立的容器实现,您可以在 servlet 中使用以下方法 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")));
现在所有文件内容都在阅读器对象中可用。