我正在尝试使用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-INF
或WEB-INF/classes
中才能被getResource
读取?
答案 0 :(得分:10)
返回映射到指定路径的资源的URL。路径必须以“/”开头,并被解释为相对于当前上下文根。
因此,您必须提供与上下文相关的完整路径。例如:
URL pictureURL = servletContext.getResource("/images/picture.jpg");
(请注意较低的servletContext
变量)
答案 1 :(得分:2)
getRealPath()
提供资源的特定于操作的绝对路径,而getResource()
接受相对于上下文目录的路径,并且参数必须以“/”开头。请改为ServletContext.getResource ("/picture.jpg")
。
文档: getResource