SpringMVC - handlerAdapter

SpringMVC - handlerAdapter_第1张图片
SpringMVC.JPG

1、功能
 在HandlerMapping返回处理请求的Controller实例后,需要一个帮助定位具体请求方法的处理类,这个类就是HandlerAdapter,HandlerAdapter是处理器适配器,Spring MVC通过HandlerAdapter来实际调用处理函数。

  • Spring MVC自动注册的AnnotationMethodHandlerAdpater,HandlerAdapter定义了如何处理请求的策略
  • 通过请求url、请求Method和处理器的requestMapping定义,
  • 最终确定使用处理类的哪个方法来处理请求,并检查处理类相应处理方法的参数以及相关的Annotation配置
  • 确定如何转换需要的参数传入调用方法,并最终调用返回ModelAndView。

DispatcherServlet中根据HandlerMapping找到对应的handler method后,首先检查当前工程中注册的所有可用的handlerAdapter,根据handlerAdapter中的supports方法找到可以使用的handlerAdapter。
 通过调用handlerAdapter中的handler方法来处理及准备handler method的参数及annotation(这就是spring mvc如何将request中的参数变成handle method中的输入参数的地方),最终调用实际的handler method。

2、源码

public abstract interface HandlerAdapter
{
  public abstract boolean supports(Object paramObject);
  
  public abstract ModelAndView handle(HttpServletRequest paramHttpServletRequest, HttpServletResponse paramHttpServletResponse, Object paramObject)
    throws Exception;
  
  public abstract long getLastModified(HttpServletRequest paramHttpServletRequest, Object paramObject);
}

该接口定义了三个方法:

  1. supports方法的作用是判断处理适配器是不是支持该Handler。
  2. handle方法,调用对应的Handler中适配到的方法,并返回一个ModelView。
  3. getLastModified方法不确定干嘛用的。

你可能感兴趣的:(SpringMVC - handlerAdapter)