Spring MVC學習筆記1(三層架構、MVC模式、六大組件、處理請求流程)


應用系統三層架構:

  • C/S架構:客戶端/服務器架構

  • B/S架構:瀏覽器/服務器架構

Java開發的大多是web應用,是基於B/S架構開發的。JavaEE指定了一套規范,去進行BS結構的處理,這套規范就是Servlet。

B/S架構中,應用系統標准的三層架構為: 表現層業務層持久層

表現層(Web層)
  • 負責接收客戶端請求,向客戶端響應結果,通常客戶端使用http協議請求 web,web層需要接收 http請求,完成http響應。
  • 表現層包括展示層和控制層:控制層負責接收請求,展示層負責結果的展示。
  • 表現層依賴業務層,接收到客戶端請求一般會調用業務層進行業務處理,並將處理結果響應給客戶端。
  • 表現層的設計一般都使用 MVC 模型。 MVC 是表現層的設計模型,和其他層沒有關系
業務層 (Service層)
  • 它負責業務邏輯處理,和我們開發項目的需求息息相關。web層依賴業務層,但是業務層不依賴Web層。
  • 業務層在業務處理時可能會依賴持久層,如果要對數據持久化需要保證事務一致性。 (事務應該放到業務層來控制)
持久層 (dao 層)
  • 負責數據持久化,包括數據層即數據庫和數據訪問層,數據庫是對數據進行持久化的載體,數據訪問層是業務層和持久層交互的接口;業務層需要通過數據訪問層將數據持久化到數據庫中。
  • 持久層就是和麵庫交互,對麵庫表進行曽刪改査的。

MVC 設計模式

MVC是模型(model)-視圖(view)-控制器(controller)的縮寫,是一種用於設計編寫Web應用程序表現層
模式。

MVC設計模式的三大角色:

Model (模型)

模型包含業務模型和數據模型,數據模型用於封裝數據,業務模型用於處理業務。

View (視圖)

​ 通常指的就是我們的jsp或者html。作用一般就是展示數據的。
​ 通常視圖是依據數據模型創建的。

Controller (控制器)

​ 是應用程序中處理用戶交互的部分。作用一般就是處理程序邏輯的。

Spring MVC

Spring MVC是一種基於MVC設計模型的請求驅動類型的輕置級Web框架,屬於Spring FrameWork的后續產品,已經融合在Spring Web Flow里面Spring 框架提供了構建Web應用程序的全功能MVC模塊。

Spring MVC 與 Spring

Spring MVC 全稱為Spring Web MVC,它是Spring家族中Web模塊的一個重要成員。

SpringMVC六大組件

MVC組件:前端控制器處理器視圖

三大組件:處理器映射器處理器適配器視圖解析器

需要開發的組件:處理器、視圖(前后端分離后,后端不需要開發)

DispatcherServlet : 前端控制器

用戶請求到達前端控制器,它就相當於mvc模式中的C , dispatcherservlet是整個流程控制的中心,由它調用其它組件處理用戶的請求,dispatcherservlet的存在降低了組件之間的耦合性。

Handler : 處理器

Handler是繼DispatcherServlet前端控制器的后端控制器,在DispatcherServlet的控制下Handler對具體的用戶請求進行處理。

由於Handler涉及到具體的用戶業務請求,所以一般情況需要程序員根據業務需求開發Handler。

View : 視圖

Spring MVC框架提供了很多的View視圖類型的支持,包括:jstlView、freemarkerView、pdfView等。最常用的視圖就是jsp。

通過頁面標簽或頁面模版技術將模過頁面展示給用戶,需要由程序員根據業務需求開發具體的頁面。

HandlerMapping:處理器映射器

HandlerMapping負責根據用戶請求找到Handler處理器,spring MVC提供了不同的映射器實現不同的映射方式,例如:配置文件方式,實現接口方式,注解方式等。

HandlerAdapter:處理器適配器

通過HandlerAdapter對處理器進行執行,這是適配器模式的應用,通過擴展適配器可以對更多類型的處理器進行執行。

View Resolver:視圖解析器

View Resolver負責將處理結果生成View視圖,View Resolver首先根據邏輯視圖名解析成物理視圖名即具體的頁面地址,再生成View視圖對象,最后對View進行渲染將處理結果通過頁面展示給用戶。

web應用的訪問流程

Spring MVC底層是通過servlet實現的。

Servlet實例由Servlet容器(tomcat、jboss、jetty)產生。

Servlet實例什么時候產生?
一種是第一次訪問一個請求的時候,產生對應的Servlet對象,只會產生一次。
另一種需要針對Servlet標簽特殊配置 ,就會在Tomcat啟動的時候,產生該實例。

[Servlet] (https://www.cnblogs.com/kuotian/p/13141784.html)

客戶端訪問請求:http://xxx:8080/kkb/hello
域名/ip:確定哪台服務器 --- xxx:8080
應用名稱:確定哪個應用 --- kkb

請求字符串:需要根據web.xml中的配置找到相應的類去處理 --- hello

spring MVC處理請求的流程是什么?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM