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

相關文章
相關標籤/搜索