Package org.springframework.web.servlet.handler

# Class MappedInterceptor

java.lang.Object
org.springframework.web.servlet.handler.MappedInterceptor

All Implemented Interfaces:
  `HandlerInterceptor`

public final class MappedInterceptor extends Object implements HandlerInterceptor
Wraps a `HandlerInterceptor` and uses URL patterns to determine whether it applies to a given request.

Pattern matching can be done with a `PathMatcher` or with a parsed `PathPattern`. The syntax is largely the same with the latter being more tailored for web usage and more efficient. The choice is driven by the presence of a resolved `String` lookupPath or a parsed `RequestPath` which in turn depends on the `HandlerMapping` that matched the current request.

`MappedInterceptor` is supported by subclasses of `AbstractHandlerMethodMapping` which detect beans of type `MappedInterceptor` and also check if interceptors directly registered with it are of this type.

Since:
  3.0
Author:
  Keith Donald, Rossen Stoyanchev, Brian Clozel

## Constructor Summary

Constructors
Constructor
Description
`MappedInterceptor(String[] includePatterns, String[] excludePatterns, org.springframework.web.context.request.WebRequestInterceptor interceptor)`
Variant of `MappedInterceptor(String[], String[], HandlerInterceptor, PathPatternParser)` with a `WebRequestInterceptor` as the target.
`MappedInterceptor(String[] includePatterns, String[] excludePatterns, HandlerInterceptor interceptor)`
Variant of `MappedInterceptor(String[], String[], HandlerInterceptor, PathPatternParser)` without a provided parser.
`MappedInterceptor(String[] includePatterns, String[] excludePatterns, HandlerInterceptor interceptor, org.springframework.web.util.pattern.PathPatternParser parser)`
Create an instance with the given include and exclude patterns along with the target interceptor for the mappings.
`MappedInterceptor(String[] includePatterns, org.springframework.web.context.request.WebRequestInterceptor interceptor)`
Variant of `MappedInterceptor(String[], String[], HandlerInterceptor, PathPatternParser)` with a `WebRequestInterceptor` as the target.
`MappedInterceptor(String[] includePatterns, HandlerInterceptor interceptor)`
Variant of `MappedInterceptor(String[], String[], HandlerInterceptor, PathPatternParser)` with include patterns only.

## Method Summary

Modifier and Type
Method
Description
`void`
`afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)`
Callback after completion of request processing, that is, after rendering the view.
`String[]`
`getExcludePathPatterns()`
Get the exclude path patterns this interceptor is mapped to.
`String[]`
`getIncludePathPatterns()`
Get the include path patterns this interceptor is mapped to.
`HandlerInterceptor`
`getInterceptor()`
The target `HandlerInterceptor` to invoke in case of a match.
`org.springframework.util.PathMatcher`
`getPathMatcher()`
Get the configured PathMatcher.
`String[]`
`getPathPatterns()`
Deprecated, for removal: This API element is subject to removal in a future version.
since 6.1 in favor of `getIncludePathPatterns()`
`boolean`
`matches(HttpServletRequest request)`
Check whether this interceptor is mapped to the request.
`boolean`
`matches(String lookupPath, org.springframework.util.PathMatcher pathMatcher)`
Deprecated.
as of 5.3 in favor of `matches(HttpServletRequest)`
`void`
`postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)`
Interception point after successful execution of a handler.
`boolean`
`preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)`
Interception point before the execution of a handler.
`void`
`setPathMatcher(org.springframework.util.PathMatcher pathMatcher)`
Configure the PathMatcher to use to match URL paths with against include and exclude patterns.

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

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

## Constructor Details

### MappedInterceptor

public MappedInterceptor(@Nullable String[] includePatterns, @Nullable String[] excludePatterns, HandlerInterceptor interceptor, @Nullable org.springframework.web.util.pattern.PathPatternParser parser)
Create an instance with the given include and exclude patterns along with the target interceptor for the mappings.

Parameters:
  `includePatterns` - patterns to which requests must match, or null to match all paths
  `excludePatterns` - patterns to which requests must not match
  `interceptor` - the target interceptor
  `parser` - a parser to use to pre-parse patterns into `PathPattern`; when not provided, `PathPatternParser.defaultInstance` is used.
Since:
  5.3

### MappedInterceptor

public MappedInterceptor(@Nullable String[] includePatterns, HandlerInterceptor interceptor)
Variant of `MappedInterceptor(String[], String[], HandlerInterceptor, PathPatternParser)` with include patterns only.

### MappedInterceptor

public MappedInterceptor(@Nullable String[] includePatterns, @Nullable String[] excludePatterns, HandlerInterceptor interceptor)
Variant of `MappedInterceptor(String[], String[], HandlerInterceptor, PathPatternParser)` without a provided parser.

