Package org.springframework.web.servlet.handler

# Class WebRequestHandlerInterceptorAdapter

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

All Implemented Interfaces:
  `AsyncHandlerInterceptor`, `HandlerInterceptor`

public class WebRequestHandlerInterceptorAdapter extends Object implements AsyncHandlerInterceptor
Adapter that implements the Servlet HandlerInterceptor interface and wraps an underlying WebRequestInterceptor.

Since:
  2.0
Author:
  Juergen Hoeller
See Also:
  - `WebRequestInterceptor`
  - `HandlerInterceptor`

## Constructor Summary

Constructors
Constructor
Description
`WebRequestHandlerInterceptorAdapter(org.springframework.web.context.request.WebRequestInterceptor requestInterceptor)`
Create a new WebRequestHandlerInterceptorAdapter for the given WebRequestInterceptor.

## 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.
`void`
`afterConcurrentHandlingStarted(HttpServletRequest request, HttpServletResponse response, Object handler)`
Called instead of `postHandle` and `afterCompletion` when the handler is being executed concurrently.
`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.

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

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

## Constructor Details

### WebRequestHandlerInterceptorAdapter

public WebRequestHandlerInterceptorAdapter(org.springframework.web.context.request.WebRequestInterceptor requestInterceptor)
Create a new WebRequestHandlerInterceptorAdapter for the given WebRequestInterceptor.

Parameters:
  `requestInterceptor` - the WebRequestInterceptor to wrap

## Method Details

### 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

### afterConcurrentHandlingStarted

public void afterConcurrentHandlingStarted(HttpServletRequest request, HttpServletResponse response, Object handler)
Description copied from interface: `AsyncHandlerInterceptor`
Called instead of `postHandle` and `afterCompletion` when the handler is being executed concurrently.

Implementations may use the provided request and response but should avoid modifying them in ways that would conflict with the concurrent execution of the handler. A typical use of this method would be to clean up thread-local variables.

Specified by:
  `afterConcurrentHandlingStarted` in interface `AsyncHandlerInterceptor`
Parameters:
  `request` - the current request
  `response` - the current response
  `handler` - the handler (or `HandlerMethod`) that started async execution, for type and/or instance examination