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

Java 从servlet访问WebContent文件夹中的文件,java,servlets,apache-fop,Java,Servlets,Apache Fop,我正在尝试使用FOP生成PDF文档。pdf生成代码保存在servlet中,xsl保存在WebContent文件夹中的特定文件夹中 如何通过提供相对路径来访问此xsl文件?只有在我给出文件对象中的完整路径时,它才起作用 我需要动态生成xml内容。如何将动态生成的xml作为源而不是文件对象 请提供您的建议。要获得路径,您只需执行以下操作: String path = s.getServletContext().getRealPath("/WEB-INF/somedir/hdfeeh");

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

如何通过提供相对路径来访问此xsl文件?只有在我给出文件对象中的完整路径时,它才起作用

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


请提供您的建议。

要获得路径,您只需执行以下操作:

String path = s.getServletContext().getRealPath("/WEB-INF/somedir/hdfeeh");         
s
是实现
HTTPServlet
的类。如果是servlet类,也可以使用
this.getServletContext()

然后将其作为参数传递


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

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

/启动servlet/


/endservlet/

我使用以下方法读取web内容下的文件

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

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

不幸的是,我无法将资源加载到流中。我得到了我打印的servletContext异常java.net.MalformedURLException,它显示为com.ibm.ws.webcontainer.facade。ServletContextFacade@36c29971有什么想法吗?在使用servletContext.getRealPath(filePath)之后;工作正常:)在这里,代码工作正常。我正在使用Tomcat6.*。现在我看到您正在使用IBM平台。也许,这就是结果之间的差异。我不太明白。我不知道什么是
s
?@newbie
s
是一个实现的对象
HttpServlet
扩展了一个实现
ServletConfig
的类。这意味着如果您的类扩展了
HttpServlet
,您可以执行
这个.getServletContext()
。它对我不起作用。如果我检查文件是否存在这样的路径,它将返回false。看看我的问题:
BufferedReader reader = new BufferedReader(new InputStreamReader(request.getSession().getServletContext().getResourceAsStream("/json/sampleJson.json")));