Class WebContentGenerator
java.lang.Object
org.springframework.context.support.ApplicationObjectSupport
org.springframework.web.context.support.WebApplicationObjectSupport
org.springframework.web.servlet.support.WebContentGenerator
- All Implemented Interfaces:
Aware
,ApplicationContextAware
,ServletContextAware
- Direct Known Subclasses:
AbstractController
,AbstractHandlerMethodAdapter
,ResourceHttpRequestHandler
,WebContentInterceptor
Convenient superclass for any kind of web content generator,
like
AbstractController
and WebContentInterceptor
.
Can also be used for custom handlers that have their own
HandlerAdapter
.
Supports HTTP cache control options. The usage of corresponding HTTP
headers can be controlled via the "cacheSeconds"
and "cacheControl"
properties.
- Author:
- Rod Johnson, Juergen Hoeller, Brian Clozel, Rossen Stoyanchev
- See Also:
-
Field Summary
Modifier and TypeFieldDescriptionprotected static final String
static final String
HTTP method "GET".static final String
HTTP method "HEAD".static final String
HTTP method "POST".Fields inherited from class org.springframework.context.support.ApplicationObjectSupport
logger
-
Constructor Summary
ConstructorDescriptionCreate a new WebContentGenerator which supports HTTP methods GET, HEAD and POST by default.WebContentGenerator
(boolean restrictDefaultSupportedMethods) Create a new WebContentGenerator.WebContentGenerator
(String... supportedMethods) Create a new WebContentGenerator. -
Method Summary
Modifier and TypeMethodDescriptionprotected final void
applyCacheControl
(HttpServletResponse response, CacheControl cacheControl) Set the HTTP Cache-Control header according to the given settings.protected final void
applyCacheSeconds
(HttpServletResponse response, int cacheSeconds) Apply the given cache seconds and generate corresponding HTTP headers, i.e.protected final void
checkAndPrepare
(HttpServletRequest request, HttpServletResponse response, int cacheSeconds, boolean lastModified) Deprecated.protected final void
checkRequest
(HttpServletRequest request) Check the given request for supported methods and a required session, if any.protected String
Return the "Allow" header value to use in response to an HTTP OPTIONS request based on the configuredsupported methods
also automatically adding "OPTIONS" to the list even if not present as a supported method.final CacheControl
Get theCacheControl
instance that builds the Cache-Control HTTP response header.final int
Return the number of seconds that content is cached.final String[]
Return the HTTP methods that this content generator supports.final String[]
Return the configured request header names for the "Vary" response header.final boolean
Return whether a session is required to handle requests.protected final void
prepareResponse
(HttpServletResponse response) Prepare the given response according to the settings of this generator.final void
setCacheControl
(CacheControl cacheControl) Set theCacheControl
instance to build the Cache-Control HTTP response header.final void
setCacheSeconds
(int seconds) Cache content for the given number of seconds, by writing cache-related HTTP headers to the response: seconds == -1 (default value): no generation cache-related headers seconds == 0: "Cache-Control: no-store" will prevent caching seconds > 0: "Cache-Control: max-age=seconds" will ask to cache contentfinal void
setRequireSession
(boolean requireSession) Set whether a session should be required to handle requests.final void
setSupportedMethods
(String... methods) Set the HTTP methods that this content generator should support.final void
setVaryByRequestHeaders
(String... varyByRequestHeaders) Configure one or more request header names (for example, "Accept-Language") to add to the "Vary" response header to inform clients that the response is subject to content negotiation and variances based on the value of the given request headers.Methods inherited from class org.springframework.web.context.support.WebApplicationObjectSupport
getServletContext, getTempDir, getWebApplicationContext, initApplicationContext, initServletContext, isContextRequired, setServletContext
Methods inherited from class org.springframework.context.support.ApplicationObjectSupport
getApplicationContext, getMessageSourceAccessor, initApplicationContext, obtainApplicationContext, requiredContextClass, setApplicationContext
-
Field Details
-
METHOD_GET
HTTP method "GET".- See Also:
-
METHOD_HEAD
HTTP method "HEAD".- See Also:
-
METHOD_POST
HTTP method "POST".- See Also:
-
HEADER_CACHE_CONTROL
- See Also:
-
-
Constructor Details
-
WebContentGenerator
public WebContentGenerator()Create a new WebContentGenerator which supports HTTP methods GET, HEAD and POST by default. -
WebContentGenerator
public WebContentGenerator(boolean restrictDefaultSupportedMethods) Create a new WebContentGenerator.- Parameters:
restrictDefaultSupportedMethods
-true
if this generator should support HTTP methods GET, HEAD and POST by default, orfalse
if it should be unrestricted
-
WebContentGenerator
Create a new WebContentGenerator.- Parameters:
supportedMethods
- the supported HTTP methods for this content generator
-
-
Method Details
-
setSupportedMethods
Set the HTTP methods that this content generator should support.Default is GET, HEAD and POST for simple form controller types; unrestricted for general controllers and interceptors.
-
getSupportedMethods
Return the HTTP methods that this content generator supports. -
getAllowHeader
Return the "Allow" header value to use in response to an HTTP OPTIONS request based on the configuredsupported methods
also automatically adding "OPTIONS" to the list even if not present as a supported method. This means subclasses don't have to explicitly list "OPTIONS" as a supported method as long as HTTP OPTIONS requests are handled before making a call tocheckRequest(HttpServletRequest)
.- Since:
- 4.3
-
setRequireSession
public final void setRequireSession(boolean requireSession) Set whether a session should be required to handle requests. -
isRequireSession
public final boolean isRequireSession()Return whether a session is required to handle requests. -
setCacheControl
Set theCacheControl
instance to build the Cache-Control HTTP response header.- Since:
- 4.2
-
getCacheControl
Get theCacheControl
instance that builds the Cache-Control HTTP response header.- Since:
- 4.2
-
setCacheSeconds
public final void setCacheSeconds(int seconds) Cache content for the given number of seconds, by writing cache-related HTTP headers to the response:- seconds == -1 (default value): no generation cache-related headers
- seconds == 0: "Cache-Control: no-store" will prevent caching
- seconds > 0: "Cache-Control: max-age=seconds" will ask to cache content
For more specific needs, a custom
CacheControl
should be used. -
getCacheSeconds
public final int getCacheSeconds()Return the number of seconds that content is cached. -
setVaryByRequestHeaders
Configure one or more request header names (for example, "Accept-Language") to add to the "Vary" response header to inform clients that the response is subject to content negotiation and variances based on the value of the given request headers. The configured request header names are added only if not already present in the response "Vary" header.- Parameters:
varyByRequestHeaders
- one or more request header names- Since:
- 4.3
-
getVaryByRequestHeaders
Return the configured request header names for the "Vary" response header.- Since:
- 4.3
-
checkRequest
Check the given request for supported methods and a required session, if any.- Parameters:
request
- current HTTP request- Throws:
ServletException
- if the request cannot be handled because a check failed- Since:
- 4.2
-
prepareResponse
Prepare the given response according to the settings of this generator. Applies the number of cache seconds specified for this generator.- Parameters:
response
- current HTTP response- Since:
- 4.2
-
applyCacheControl
Set the HTTP Cache-Control header according to the given settings.- Parameters:
response
- current HTTP responsecacheControl
- the pre-configured cache control settings- Since:
- 4.2
-
applyCacheSeconds
Apply the given cache seconds and generate corresponding HTTP headers, i.e. allow caching for the given number of seconds in case of a positive value, prevent caching if given a 0 value, do nothing else. Does not tell the browser to revalidate the resource.- Parameters:
response
- current HTTP responsecacheSeconds
- positive number of seconds into the future that the response should be cacheable for, 0 to prevent caching
-
checkAndPrepare
@Deprecated protected final void checkAndPrepare(HttpServletRequest request, HttpServletResponse response, int cacheSeconds, boolean lastModified) throws ServletException Deprecated.as of 4.2, since thelastModified
flag is effectively ignored, with a must-revalidate header only generated if explicitly configuredCheck and prepare the given request and response according to the settings of this generator.
-
lastModified
flag is effectively ignored, with a must-revalidate header only generated if explicitly configured