public class DefaultStaticContentLoader extends Object implements StaticContentLoader
Default implementation to server static content
This class is used to serve common static content needed when using various parts of Struts, such as JavaScript files, CSS files, etc. It works by looking for requests to /struts/* (or /static/*), and then mapping the value after "/struts/" to common packages in Struts and, optionally, in your class path. By default, the following packages are automatically searched:
This means that you can simply request /struts/xhtml/styles.css and the XHTML UI theme's default stylesheet will be returned. Likewise, many of the AJAX UI components require various JavaScript files, which are found in the org.apache.struts2.static package. If you wish to add additional packages to be searched, you can add a comma separated (space, tab and new line will do as well) list in the filter init parameter named "packages". Be careful, however, to expose any packages that may have sensitive information, such as properties file with database access credentials.
Modifier and Type | Field and Description |
---|---|
protected boolean |
devMode |
protected String |
encoding
Store state of StrutsConstants.STRUTS_I18N_ENCODING setting.
|
protected Calendar |
lastModifiedCal
Provide a formatted date for setting heading information when caching static content.
|
protected List<String> |
pathPrefixes
Store set of path prefixes to use with static resources.
|
protected boolean |
serveStatic
Store state of StrutsConstants.STRUTS_SERVE_STATIC_CONTENT setting.
|
protected boolean |
serveStaticBrowserCache
Store state of StrutsConstants.STRUTS_SERVE_STATIC_BROWSER_CACHE setting.
|
Constructor and Description |
---|
DefaultStaticContentLoader() |
Modifier and Type | Method and Description |
---|---|
protected String |
buildPath(String name,
String packagePrefix) |
boolean |
canHandle(String resourcePath) |
protected String |
cleanupPath(String path) |
protected void |
copy(InputStream input,
OutputStream output)
Copy bytes from the input stream to the output stream.
|
protected URL |
findResource(String path)
Look for a static resource in the classpath.
|
void |
findStaticResource(String path,
javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
Locate a static resource and copy directly to the response, setting the
appropriate caching headers.
|
protected String |
getAdditionalPackages() |
protected String |
getContentType(String name)
Determine the content type for the resource name.
|
protected List<String> |
parse(String packages)
Create a string array from a comma-delimited list of packages.
|
protected void |
process(InputStream is,
String path,
javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response) |
void |
setDevMode(String devMode) |
void |
setEncoding(String encoding)
Modify state of StrutsConstants.STRUTS_I18N_ENCODING setting.
|
void |
setHostConfig(HostConfig filterConfig) |
void |
setServeStaticBrowserCache(String serveStaticBrowserCache)
Modify state of StrutsConstants.STRUTS_SERVE_STATIC_BROWSER_CACHE
setting.
|
void |
setServeStaticContent(String serveStaticContent)
Modify state of StrutsConstants.STRUTS_SERVE_STATIC_CONTENT setting.
|
protected List<String> pathPrefixes
protected boolean serveStatic
protected boolean serveStaticBrowserCache
protected final Calendar lastModifiedCal
protected String encoding
protected boolean devMode
public void setServeStaticContent(String serveStaticContent)
serveStaticContent
- New settingpublic void setServeStaticBrowserCache(String serveStaticBrowserCache)
serveStaticBrowserCache
- New settingpublic void setEncoding(String encoding)
encoding
- New settingpublic void setDevMode(String devMode)
public void setHostConfig(HostConfig filterConfig)
setHostConfig
in interface StaticContentLoader
filterConfig
- The filter configurationprotected String getAdditionalPackages()
protected List<String> parse(String packages)
packages
- A comma-delimited String listing packagespublic void findStaticResource(String path, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws IOException
StaticContentLoader
findStaticResource
in interface StaticContentLoader
path
- The resource namerequest
- The requestresponse
- The responseIOException
- If anything goes wrongprotected void process(InputStream is, String path, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws IOException
IOException
protected URL findResource(String path) throws IOException
path
- The resource pathIOException
- If there is a problem locating the resourceprotected String buildPath(String name, String packagePrefix) throws UnsupportedEncodingException
name
- resource namepackagePrefix
- The package prefix to use to locate the resourceUnsupportedEncodingException
- If there is a encoding problemprotected String getContentType(String name)
name
- The resource nameprotected void copy(InputStream input, OutputStream output) throws IOException
input
- The input streamoutput
- The output streamIOException
- If anything goes wrongpublic boolean canHandle(String resourcePath)
canHandle
in interface StaticContentLoader
resourcePath
- Requested resource pathCopyright © 2000–2020 Apache Software Foundation. All rights reserved.