如何获取servlet资源的文件名?

时间:2009-07-30 16:11:21

标签: java servlets resources

我正在编写一个调用jar中函数的java servlet。我无法控制这个jar中的代码。被调用的函数需要配置文件的文件名作为参数。

我想将此文件与我的war文件捆绑在一起。如果我把它放在某个地方的战争中,我可以在jar中传递函数的文件名吗?

请注意,只有文件名可以与jar的API一起使用。所以ServletContext.getResourceAsStream()没有帮助。

2 个答案:

答案 0 :(得分:3)

使用ServletContext.getRealPath()。这将返回给定servlet上下文资源的文件系统路径。您传递的参数与传递给ServletContext.getResourceAsStream()

的参数相同

更好的是,使用Spring的资源抽象:

Resource resource = new ServletContextResource(servletContext, "/path/to/file");
File resourceFile = resource.getFile();

答案 1 :(得分:1)

如果它在您的.war文件中,您将无法将其作为文件访问。一些servlet容器会将.war文件分解为组件,但我认为你不能依赖它。

您是否考虑过将其解压缩(通过getResourceAsStream()),将其写入临时文件/目录,然后引用它?