org.springframework.web.servlet.mvc

## Class WebContentInterceptor

- java.lang.Object
- - org.springframework.context.support.ApplicationObjectSupport
  - - org.springframework.web.context.support.WebApplicationObjectSupport
    - - org.springframework.web.servlet.support.WebContentGenerator
      - - org.springframework.web.servlet.mvc.WebContentInterceptor

All Implemented Interfaces:
  Aware, ApplicationContextAware, ServletContextAware, HandlerInterceptor

    public class WebContentInterceptor
    extends WebContentGenerator
    implements HandlerInterceptor

Interceptor that checks and prepares request and response. Checks for supported methods and a required session, and applies the specified number of cache seconds. See superclass bean properties for configuration options.

All the settings supported by this interceptor can also be set on AbstractController. This interceptor is mainly intended for applying checks and preparations to a set of controllers mapped by a HandlerMapping.

Since:
  27.11.2003
Author:
  Juergen Hoeller
See Also:
  `AbstractController`

### Field Summary

### Fields inherited from class org.springframework.web.servlet.support.WebContentGenerator

`METHOD_GET, METHOD_HEAD, METHOD_POST`

### Fields inherited from class org.springframework.context.support.ApplicationObjectSupport

`logger`

### Constructor Summary

Constructors
Constructor and Description
`WebContentInterceptor()`

### Method Summary

Methods
`void` `afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)` This implementation is empty.
`protected Integer` `lookupCacheSeconds(String urlPath)` Look up a cache seconds value for the given URL path.
`void` `postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)` This implementation is empty.
`boolean` `preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)` Intercept the execution of a handler.
`void` `setAlwaysUseFullPath(boolean alwaysUseFullPath)` Set if URL lookup should always use full path within current servlet context.
`void` `setCacheMappings(Properties cacheMappings)` Map specific URL paths to specific cache seconds.
`void` `setPathMatcher(PathMatcher pathMatcher)` Set the PathMatcher implementation to use for matching URL paths against registered URL patterns, for determining cache mappings.
`void` `setUrlDecode(boolean urlDecode)` Set if context path and request URI should be URL-decoded.
`void` `setUrlPathHelper(UrlPathHelper urlPathHelper)` Set the UrlPathHelper to use for resolution of lookup paths.

### Methods inherited from class org.springframework.web.servlet.support.WebContentGenerator

`applyCacheSeconds, applyCacheSeconds, cacheForSeconds, cacheForSeconds, checkAndPrepare, checkAndPrepare, getCacheSeconds, getSupportedMethods, isAlwaysMustRevalidate, isRequireSession, isUseCacheControlHeader, isUseCacheControlNoStore, isUseExpiresHeader, preventCaching, setAlwaysMustRevalidate, setCacheSeconds, setRequireSession, setSupportedMethods, setUseCacheControlHeader, setUseCacheControlNoStore, setUseExpiresHeader`

### 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, requiredContextClass, setApplicationContext`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### WebContentInterceptor

    public WebContentInterceptor()

### Method Detail

#### setAlwaysUseFullPath

    public void setAlwaysUseFullPath(boolean alwaysUseFullPath)

Set if URL lookup should always use full path within current servlet context. Else, the path within the current servlet mapping is used if applicable (i.e. in the case of a ".../*" servlet mapping in web.xml). Default is "false".

Only relevant for the "cacheMappings" setting.

See Also:
  `setCacheMappings(java.util.Properties)`, `UrlPathHelper.setAlwaysUseFullPath(boolean)`

#### setUrlDecode

    public void setUrlDecode(boolean urlDecode)

Set if context path and request URI should be URL-decoded. Both are returned undecoded by the Servlet API, in contrast to the servlet path.

Uses either the request encoding or the default encoding according to the Servlet spec (ISO-8859-1).

Only relevant for the "cacheMappings" setting.

See Also:
  `setCacheMappings(java.util.Properties)`, `UrlPathHelper.setUrlDecode(boolean)`

#### setUrlPathHelper

    public void setUrlPathHelper(UrlPathHelper urlPathHelper)

