mvc2 mvc_每个人都知道MVC…
mvc2 mvc
從一個最近的博客中,您可能會發現我最近一直在進行一些采訪,就像他們對Web應用程序開發人員所說的那樣,我問的一個問題是“您能解釋一下MVC模式是什么嗎?”,值得贊揚的是,每個候選人知道答案。對于不認識的人,MVC代表模型,視圖,控制器,并且是一種設計模式,用于將應用程序的業務,數據和表示邏輯分離為謹慎的組件。
MVC模式組件的Web上有很多定義,因此冒著使事情更加混亂的危險,這是我的:
模型
該模型表示系統內的數據或知識。 它通常來自但不限于數據庫中的數據,并且可能包含業務邏輯。 在我看來,這確實是用戶希望在其屏幕上看到的信息。
視圖
該視圖負責在屏幕上顯示模型。 對于Web應用程序,它是由瀏覽器提供的,并且在Java世界中,通常是使用JSP構建的。
控制者
控制器將用戶,模型和視圖鏈接在一起,接受用戶的請求,將其與適當的模型結合在一起,并將模型與適當的視圖結合在一起。
解釋這一點的圖通常看起來像這樣:
這樣做的好處包括可重用性,例如使用同一控制器與Web瀏覽器和電話通話; 可維護性,因為它更易于查找,修復和增強功能; 和可測試性,因為您可以分別測試每個組件。
MVC模式是由Trygve Reenskaug發明的,并且自1978年以來一直存在。TrygveReenskaug既在Wikipedia上擁有自己的頁面,又維護著自己的詳細介紹MVC的網頁 。
就網絡應用程序而言,MVC的版本和定義似乎與海灘上的沙粒一樣多,圍繞什么構成模型和視圖進行了各種辯論。 例如,在Web應用程序中,視圖是否包含HTML或僅包含CSS? 希望當我說Web應用程序通常使用MVC的一種變體(稱為前端控制器模式)時,我不會引起爭議。 在這種模式下,通常會有一個Servlet接收來自瀏覽器的請求。 該servlet檢查請求,然后將其委托給另一個對象,該對象充當子控制器,將特定請求的視圖和模型聯系在一起。
前端控制器的早期實現通常使用所謂的JSP前端策略,即針對特定請求的每個JSP都充當子控制器。 使用這種策略時,您經常面臨編寫一大堆自定義標簽庫以包含在每個頁面中的任務。 這些負責編組模型并確定模型在視圖中的呈現方式。 根據經驗,這會導致將關注點與控制器,模型和視圖的關注點分離在一起,并在一個地方混合在一起,并且通常由JSP中的JSP進行演示,其中包含用于表示邏輯的自定義標簽,與用于數據訪問的其他自定義標簽混合所有這些都與Java Scriptlet,HTML,Javascript和開發人員的困惑融合在一起。 當關注點分離失敗時,MVC崩潰,幾個反模式重新出現,包括功能分解 , 怪物對象和泥漿大球 。 Sun(現在為Oracle)在其J2EE核心模式中不建議使用JSP前端策略。 從經驗來看,這是我絕對同意的觀點……下圖說明了JSP前沿戰略的陷阱:
更多最新的實現方式(完全避開了JSP前端策略)將委托給純Java子控制器,而JSP則僅負責整理演示文稿。 子控制器的職責是從模型中獲取數據并將其戳入JSP以進行呈現。 這種方法已經被許多Web應用程序框架(例如使用Action類的Struts和在版本3中使用其@Controller注釋以及在版本2.x中使用處理程序類的Spring MVC)成功采用,取得了巨大的成功。
使用此技術必定會有一些陷阱,但是不會想到嚴重的陷阱,例如關注點分離的中斷。 如果您知道任何事情,請告訴我...
參考:我們的JCG合作伙伴 Roger Hughes在Captain Debug的博客上對每個人都了解MVC 。
相關文章 :
- Spring MVC攔截器示例
- jqGrid,REST,AJAX和Spring MVC集成
- SpringMVC 3 Tiles 2.2.2集成教程
- Spring MVC3 Hibernate CRUD示例應用程序
- Spring MVC開發–快速教程
- Spring,Quartz和JavaMail集成教程
- Spring Insight – Web應用程序分析
- Java教程和Android教程列表
翻譯自: https://www.javacodegeeks.com/2011/11/everybody-knows-about-mvc.html
mvc2 mvc
總結
以上是生活随笔為你收集整理的mvc2 mvc_每个人都知道MVC…的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LINK路由器如何设置限制网速Tp路由器
- 下一篇: spring-mvc教程_使用MVC模式