Spring MVC

關鍵詞:Spring MVC,MVC 模式,DispatcherServlet ,HandlerMapping ,HandlerAdapterHandler,HttpMessageConveter,ModelAndView ,ViewResolverWebApplicationContext,ApplicationContext 。

首先,Spring MVC 框架有什麼用?

        Spring Web MVC 框架,提供 模型-視圖-控制器 架構和隨時可用的組件,用於開發靈活鬆散耦合的 Web 應用程序。 MVC 模式有助於分離應用程序的不同方面,如輸入邏輯,業務邏輯和 UI 邏輯,同時在所有這些元素之間提供鬆散耦合。

        完成了接受請求,請求轉發至具體的方法,並將返回結果封裝成model,交給視圖解析器渲染,最終返給前端。

其次,描述一下 DispatcherServlet 的工作流程

DispatcherServlet 的工作流程可以用一幅圖來說明:

        1) 客戶端向服務器發送 HTTP 請求,被前端控制器 DispatcherServlet所捕獲。

        2) DispatcherServlet 根據 *servlet.xml 中的配置對請求的 URL 進行解析,得到請求資源標識符(URI)。然後根據該 URI,調用 HandlerMapping 獲得該 Handler 配置的所有相關的對象(包括 Handler 對象以及 Handler 對象對應的攔截器),最後以HandlerExecutionChain 對象的形式返回。

        3) DispatcherServlet 根據獲得的Handler,選擇一個合適的 HandlerAdapter。(附註:如果成功獲得HandlerAdapter後,此時將開始執行攔截器的 preHandler(…)方法)。

        4) 提取Request中的模型數據,填充Handler入參,開始執行Handler(Controller)。 在填充Handler的入參過程中,根據你的配置,Spring 將幫你做一些額外的工作:

        5) HttpMessageConveter: 將請求消息(如 Json、xml 等數據)轉換成一個對象,將對象轉換爲指定的響應信息。

        6) 數據轉換:對請求消息進行數據轉換。如String轉換成Integer、Double等。

        7) 數據根式化:對請求消息進行數據格式化。 如將字符串轉換成格式化數字或格式化日期等。

        8) 數據驗證: 驗證數據的有效性(長度、格式等),驗證結果存儲到BindingResult或Error中。

        9) Handler(Controller)執行完成後,向 DispatcherServlet 返回一個 ModelAndView 對象;

        10) 根據返回的ModelAndView,選擇一個適合的 ViewResolver(必須是已經註冊到 Spring 容器中的ViewResolver)返回給DispatcherServlet。

        11) ViewResolver 結合Model和View,來渲染視圖。

        12) 視圖負責將渲染結果返回給客戶端。

最後,介紹一下 WebApplicationContext

         WebApplicationContext 是 ApplicationContext 的擴展。它具有 Web 應用程序所需的一些額外功能。它與普通的 ApplicationContext 在解析主題和決定與哪個 servlet 關聯的能力方面有所不同。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章