org.springframework.web.servlet

## Interface HandlerAdapter

- All Known Implementing Classes:
    AbstractHandlerMethodAdapter, HandlerFunctionAdapter, HttpRequestHandlerAdapter, RequestMappingHandlerAdapter, SimpleControllerHandlerAdapter, SimpleServletHandlerAdapter

      public interface HandlerAdapter

  MVC framework SPI, allowing parameterization of the core MVC workflow.

  Interface that must be implemented for each handler type to handle a request. This interface is used to allow the `DispatcherServlet` to be indefinitely extensible. The `DispatcherServlet` accesses all installed handlers through this interface, meaning that it does not contain code specific to any handler type.

  Note that a handler can be of type `Object`. This is to enable handlers from other frameworks to be integrated with this framework without custom coding, as well as to allow for annotation-driven handler objects that do not obey any specific Java interface.

  This interface is not intended for application developers. It is available to handlers who want to develop their own web workflow.

  Note: `HandlerAdapter` implementors may implement the `Ordered` interface to be able to specify a sorting order (and thus a priority) for getting applied by the `DispatcherServlet`. Non-Ordered instances get treated as the lowest priority.

  Author:
    Rod Johnson, Juergen Hoeller
  See Also:
    `SimpleControllerHandlerAdapter`, `SimpleServletHandlerAdapter`

- - ### Method Summary

    All Methods Instance Methods Abstract Methods Deprecated Methods
    Modifier and Type | Method and Description
    --- | ---
    `long` | `getLastModified(HttpServletRequest request, Object handler)` Deprecated. as of 5.3.9 along with `LastModified`.
    `ModelAndView` | `handle(HttpServletRequest request, HttpServletResponse response, Object handler)` Use the given handler to handle this request.
    `boolean` | `supports(Object handler)` Given a handler instance, return whether this `HandlerAdapter` can support it.

- - ### Method Detail

    - #### supports

          boolean supports(Object handler)

      Given a handler instance, return whether this `HandlerAdapter` can support it. Typical HandlerAdapters will base the decision on the handler type. HandlerAdapters will usually only support one handler type each.

      A typical implementation:

      `return (handler instanceof MyHandler);`

      Parameters:
        `handler` - the handler object to check
      Returns:
        whether this object can use the given handler

    - #### handle

          @Nullable
          ModelAndView handle(HttpServletRequest request,
                                        HttpServletResponse response,
                                        Object handler)
                                 throws Exception

      Use the given handler to handle this request. The workflow that is required may vary widely.
      Parameters:
        `request` - current HTTP request
        `response` - current HTTP response
        `handler` - the handler to use. This object must have previously been passed to the `supports` method of this interface, which must have returned `true`.
      Returns:
        a ModelAndView object with the name of the view and the required model data, or `null` if the request has been handled directly
      Throws:
        `Exception` - in case of errors

    - #### getLastModified

          @Deprecated
          long getLastModified(HttpServletRequest request,
                                           Object handler)

      Deprecated. as of 5.3.9 along with `LastModified`.
      Same contract as for HttpServlet's `getLastModified` method. Can simply return -1 if there's no support in the handler class.
      Parameters:
        `request` - current HTTP request
        `handler` - the handler to use
      Returns:
        the lastModified value for the given handler