DispatcherServlet之HandlerAdapter的handle

注:SpringFramework的版本是4.3.x。git

1.DispatcherServlet的doService方法时序图        

           

                                               图1 DispatcherServlet的doService方法时序图github

2.AnnotationMethodHandlerAdapter的handle方法时序图

        图2的原图在Github上。       spa

               

                                          图2 AnnotationMethodHandlerAdapter的handle方法3d

     图2中,步骤12中,涉及:对象

  1.     根据controller类的方法上的注解,将HttpServeletRequest的内容转换为方法参数,如处理@RequestParam、@RequestBody、@PathVariable。
  2.     步骤1中获得方法参数对象后,用JDK的反射操做。

    步骤12中的内容有点多,单独用一篇文章来分析。blog

 

    图2的步骤14:因为controller的方法返回的有多是Model、View、HttpEntity、String,还有一种单独存在的带有@ResponseBody注解的方法。即controller的方法返回的不是统一的,各类数据类型都会有。步骤14中,统一返回ModelAndView,方便后续的程序处理。get

 

    下面咱们注重分析下controller方法上有@ResponseBody注解的状况,图3的原图在Github上。it

                 

                                图3 ServletHandlerMethodInvoker的getModelAndView方法时序图io

    若是controller的方法上有@ResponseBody注解,那么该方法的返回结果通过转换,以后写入到HttpResponse中。ast

相关文章
相关标签/搜索