Class DefaultStaticContentLoader
- All Implemented Interfaces:
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 uiStaticContentPath
/* and then mapping the value
after to common packages in Struts and, optionally, in your class path. By default, the following packages are
automatically searched:
- org.apache.struts2.static
- template
- static
This means that you can simply request uiStaticContentPath
/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.
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.apache.struts2.dispatcher.StaticContentLoader
StaticContentLoader.Validator
-
Field Summary
Modifier and TypeFieldDescriptionprotected boolean
protected String
Store state of StrutsConstants.STRUTS_I18N_ENCODING setting.protected final Calendar
Provide a formatted date for setting heading information when caching static content.Store set of path prefixes to use with static resources.protected boolean
Store state of StrutsConstants.STRUTS_SERVE_STATIC_CONTENT setting.protected boolean
Store state of StrutsConstants.STRUTS_SERVE_STATIC_BROWSER_CACHE setting.protected String
Store state ofStrutsConstants.STRUTS_UI_STATIC_CONTENT_PATH
setting.Fields inherited from interface org.apache.struts2.dispatcher.StaticContentLoader
DEFAULT_STATIC_CONTENT_PATH
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected String
boolean
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, jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) Locate a static resource and copy directly to the response, setting the appropriate caching headers.protected String
protected String
getContentType
(String name) Determine the content type for the resource name.Create a string array from a comma-delimited list of packages.protected void
process
(InputStream is, String path, jakarta.servlet.http.HttpServletRequest request, jakarta.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.void
setStaticContentPath
(String uiStaticContentPath)
-
Field Details
-
pathPrefixes
Store set of path prefixes to use with static resources. -
serveStatic
protected boolean serveStaticStore state of StrutsConstants.STRUTS_SERVE_STATIC_CONTENT setting. -
uiStaticContentPath
Store state ofStrutsConstants.STRUTS_UI_STATIC_CONTENT_PATH
setting. -
serveStaticBrowserCache
protected boolean serveStaticBrowserCacheStore state of StrutsConstants.STRUTS_SERVE_STATIC_BROWSER_CACHE setting. -
lastModifiedCal
Provide a formatted date for setting heading information when caching static content. -
encoding
Store state of StrutsConstants.STRUTS_I18N_ENCODING setting. -
devMode
protected boolean devMode
-
-
Constructor Details
-
DefaultStaticContentLoader
public DefaultStaticContentLoader()
-
-
Method Details
-
setServeStaticContent
Modify state of StrutsConstants.STRUTS_SERVE_STATIC_CONTENT setting.- Parameters:
serveStaticContent
- New setting
-
setStaticContentPath
-
setServeStaticBrowserCache
Modify state of StrutsConstants.STRUTS_SERVE_STATIC_BROWSER_CACHE setting.- Parameters:
serveStaticBrowserCache
- New setting
-
setEncoding
Modify state of StrutsConstants.STRUTS_I18N_ENCODING setting.- Parameters:
encoding
- New setting
-
setDevMode
-
setHostConfig
- Specified by:
setHostConfig
in interfaceStaticContentLoader
- Parameters:
filterConfig
- The filter configuration
-
getAdditionalPackages
-
parse
Create a string array from a comma-delimited list of packages.- Parameters:
packages
- A comma-delimited String listing packages- Returns:
- A string array of packages
-
findStaticResource
public void findStaticResource(String path, jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) throws IOException Description copied from interface:StaticContentLoader
Locate a static resource and copy directly to the response, setting the appropriate caching headers.- Specified by:
findStaticResource
in interfaceStaticContentLoader
- Parameters:
path
- The resource namerequest
- The requestresponse
- The response- Throws:
IOException
- If anything goes wrong
-
process
protected void process(InputStream is, String path, jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) throws IOException - Throws:
IOException
-
findResource
Look for a static resource in the classpath.- Parameters:
path
- The resource path- Returns:
- The URL of the resource
- Throws:
IOException
- If there is a problem locating the resource
-
buildPath
- Parameters:
name
- resource namepackagePrefix
- The package prefix to use to locate the resource- Returns:
- full path
- Throws:
UnsupportedEncodingException
- If there is a encoding problem
-
getContentType
Determine the content type for the resource name.- Parameters:
name
- The resource name- Returns:
- The mime type
-
copy
Copy bytes from the input stream to the output stream.- Parameters:
input
- The input streamoutput
- The output stream- Throws:
IOException
- If anything goes wrong
-
canHandle
- Specified by:
canHandle
in interfaceStaticContentLoader
- Parameters:
resourcePath
- Requested resource path- Returns:
- true if this loader is able to load this type of resource, false otherwise
-
cleanupPath
- Parameters:
path
- requested path- Returns:
- path without leading
uiStaticContentPath
-