SpringMVC-簡單總結

要學習一項技術,首先要知道, 它是什麼, 爲何要用它 , 它由哪些東西組成, 每一個東西是幹什麼的, 它們怎麼綜合在一塊兒的html

參考博客: 平凡希: http://www.javashuo.com/article/p-rilofvhd-cd.html前端

                 幸運草鈴蘭: http://www.javashuo.com/article/p-dxdijluh-go.htmlajax

參考書籍:《JavaEE 互聯網輕量級框架整合開發 SSM框架和Redis實現》數據庫

 

一.SpringMVC是什麼?後端

  SpringMVC是Spring框架後續開發的一個模塊, 它是一個基於MVC模式的開發框架.數據結構

  早期的MVC由Servlet, JavaBean, JSP組成, 用戶請求先到達Servlet, Servlet做爲控制器接收請求,而後調度JavaBean來讀寫數據庫的數據,最後將處理結果放在JSP中,返還展示給用戶.app

   這樣的模式就是MVC模式, Servlet扮演Controller(控制器)角色, JavaBean扮演Model(模型)角色, JSP扮演View(視圖)角色. 這樣設計的好處就是, 先後端有了必定的分離, 前端與後端只有必定的數據交流, 減小了必定的耦合(依然有耦合), 而控制器和模型的分離,使得大量代碼有了重用的可能.框架

   傳統的MVC框架仍是存在着必定的耦合性, 好比模型層夾雜着業務層和數據庫的訪問, 因此SpringMVC把傳統的模型層拆分爲了:Service(業務層)和DAO(數據訪問層). 在Service下能夠經過Spring的聲明式事務操做數據訪問層, 而在業務層上還容許咱們訪問NoSQL,這樣能知足現代互聯網系統的性能.性能

   SpringMVC最大的特色是結構鬆散, 耦合度較低, 對各個模塊進行了分離,使得各自負責各自的邏輯.學習

 

二.爲何要用SpringMVC?

   SpringMVC的特色已經在上面描述過了, 就是在傳統MVC模式下,將Model層拆分爲 Service和DAO. 其最大的特點就是結構鬆散, 好比幾乎能夠在SpringMVC中使用各種視圖, 包括JSON,JSP,XML,PDF等,因此它能知足手機端,頁面端和平板電腦端的各種請求. 

   SpringMVC和Struts對比:

   ①SpirngMVC的入口是Servlet, Struts是Filter

   ②SpringMVC是基於方法設計的,而Struts是基於類設計的,每次發一次請求都會實例一個Action

   ③SpringMVC更加簡潔,開發效率比Struts高, 可以處理ajax請求

 

三.SpringMVC的組件與流程

    1.組件:

      ①核心控制器 DispatcherServlet :

          做用: 接收請求, 響應結果 , 下降組件之間的耦合度

          SpringMVC框架是圍繞DispatcherServlet工做的, 它是整個流程控制的中心. 它負責協調和組織不一樣組件完成請求處理並返回響應工做.

 

      ②處理器映射器 HandlerMapping:

          做用: 根據請求路徑找到相應的處理器

          HandlerMapping根據用戶的請求找到對應的Handler(它多是一個Controller方法, 也多是一個Controller對象,Servlet對象 或者 HttpRequestHandler對象), 並將Handler與一堆HandlerInterceptor(攔截器)封裝到HandlerExecutionChain對象中

          SpringMVC能夠根據不一樣的方式來進行處理器的映射 , 如:配置文件方式, 註解方式, 實現接口方式等.

 

      ③處理器適配器 HandlerAdapter:

          做用: 根據Handler找到支持它的HandlerAdapter, 而後經過這個HandlerAdapter來執行這個Handler和其攔截器, 最終獲得ModelAndView對象.

           就像上面的Handler種類說的, 根據Handler的不一樣,適配的HandlerAdapter的種類也不一樣. 他多是SimpleControllerHandlerAdapter(Controller類型的Handler), 也多是SimpleServletHandlerAdapter(Serlvet類型的Hand;er), 或者HttpRequestHandlerAdapter(HttpRequestHandler類型的Handler)

 

       ④視圖解析器 ViewResolver :

           做用:進行視圖解析, 把一個邏輯上的視圖名稱解析爲一個真正的視圖(View對象)

            ViewResolver負責將處理結果生成View視圖, ViewResolver首先根據邏輯視圖名稱解析成物理視圖名即具體的頁面地址, 再生成View視圖對象, 最後對View進行渲染將處理結果經過頁面展現給用戶. SpringMVC提供了不少View視圖類型, 包括:jstlView , freemarkerView, pdfView等.

 

       ⑤處理器 Handler :

            做用: 處理具體的用戶請求

            能夠理解爲廣義上的Controller, 和在HandlerAdapter中所描述的同樣, Handler有不少種,它多是一個Controller的方法, 一個Controller, 一個Servlet, 一個HttpRequestHandler, 可是它們的做用都是爲了處理具體的用戶請求.

         

        ⑥視圖 View :

            做用: View接口的主要做用是用於處理視圖, 而後返回給客戶端.

 

      2.組件控制流程:

 

        圖片轉自:http://www.javashuo.com/article/p-rilofvhd-cd.html

 

流程簡介:

1.用戶發送請求>>>>>DispatcherServlet:

    DispatcherServlet受到請求後,本身不作處理,而是首先委託HandlerMapping進行第一步處理,本身只做爲統一訪問點, 進行全局的流程控制

2.DispatcherServlet>>>>>>>HandlerMapping:

    HandlerMapping根據請求查找對應的Handler, 並將Handler對象和其多個HandlerInterceptor(攔截器)對象包裝爲一個HandlerExecutionChain(執行鏈)對象 並返回給DispatcherServlet

3.DispatcherServlet>>>>>>>HandlerAdapter:

     HandlerAdapter根據Handler的種類,找到支持對應類型的適配器,如SimpleControllerHandlerAdapter支持Controller類型的Handler, 這樣Handler就能夠在適合的運行環境下運行. 對應類型HandlerAdapter會執行對應的Handler, 以及執行目標方法先後須要執行的攔截器. 最終完成功能處理, 並返回一個ModelAndView對象到DispatcherServlet;

4.DispatcherServlet>>>>>>>ViewResolver:

    根據ModelAndView的邏輯視圖名, ViewResolver將其解析爲具體的View對象.

5.View >>>>> 渲染

    View對象會根據傳進來的Model模型數據進行渲染,此處的Model實際是一個Map數據結構,所以很容易支持其餘視圖技術;

6.返回控制權給DispatcherServlet,由DispatcherServlet返回響應給用戶,到此一個流程結束。

相關文章
相關標籤/搜索