久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

MVC模式簡介

 Java私塾 2014-01-02

1.1  MVC模式

1.1.1  MVC模式簡介

MVC是一種架構(gòu)型模式,,它本身并不引入新的功能,,只是用來指導(dǎo)我們改善應(yīng)用程序的架構(gòu),使得應(yīng)用的模型和視圖相分離,,從而得到更好的開發(fā)和維護效率,。

       在MVC模式中,應(yīng)用程序被劃分成了模型(Model),、視圖(View)和控制器(Controller)三個部分,。其中,,模型部分包含了應(yīng)用程序的業(yè)務(wù)邏輯和業(yè)務(wù)數(shù)據(jù);視圖部分封裝了應(yīng)用程序的輸出形式,,也就是通常所說的頁面或者是界面,;而控制器部分負責協(xié)調(diào)模型和視圖,根據(jù)用戶請求來選擇要調(diào)用哪個模型來處理業(yè)務(wù),,以及最終由哪個視圖為用戶做出應(yīng)答,。

MVC模式的這三個部分的職責非常明確,而且相互分離,,因此每個部分都可以獨立的改變而不影響其他部分,,從而大大提高了應(yīng)用的靈活性和重用性。

1.1.2  MVC模式基礎(chǔ)

在MVC模式中,,一個應(yīng)用被劃分成了模型(Model),、視圖(View)和控制器(Controller)三個部分,接下來認識一下這三個部分,。

1:首先看一下模型,、視圖、控制器各部分的作用

  • 模型(Model):負責封裝應(yīng)用的狀態(tài),,并實現(xiàn)應(yīng)用的功能,。通常又分為數(shù)據(jù)模型和業(yè)務(wù)邏輯模型,數(shù)據(jù)模型用來存放業(yè)務(wù)數(shù)據(jù),,比如訂單信息,、用戶信息等;而業(yè)務(wù)邏輯模型包含應(yīng)用的業(yè)務(wù)操作,,比如訂單的添加或者修改等,。
  • 視圖(View):用來將模型的內(nèi)容展現(xiàn)給用戶,用戶可以通過視圖來請求模型進行更新,。視圖從模型獲得要展示的數(shù)據(jù),,然后用自己的方式展現(xiàn)給用戶,相當于提供界面來與用戶進行人機交互,;用戶在界面上操作或者填寫完成后,,會點擊提交按鈕或是以其它觸發(fā)事件的方式,來向控制器發(fā)出請求,。
  • 控制器(Controller):用來控制應(yīng)用程序的流程和處理視圖所發(fā)出的請求,。當控制器接收到用戶的請求后,會將用戶的數(shù)據(jù)和模型的更新相映射,,也就是調(diào)用模型來實現(xiàn)用戶請求的功能,;然后控制器會選擇用于響應(yīng)的視圖,把模型更新后的數(shù)據(jù)展示給用戶,。

2:模型和視圖的關(guān)系

在MVC中,,模型和視圖是分離的,通常視圖里面不會有任何邏輯實現(xiàn),;而模型也是不依賴于視圖的,,同一個模型可能會有很多種不同的展示方式,也就是同一個模型可以對應(yīng)多種不同的視圖,。

這種例子比比皆是,,例如,在windows操作系統(tǒng)上瀏覽文件夾時,,文件夾就那些,,數(shù)據(jù)并沒有變化,但是展示方式就有多種,,比如大圖標,、小圖標、詳細信息等等多種展示方式,。以tomcat7文件夾下的文件為例,,按照不同的展示方式,如圖1.1所示:

 

圖1.1一個模型對應(yīng)多個視圖

模型負責輸出的內(nèi)容,,而視圖負責輸出的形式,,模型不依賴于視圖,模型與視圖是解耦的,。因此在修改視圖,,也就是顯示方式的時候,不必關(guān)心模型,,而只需要直接修改視圖的展示方式即可,。

3:MVC的組件關(guān)系圖

MVC的組件關(guān)系如圖1.2所示:

 

圖1.2 MVC組件關(guān)系圖

MVC的組件關(guān)系圖描述了模型、視圖,、控制器這三個部分的交互關(guān)系,,下面按照交互順序來詳細描述一下它們的交互關(guān)系:

(1)首先是展示視圖給用戶,用戶在這個視圖上進行操作,,并填寫一些業(yè)務(wù)數(shù)據(jù)

(2)然后用戶會點擊提交按鈕,,來發(fā)出請求

(3)視圖發(fā)出的用戶請求會到達控制器,在請求中包含了想要完成什么樣的業(yè)務(wù)功能以及相關(guān)的數(shù)據(jù),。

(4)控制器會來處理用戶請求,,會把請求中的數(shù)據(jù)進行封裝,然后選擇并調(diào)用合適的模型,,請求模型進行狀態(tài)更新,,然后選擇接下來要展示給用戶的視圖。

(5)模型會去處理用戶請求的業(yè)務(wù)功能,,同時進行模型狀態(tài)的維護和更新