### MappedInterceptor

public MappedInterceptor(@Nullable String[] includePatterns, org.springframework.web.context.request.WebRequestInterceptor interceptor)
Variant of `MappedInterceptor(String[], String[], HandlerInterceptor, PathPatternParser)` with a `WebRequestInterceptor` as the target.

### MappedInterceptor

public MappedInterceptor(@Nullable String[] includePatterns, @Nullable String[] excludePatterns, org.springframework.web.context.request.WebRequestInterceptor interceptor)
Variant of `MappedInterceptor(String[], String[], HandlerInterceptor, PathPatternParser)` with a `WebRequestInterceptor` as the target.

## Method Details

### getPathPatterns

@Nullable @Deprecated(since="6.1", forRemoval=true) public String[] getPathPatterns()
Deprecated, for removal: This API element is subject to removal in a future version.
since 6.1 in favor of `getIncludePathPatterns()`
Get the include path patterns this interceptor is mapped to.

See Also:
  - `getIncludePathPatterns()`
  - `getExcludePathPatterns()`

### getIncludePathPatterns

@Nullable public String[] getIncludePathPatterns()
Get the include path patterns this interceptor is mapped to.

Since:
  6.1
See Also:
  - `getExcludePathPatterns()`

### getExcludePathPatterns

@Nullable public String[] getExcludePathPatterns()
Get the exclude path patterns this interceptor is mapped to.

Since:
  6.1
See Also:
  - `getIncludePathPatterns()`

### getInterceptor

public HandlerInterceptor getInterceptor()
The target `HandlerInterceptor` to invoke in case of a match.

### setPathMatcher

public void setPathMatcher(org.springframework.util.PathMatcher pathMatcher)
Configure the PathMatcher to use to match URL paths with against include and exclude patterns.

This is an advanced property that should be used only when a customized `AntPathMatcher` or a custom PathMatcher is required.

By default this is `AntPathMatcher`.

Note: Setting `PathMatcher` enforces use of String pattern matching even when a parsed `RequestPath` is available.

### getPathMatcher

public org.springframework.util.PathMatcher getPathMatcher()
Get the configured PathMatcher.

### matches

public boolean matches(HttpServletRequest request)
Check whether this interceptor is mapped to the request.

The request mapping path is expected to have been resolved externally. See also class-level Javadoc.

Parameters:
  `request` - the request to match to
Returns:
  `true` if the interceptor should be applied to the request

### matches

@Deprecated(since="5.3") public boolean matches(String lookupPath, org.springframework.util.PathMatcher pathMatcher)
Deprecated.
as of 5.3 in favor of `matches(HttpServletRequest)`
Determine if there is a match for the given lookup path.

Parameters:
  `lookupPath` - the current request path
  `pathMatcher` - a path matcher for path pattern matching
Returns:
  `true` if the interceptor applies to the given request path

### preHandle

public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception
Description copied from interface: `HandlerInterceptor`
Interception point before 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 an HTTP error or writing a custom response.

Note: special considerations apply for asynchronous request processing. For more details see `AsyncHandlerInterceptor`.

The default implementation returns `true`.

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:
  `Exception` - in case of errors

### postHandle

public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception
Description copied from interface: `HandlerInterceptor`
Interception point after successful execution of a handler. Called after HandlerAdapter actually invoked the handler, but before the DispatcherServlet renders the view. Can expose additional model objects to the view via the given ModelAndView.

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 post-process an execution, getting applied in inverse order of the execution chain.

Note: special considerations apply for asynchronous request processing. For more details see `AsyncHandlerInterceptor`.

The default implementation is empty.

Specified by:
  `postHandle` in interface `HandlerInterceptor`
Parameters:
  `request` - current HTTP request
  `response` - current HTTP response
  `handler` - the handler (or `HandlerMethod`) that started asynchronous 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, @Nullable Exception ex) throws Exception
Description copied from interface: `HandlerInterceptor`
Callback after completion of request processing, that is, after rendering the view. Will be called on any outcome of handler execution, thus allows for proper resource cleanup.

Note: Will only be called if this interceptor's `preHandle` method has successfully completed and returned `true`!

As with the `postHandle` method, the method will be invoked on each interceptor in the chain in reverse order, so the first interceptor will be the last to be invoked.

Note: special considerations apply for asynchronous request processing. For more details see `AsyncHandlerInterceptor`.

The default implementation is empty.

Specified by:
  `afterCompletion` in interface `HandlerInterceptor`
Parameters:
  `request` - current HTTP request
  `response` - current HTTP response
  `handler` - the handler (or `HandlerMethod`) that started asynchronous execution, for type and/or instance examination
  `ex` - any exception thrown on handler execution, if any; this does not include exceptions that have been handled through an exception resolver
Throws:
  `Exception` - in case of errors