1. 程式人生 > 其它 >SpringMVC學習03:初識SpringMVC

SpringMVC學習03:初識SpringMVC

SpringMVC學習03:初識SpringMVC

  • 我們為什麼要學習SpringMVC:

    • SpringMVC的特點:

      • 輕量級,簡單易學;

      • 高效,基於請求響應的MVC框架;

      • 與Spring相容性好,無縫結合;

      • 約定大於配置;

      • 功能強大:RESTFUL,資料驗證,格式化,本地化,主題等

      • 簡潔靈活

         

    • Spring的web框架圍繞DispatcherServlet【排程Servlet】設計;

    • SpringMVC的核心:就是不用再手寫Servlet了;

    • DispatcherServlet的作用是將請求分發到不同的處理器,從Spring2.5開始,使用java 5或者以上版本的使用者可以採用基於註解形式進行開發,十分簡潔;

    • 正因為SpringMVC好,簡單,便捷,易學,天生和Spring無縫整合(使用SpringIOC和AOP),使用約定大於配置,能夠進行簡單的Junit測試,支援RestFul風格,異常處理,本地化,國際化,資料驗證,型別轉換,攔截器等等

    • 最重要的一點還是用的人多,使用的公司多【工作好找】

 

  • 簡易DispatcherServlet的流程圖:

    • 簡易流程圖:

       

    • DispatcherServlet的本質還是一個Servlet:

       

 

  • 中心控制器:

    • Spring的web框架圍繞DispatcherServlet設計,DispatcherServlet的作用是將請求分發到不同的處理器。

    • SpringMVC框架和其他框架一樣,以請求為驅動,圍繞一箇中心Servlet分派請求及提供其他功能,DispatcherServlet本質也是一個Servlet(它繼承自HttpServlet基類);

 

 

  • SpringMVC的原理:

    • 1,當發起請求時被前端控制器攔截到請求;

    • 2,根據請求引數生成代理請求,找到請求對應的實際控制器(HelloController)

    • 3,實際控制器處理請求,建立模型資料,訪問資料庫;

    • 4,返回模型資料;

    • 5,將模型響應給前端控制器(DispatcherServlet)

    • 6,前端控制器使用模型去渲染檢視;

    • 7,將結果返回給前端控制器;

    • 8,前端控制器再將結果返回給請求者;

       

       

 

  • SpringMVC的執行原理:

    • 流程圖:

       

    • 圖為SpringMVC的一個完整的流程,實線表示SpringMVC框架提供的技術,不需要開發者實現,虛線表示需要開發者實現

       

    • 分析執行原理:

      • 1,DispatcherServlet是前置端控制器,是整個SpringMVC的控制中心,使用者發出請求後,DispatcherServlet接收請求並攔截請求;

        我們假設請求的url為 : http://localhost:8080/SpringMVC/hello

         

      • 如上的URL拆分為三部分:

        • http://localhost:8080伺服器域名;

        • SpringMVC部署在伺服器上的web站點

        • hello表示控制器;

        • 通過分析,如上的URL表示為:請求位於伺服器localhost:8080上的SpringMVC站點的hello控制器;

         

        • 2,HandleMapping為處理器對映,DispatcherServlet呼叫HandleMapping;HandleMapping根據請求url查詢Handler

        • 3,HandlerExecution表示具體的Handler,其主要作用是根據url查詢控制器,如上url被查詢控制器為:hello

        • 4,HandlerExecution將解析後的資訊傳遞給DispatcherServlet,如解析控制器對映等;

        • 5,HandlerAdapter表示處理器介面卡,其按照特定的規則去執行Handler

        • 6,Handler讓具體的Controller執行;

        • 7,Controller將具體的執行資訊返回給HandlerAdapter,如ModelAndView

        • 8,HandlerAdapterModelAndView傳遞給DispatcherServlet

        • 9,DispatcherServlet呼叫檢視解析器(ViewResolver)來解析HandlerAdapter傳遞的ModelAndView

        • 10,檢視解析器ViewResolver將解析的邏輯檢視名傳給DispatcherServlet

        • 11,DispatcherServlet根據檢視解析器解析的檢視結果,呼叫具體的檢視

        • 12,返回給使用者;