MVC开发模式详解
轉(zhuǎn)自:https://blog.csdn.net/qq_33991989/article/details/78966071
MVC設(shè)計(jì)模式詳解
1.Model-View-Controller(模型-視圖-控制器)
???MVC設(shè)計(jì)模式實(shí)際上強(qiáng)制性地將程序的輸入、處理、和輸出分開。
???Model-View-Controller實(shí)際上擔(dān)當(dāng)著不同的角色。
???Model:代表著業(yè)務(wù)數(shù)據(jù)和業(yè)務(wù)邏輯處理,(主要包括業(yè)務(wù)邏輯模塊(web項(xiàng)目中的dao類)和數(shù)據(jù)模塊(model類)和JavaBean相同,由Model提供視圖的顯示數(shù)據(jù),同時(shí)一個(gè)Model可以為多個(gè)視圖提供業(yè)務(wù)數(shù)據(jù),因此Model也就提高應(yīng)用程序的可重用性。
???View:代表視圖,也就是與用戶交互的界面,可以給用戶顯示業(yè)務(wù)邏輯數(shù)據(jù),同時(shí)也可以 接收用戶輸入的數(shù)據(jù)。(在web項(xiàng)目中以jsp作為view)
注意:在視圖中不對數(shù)據(jù)進(jìn)行任何的業(yè)務(wù)邏輯處理。
???Controller:代表控制器,用來接收從視圖輸入的參數(shù),同時(shí)調(diào)用對應(yīng)的Model模型對數(shù)據(jù)進(jìn)行業(yè)務(wù)邏輯處理,同時(shí)將處理好的數(shù)據(jù)傳遞到對應(yīng)的視圖來顯示給用戶。(在web項(xiàng)目中以Servlet作為控制器)
???MVC的處理順序:首先是用戶通過視圖將參數(shù)輸入提交到控制器,控制器調(diào)用對應(yīng)的Model去處理,同時(shí)將處理好的數(shù)據(jù)輸出到對應(yīng)的視圖顯示給用戶。
???代表性的MVC框架有:Struts、SpringMVC、Tapestry
2.最典型的MVC就是JSP?+?servlet?+?javabean的模式
我們就使用這種模式開發(fā)!
??疑惑:為什么要使用MVC設(shè)計(jì)模式?
??????1)在MVC設(shè)計(jì)模式中,強(qiáng)制地把應(yīng)用程序的輸入、處理和輸出分開,這樣就降低了應(yīng)用程序的耦合性,使得web開發(fā)中的每個(gè)組件得以分開,分別負(fù)責(zé)處理不同的事情,對后來的維護(hù)會(huì)變得更輕松,同時(shí)也可以使得開發(fā)人員分別專注于不同的開發(fā),美工只專注于視圖的開發(fā),程序員只專注于業(yè)務(wù)邏輯的實(shí)現(xiàn)。
??????2)程序的重用性高。?
3.MVC模式用戶的請求流程
4.項(xiàng)目的分層開發(fā)
在實(shí)際的項(xiàng)目開發(fā)中,我們通常使用要做到“高內(nèi)聚,低耦合”那么要做到這一點(diǎn),就必須使用分層開發(fā),結(jié)合MVC設(shè)計(jì)進(jìn)行項(xiàng)目開發(fā)的時(shí)候我們通常會(huì)分為控制器層-Service層-Dao層,三層開發(fā),層與層之間通過接口來連接。
分層開發(fā)的示例圖解如下圖:
用戶在瀏覽器中方法JSP頁面進(jìn)行操作的時(shí)候整個(gè)web應(yīng)用使用分層開發(fā)的內(nèi)部流程分為8步:
1)用戶通過瀏覽器訪問jsp頁面也就是view層,在jsp上的所有操作都直接請求控制層 Servlet來完成。
2)控制層獲取view層提交過來的參數(shù)通過JavaBean對象封裝參數(shù),然后將封裝好的參數(shù) 傳遞到Model層中的Service中調(diào)用Service層進(jìn)行數(shù)據(jù)的業(yè)務(wù)邏輯處理。
3)Service層將控制層傳遞過來的參數(shù)傳遞到Dao層,然后調(diào)用Dao層訪問數(shù)據(jù)庫。
4)Dao層根據(jù)Service層的參數(shù)需求來訪問數(shù)據(jù)庫。
5)數(shù)據(jù)庫根據(jù)Dao層的操作將數(shù)據(jù)集返回Dao層。
6)Dao層將獲得的數(shù)據(jù)通過JavaBean對象進(jìn)行封裝,然后將封裝好的數(shù)據(jù)返回給Service 層。
7)Service層將Dao中返回的數(shù)據(jù)又返回給控制層。
8)控制層將得到的數(shù)據(jù)轉(zhuǎn)發(fā)到對應(yīng)的jsp頁面給用戶顯示。
?
總結(jié)
- 上一篇: spring boot 传递 List参
- 下一篇: RMAN无法删除归档日志