ServletContext getResource无法正常工作

时间:2010-06-09 14:23:17

标签: java servlets

我正在尝试使用ServletContext.getResource检索对图像文件的java.net.url引用(我将使用iText将其包含在PDF库中)。
当我使用ServletContext.getRealPath("picture.jpg")时,我会返回一个字符串URL。但是,getResource始终返回null

示例1

String picture = ServletContext.getRealPath("picture.jpg");
// picture contains a non-null String with the correct path
URL pictureURL = ServletContext.getResource(picture);
// pictureURL is always null

示例2

URL pictureURL = ServletContext.getResource("picture.jpg");
// pictureURL is always null

那么构建指向我webapps/文件夹中文件的java.net.URL对象的正确方法是什么?为什么getRealPath有效但getResource无效?

如果它有帮助,这是我的文件夹结构

webapps -> mySite -> picture.jpg

我的图片是否需要存储在WEB-INFWEB-INF/classes中才能被getResource读取?

2 个答案:

答案 0 :(得分:10)

  

返回映射到指定路径的资源的URL。路径必须以“/”开头,并被解释为相对于当前上下文根。

因此,您必须提供与上下文相关的完整路径。例如:

URL pictureURL = servletContext.getResource("/images/picture.jpg");

(请注意较低的servletContext变量)

答案 1 :(得分:2)

getRealPath()提供资源的特定于操作的绝对路径,而getResource()接受相对于上下文目录的路径,并且参数必须以“/”开头。请改为ServletContext.getResource ("/picture.jpg")

文档: getResource