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

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `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