深入理解MVC原理
Web MVC簡介
1.1、Web開發(fā)中的請求-響應模型:
?
在Web世界里,具體步驟如下:
1、? Web瀏覽器(如IE)發(fā)起請求,如訪問http://sishuok.com
2、? Web服務器(如Tomcat)接收請求,處理請求(比如用戶新增,則將把用戶保存一下),最后產(chǎn)生響應(一般為html)。
3、web服務器處理完成后,返回內容給web客戶端(一般就是我們的瀏覽器),客戶端對接收的內容進行處理(如web瀏覽器將會對接收到的html內容進行渲染以展示給客戶)。
?
因此,在Web世界里:
都是Web客戶端發(fā)起請求,Web服務器接收、處理并產(chǎn)生響應。
?
一般Web服務器是不能主動通知Web客戶端更新內容。雖然現(xiàn)在有些技術如服務器推(如Comet)、還有現(xiàn)在的HTML5 websocket可以實現(xiàn)Web服務器主動通知Web客戶端。
?
到此我們了解了在web開發(fā)時的請求/響應模型,接下來我們看一下標準的MVC模型是什么。
?
1.2、標準MVC模型概述
MVC模型:是一種架構型的模式,本身不引入新功能,只是幫助我們將開發(fā)的結構組織的更加合理,使展示與模型分離、流程控制邏輯、業(yè)務邏輯調用與展示邏輯分離。如圖1-2
?
圖1-2
首先讓我們了解下MVC(Model-View-Controller)三元組的概念:
Model(模型):數(shù)據(jù)模型,提供要展示的數(shù)據(jù),因此包含數(shù)據(jù)和行為,可以認為是領域模型或JavaBean組件(包含數(shù)據(jù)和行為),不過現(xiàn)在一般都分離開來:Value Object(數(shù)據(jù)) 和 服務層(行為)。也就是模型提供了模型數(shù)據(jù)查詢和模型數(shù)據(jù)的狀態(tài)更新等功能,包括數(shù)據(jù)和業(yè)務。
?
View(視圖):負責進行模型的展示,一般就是我們見到的用戶界面,客戶想看到的東西。
?
Controller(控制器):接收用戶請求,委托給模型進行處理(狀態(tài)改變),處理完畢后把返回的模型數(shù)據(jù)返回給視圖,由視圖負責展示。 也就是說控制器做了個調度員的工作,。
?
從圖1-1我們還看到,在標準的MVC中模型能主動推數(shù)據(jù)給視圖進行更新(觀察者設計模式,在模型上注冊視圖,當模型更新時自動更新視圖),但在Web開發(fā)中模型是無法主動推給視圖(無法主動更新用戶界面),因為在Web開發(fā)是請求-響應模型。
?
那接下來我們看一下在Web里MVC是什么樣子,我們稱其為 Web MVC 來區(qū)別標準的MVC。
1.3、Web MVC概述
模型-視圖-控制器概念和標準MVC概念一樣,請參考1.2,我們再看一下Web MVC標準架構,如圖1-3:
?
如圖1-3
?
在Web MVC模式下,模型無法主動推數(shù)據(jù)給視圖,如果用戶想要視圖更新,需要再發(fā)送一次請求(即請求-響應模型)。
總結
- 上一篇: CACHE数据库 存储过程
- 下一篇: 2022年全球与中国数字万用表市场现状及