Reputation: 857
I'm trying to use ServletContext.getResource
to retrieve a java.net.url
reference to an image file (which I will then include in a PDF library using iText).
When I use ServletContext.getRealPath("picture.jpg")
, I get back a string URL. However, getResource always returns null
.
Example 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
Example 2:
URL pictureURL = ServletContext.getResource("picture.jpg");
// pictureURL is always null
So what is the correct way to build a java.net.URL object pointing to a file in my webapps/
folder? Why does getRealPath
work but not getResource
?
In case it helps at all, here is my folder structure
webapps -> mySite -> picture.jpg
Does my picture need to be stored in either WEB-INF
or WEB-INF/classes
to be read by getResource
?
Upvotes: 11
Views: 20206
Reputation: 597432
Returns a URL to the resource that is mapped to a specified path. The path must begin with a "/" and is interpreted as relative to the current context root.
So you must provide the context-relative full path. For example:
URL pictureURL = servletContext.getResource("/images/picture.jpg");
(note the lower-cased servletContext
variable)
Upvotes: 11
Reputation: 3240
getRealPath()
provides the operating specific absolute path of a resource, while getResource()
accepts a path relative to the context directory, and the parameter must begin with a "/". Try ServletContext.getResource ("/picture.jpg")
instead.
Doc: getResource
Upvotes: 2