Class ServletContextResource
- java.lang.Object
- org.springframework.core.io.AbstractResource
- org.springframework.core.io.AbstractFileResolvingResource
- org.springframework.web.context.support.ServletContextResource
- All Implemented Interfaces:
ContextResource
,InputStreamSource
,Resource
public class ServletContextResource extends AbstractFileResolvingResource implements ContextResource
Resource
implementation forServletContext
resources, interpreting relative paths within the web application root directory.Always supports stream access and URL access, but only allows
java.io.File
access when the web application archive is expanded.- Since:
- 28.12.2003
- Author:
- Juergen Hoeller
- See Also:
ServletContext.getResourceAsStream(java.lang.String)
,ServletContext.getResource(java.lang.String)
,ServletContext.getRealPath(java.lang.String)
Constructor Summary
Constructors Constructor Description ServletContextResource(ServletContext servletContext, String path)
Create a new ServletContextResource.
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Resource
createRelative(String relativePath)
This implementation creates a ServletContextResource, applying the given path relative to the path of the underlying file of this resource descriptor.boolean
equals(Object other)
This implementation compares the underlying ServletContext resource locations.boolean
exists()
This implementation checksServletContext.getResource
.String
getDescription()
This implementation returns a description that includes the ServletContext resource location.File
getFile()
This implementation resolves "file:" URLs or alternatively delegates toServletContext.getRealPath
, throwing a FileNotFoundException if not found or not resolvable.String
getFilename()
This implementation returns the name of the file that this ServletContext resource refers to.InputStream
getInputStream()
This implementation delegates toServletContext.getResourceAsStream
, but throws a FileNotFoundException if no resource found.String
getPath()
Return the path for this resource.String
getPathWithinContext()
Return the path within the enclosing 'context'.ServletContext
getServletContext()
Return the ServletContext for this resource.URL
getURL()
This implementation delegates toServletContext.getResource
, but throws a FileNotFoundException if no resource found.int
hashCode()
This implementation returns the hash code of the underlying ServletContext resource location.boolean
isFile()
This implementation always returnsfalse
.boolean
isReadable()
This implementation delegates toServletContext.getResourceAsStream
, which returnsnull
in case of a non-readable resource (e.g.Methods inherited from class org.springframework.core.io.AbstractFileResolvingResource
contentLength, customizeConnection, customizeConnection, getFile, getFileForLastModifiedCheck, isFile, lastModified, readableChannel
Methods inherited from class org.springframework.core.io.AbstractResource
getURI, isOpen, toString
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.springframework.core.io.Resource
contentLength, getURI, isOpen, lastModified, readableChannel
Constructor Detail
ServletContextResource
public ServletContextResource(ServletContext servletContext, String path)
Create a new ServletContextResource.The Servlet spec requires that resource paths start with a slash, even if many containers accept paths without leading slash too. Consequently, the given path will be prepended with a slash if it doesn't already start with one.
- Parameters:
servletContext
- the ServletContext to load frompath
- the path of the resource
Method Detail
getServletContext
public final ServletContext getServletContext()
Return the ServletContext for this resource.
exists
public boolean exists()
This implementation checksServletContext.getResource
.- Specified by:
exists
in interfaceResource
- Overrides:
exists
in classAbstractFileResolvingResource
- See Also:
ServletContext.getResource(String)
isReadable
public boolean isReadable()
This implementation delegates toServletContext.getResourceAsStream
, which returnsnull
in case of a non-readable resource (e.g. a directory).- Specified by:
isReadable
in interfaceResource
- Overrides:
isReadable
in classAbstractFileResolvingResource
- See Also:
ServletContext.getResourceAsStream(String)
isFile
public boolean isFile()
Description copied from class:AbstractResource
This implementation always returnsfalse
.- Specified by:
isFile
in interfaceResource
- Overrides:
isFile
in classAbstractFileResolvingResource
- See Also:
Resource.getFile()
getInputStream
public InputStream getInputStream() throws IOException
This implementation delegates toServletContext.getResourceAsStream
, but throws a FileNotFoundException if no resource found.- Specified by:
getInputStream
in interfaceInputStreamSource
- Returns:
- the input stream for the underlying resource (must not be
null
) - Throws:
FileNotFoundException
- if the underlying resource doesn't existIOException
- if the content stream could not be opened- See Also:
ServletContext.getResourceAsStream(String)
getURL
public URL getURL() throws IOException
This implementation delegates toServletContext.getResource
, but throws a FileNotFoundException if no resource found.- Specified by:
getURL
in interfaceResource
- Overrides:
getURL
in classAbstractResource
- Throws:
IOException
- if the resource cannot be resolved as URL, i.e. if the resource is not available as descriptor- See Also:
ServletContext.getResource(String)
getFile
public File getFile() throws IOException
This implementation resolves "file:" URLs or alternatively delegates toServletContext.getRealPath
, throwing a FileNotFoundException if not found or not resolvable.- Specified by:
getFile
in interfaceResource
- Overrides:
getFile
in classAbstractFileResolvingResource
- Throws:
FileNotFoundException
- if the resource cannot be resolved as absolute file path, i.e. if the resource is not available in a file systemIOException
- in case of general resolution/reading failures- See Also:
ServletContext.getResource(String)
,ServletContext.getRealPath(String)
createRelative
public Resource createRelative(String relativePath)
This implementation creates a ServletContextResource, applying the given path relative to the path of the underlying file of this resource descriptor.- Specified by:
createRelative
in interfaceResource
- Overrides:
createRelative
in classAbstractResource
- Parameters:
relativePath
- the relative path (relative to this resource)- Returns:
- the resource handle for the relative resource
- See Also:
StringUtils.applyRelativePath(String, String)
getFilename
@Nullable public String getFilename()
This implementation returns the name of the file that this ServletContext resource refers to.- Specified by:
getFilename
in interfaceResource
- Overrides:
getFilename
in classAbstractResource
- See Also:
StringUtils.getFilename(String)
getDescription
public String getDescription()
This implementation returns a description that includes the ServletContext resource location.- Specified by:
getDescription
in interfaceResource
- See Also:
Object.toString()
getPathWithinContext
public String getPathWithinContext()
Description copied from interface:ContextResource
Return the path within the enclosing 'context'.This is typically path relative to a context-specific root directory, e.g. a ServletContext root or a PortletContext root.
- Specified by:
getPathWithinContext
in interfaceContextResource
equals
public boolean equals(@Nullable Object other)
This implementation compares the underlying ServletContext resource locations.- Overrides:
equals
in classAbstractResource
- See Also:
Resource.getDescription()
hashCode
public int hashCode()
This implementation returns the hash code of the underlying ServletContext resource location.- Overrides:
hashCode
in classAbstractResource
- See Also:
Resource.getDescription()