(6)當模型狀態(tài)發(fā)生改變的時候,,模型會通知相應(yīng)的視圖,,告訴視圖它的狀態(tài)發(fā)生了改變。

(7)視圖接到模型的通知后,,會向模型進行狀態(tài)查詢,,獲取需要展示的數(shù)據(jù),然后按照視圖本身的展示方式,,把這些數(shù)據(jù)展示出來,。

接下來就是等待用戶下一次操作,再次從頭輪回了,。

1.1.3  MVC模式作用

在早期開發(fā)中,,有一些程序員沒有認識到MVC模式帶來的好處,在開發(fā)的時候不遵守MVC模式,。這樣做的結(jié)果就是程序結(jié)構(gòu)劃分不明確,,各個部分功能混亂,在業(yè)務(wù)功能發(fā)生變更時,,無論是業(yè)務(wù)邏輯修改還是顯示形式修改,,都要修改很多的類,“牽一發(fā)而動全身”,,導(dǎo)致軟件的開發(fā)和維護效率低下,,錯誤百出。

而遵循MVC模式來開發(fā)系統(tǒng),,就會極大的避免上述問題的出現(xiàn),。MVC模式的核心手段是解耦,MVC模式通過仔細的劃分功能,,把整個應(yīng)用程序劃分成模型,、視圖、控制器三個部分,,然后嚴密控制三個部分之間的通信,,從而得到一個結(jié)構(gòu)清晰、功能分布合理,、可重用,、可擴展、可維護的應(yīng)用程序,。

因此,,使用MVC模式,可以獲得以下好處:

  • 低耦合性:在MVC模式中,,模型和視圖是解耦的,,模型不會依賴于視圖,而視圖也僅僅是從模型中獲取需要展示的數(shù)據(jù),,并不會與模型的邏輯處理相關(guān)聯(lián),。
  • 更低的開發(fā)成本:由于MVC模式幫我們清楚的劃分了各部分的職責,,就可以讓程序員各司其職,Java程序員只關(guān)心業(yè)務(wù)邏輯的實現(xiàn),,也就是模型部分,;而界面程序員只關(guān)心頁面展示,也就是視圖部分即可,。
  • 更好的可維護性:MVC模式劃分出明晰的模型和視圖部分,并使其解耦,,在軟件需求發(fā)生變更的時候,,就可以各自獨立的改變而不會相互影響,使得程序更容易維護和擴展,。

1.1.4  Model2模型中的MVC

在Java的Web開發(fā)中,,通常把Servlet+JSP+JavaBean的模型稱為Model2模型,這是一個完全遵循MVC模式的模型,,基本劃分如下:

  • JavaBean作為模型,,既可以作為數(shù)據(jù)模型來封裝業(yè)務(wù)數(shù)據(jù),又可以作為業(yè)務(wù)邏輯模型來包含應(yīng)用的業(yè)務(wù)操作,。其中,,數(shù)據(jù)模型用來存儲或傳遞業(yè)務(wù)數(shù)據(jù),而業(yè)務(wù)邏輯模型接收到控制器傳過來的模型更新請求后,,執(zhí)行特定的業(yè)務(wù)邏輯處理,,然后返回相應(yīng)的執(zhí)行結(jié)果。
  • JSP作為表現(xiàn)層,,負責提供頁面來為用戶展示數(shù)據(jù),,提供相應(yīng)的表單(Form)來用于用戶的請求,并在適當?shù)臅r候(比如用戶點擊提交的按鈕),,向控制器發(fā)出用戶請求來請求模型進行更新,。
  • Serlvet作為控制器,用來接收用戶提交的請求,,然后獲取請求中的數(shù)據(jù),,將之轉(zhuǎn)換為業(yè)務(wù)模型需要的數(shù)據(jù)模型,然后調(diào)用業(yè)務(wù)模型相應(yīng)的業(yè)務(wù)方法,,請求模型進行更新,,同時根據(jù)業(yè)務(wù)執(zhí)行結(jié)果來選擇要返回的視圖,也就是選擇下一個頁面,。

Model2實現(xiàn)MVC的基本結(jié)構(gòu)圖如下圖所示:

 

圖1.3 Model2中的MVC

那么,,在用戶發(fā)出一個請求后,Servlet+JSP+JavaBean模型基本的響應(yīng)順序是怎樣的呢,?

當用戶發(fā)出一個請求后,,這個請求會被控制器Servlet接收到,;Servlet將請求的數(shù)據(jù)轉(zhuǎn)換成數(shù)據(jù)模型JavaBean,然后調(diào)用業(yè)務(wù)邏輯模型JavaBean的方法,,并將業(yè)務(wù)邏輯模型返回的結(jié)果放到合適的地方,,比如請求的屬性里;最后,,根據(jù)業(yè)務(wù)邏輯模型的返回結(jié)果,,由控制器來選擇合適的視圖(JSP),由視圖把數(shù)據(jù)展現(xiàn)給用戶,。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多