Set the UrlPathHelper to use for resolution of lookup paths.

Use this to override the default UrlPathHelper with a custom subclass, or to share common UrlPathHelper settings across multiple HandlerMappings and MethodNameResolvers.

Only relevant for the "cacheMappings" setting.

See Also:
  `setCacheMappings(java.util.Properties)`, `AbstractHandlerMapping.setUrlPathHelper(org.springframework.web.util.UrlPathHelper)`, `AbstractUrlMethodNameResolver.setUrlPathHelper(org.springframework.web.util.UrlPathHelper)`

#### setCacheMappings

    public void setCacheMappings(Properties cacheMappings)

Map specific URL paths to specific cache seconds.

Overrides the default cache seconds setting of this interceptor. Can specify "-1" to exclude a URL path from default caching.

Supports direct matches, e.g. a registered "/test" matches "/test", and a various Ant-style pattern matches, e.g. a registered "/t*" matches both "/test" and "/team". For details, see the AntPathMatcher javadoc.

Parameters:
  `cacheMappings` - a mapping between URL paths (as keys) and cache seconds (as values, need to be integer-parsable)
See Also:
  `WebContentGenerator.setCacheSeconds(int)`, `AntPathMatcher`

#### setPathMatcher

    public void setPathMatcher(PathMatcher pathMatcher)

Set the PathMatcher implementation to use for matching URL paths against registered URL patterns, for determining cache mappings. Default is AntPathMatcher.

See Also:
  `setCacheMappings(java.util.Properties)`, `AntPathMatcher`

#### preHandle

    public boolean preHandle(HttpServletRequest request,
                    HttpServletResponse response,
                    Object handler)
                      throws ServletException

Description copied from interface: `HandlerInterceptor`
Intercept the execution of a handler. Called after HandlerMapping determined an appropriate handler object, but before HandlerAdapter invokes the handler.

DispatcherServlet processes a handler in an execution chain, consisting of any number of interceptors, with the handler itself at the end. With this method, each interceptor can decide to abort the execution chain, typically sending a HTTP error or writing a custom response.

Specified by:
  `preHandle` in interface `HandlerInterceptor`
Parameters:
  `request` - current HTTP request
  `response` - current HTTP response
  `handler` - chosen handler to execute, for type and/or instance evaluation
Returns:
  `true` if the execution chain should proceed with the next interceptor or the handler itself. Else, DispatcherServlet assumes that this interceptor has already dealt with the response itself.
Throws:
  `ServletException`

#### lookupCacheSeconds

    protected Integer lookupCacheSeconds(String urlPath)

Look up a cache seconds value for the given URL path.

Supports direct matches, e.g. a registered "/test" matches "/test", and various Ant-style pattern matches, e.g. a registered "/t*" matches both "/test" and "/team". For details, see the AntPathMatcher class.

Parameters:
  `urlPath` - URL the bean is mapped to
Returns:
  the associated cache seconds, or `null` if not found
See Also:
  `AntPathMatcher`

#### postHandle

    public void postHandle(HttpServletRequest request,
                  HttpServletResponse response,
                  Object handler,
                  ModelAndView modelAndView)
                    throws Exception

This implementation is empty.

Specified by:
  `postHandle` in interface `HandlerInterceptor`
Parameters:
  `request` - current HTTP request
  `response` - current HTTP response
  `handler` - handler (or `HandlerMethod`) that started async execution, for type and/or instance examination
  `modelAndView` - the `ModelAndView` that the handler returned (can also be `null`)
Throws:
  `Exception` - in case of errors

#### afterCompletion

    public void afterCompletion(HttpServletRequest request,
                       HttpServletResponse response,
                       Object handler,
                       Exception ex)
                         throws Exception

This implementation is empty.

Specified by:
  `afterCompletion` in interface `HandlerInterceptor`
Parameters:
  `request` - current HTTP request
  `response` - current HTTP response
  `handler` - handler (or `HandlerMethod`) that started async execution, for type and/or instance examination
  `ex` - exception thrown on handler execution, if any
Throws:
  `Exception` - in case of errors