首頁»Java WEB»通過 JSP Model 深入學習 MVC

通過 JSP Model 深入學習 MVC

來源:Web開發者 發布時間:2012-03-01 閱讀次數:


動態Web編程技術的發展歷史

  使用 JSP 技術開發 Web 應用程序, 有兩種架構模型可供選擇. 通常稱為 Model1和 Model2.

  所謂Model 1 就是JSP大行其道的時代,在Model 1模式下,整個Web應用幾乎全部由JSP頁面組成,JSP頁面接收處理客戶端請求,對請求處理后直接做出響應。用少量的JavaBean來處理數據庫連接、數據庫訪問等操作。如下圖:

  Model 1 模式的實現比較簡單,適用于快速開發小規模項目。但從工程化的角度看,它的局限性非常明顯:JSP頁面身兼View和Controller兩種角色,將控制邏輯和表現邏輯混雜在一起,從而導致代碼的重用性非常低,增加了應用的擴展性和維護的難度。

  早期有大量ASP和JSP技術開發出來的Web應用,這些Web應用都采用了Model 1架構。

  Model 2 模式是基于MVC架構的設計模式。在Model 2架構中,Servlet作為前端控制器,負責接收客戶端發送的請求,在Servlet中只包含控制邏輯和簡單的前端處理;然后,調用后端JavaBean來完成實際的邏輯處理;最后,轉發到相應的JSP頁面處理顯示邏輯。如下圖:

  Model 2下JSP不再承擔控制器的責任,它僅僅是表現層角色,僅僅用于將結果呈現給用戶,JSP頁面的請求與Servlet(控制器)交互,而Servlet負責與后臺的JavaBean通信。在Model 2模式下,模型(Model)由JavaBean 充當,視圖(View)由JSP頁面充當,而控制器(Controller)則由Servlet充當。

  由于引入了MVC模式,使Model 2具有組件化的特點,更適用于大規模應用的開發,但也增加了應用開發的復雜程度。原本需要一個簡單的JSP頁面就能實現的應用,在Model 2中被分解成多個協同工作的部分,需花更多時間才能真正掌握其設計和實現過程。

  注意  對于非常小型的Web站點,如果后期的更新、維護工作不是特別大,可以使用Model 1的模式來開發應用,而不是使用Model 2的模式。雖然Model 2提供了更好的可擴展性及可維護性,但增加了前期開發成本。從某種程度上講,Model 2為了降低系統后期維護的復雜度,卻導致前期開發的更高復雜度。

  MVC并不是Java語言所特有的設計思想,也并不是Web應用所特有的思想,它是所有面向對象程序設計語言都應該遵守的規范。

  MVC思想將一個應用分成三個基本部分:Model(模型)、View(視圖)和Controller(控制器),這三個部分以最少的耦合協同工作,從而提高應用的可擴展性及可維護性。

  起初,MVC模式是針對相同的數據需要不同顯示的應用而設計的,其整體的效果如下圖所示。

  在經典的MVC模式中,事件由控制器處理,控制器根據事件的類型改變模型或視圖,反之亦然。具體地說,每個模型對應一系列的視圖列表,這種對應關系通常采用注冊來完成,即:把多個視圖注冊到同一個模型,當模型發生改變時,模型向所有注冊過的視圖發送通知,接下來,視圖從對應的模型中獲得信息,然后完成視圖顯示的更新。

  從設計模式的角度來看,MVC思想非常類似于一個觀察者模式,但與觀察者模式存在少許差別:觀察者模式下觀察者和被觀察者可以是兩個互相對等的對象,但對于MVC思想而言,被觀察者往往只是單純的數據體,而觀察者則是單純的視圖頁面。

  概括起來,MVC有如下特點:

  1、多個視圖可以對應一個模型。按MVC設計模式,一個模型對應多個視圖,可以減少代碼的復制及代碼的維護量,一旦模型發生改變,也易于維護。
  2、模型返回的數據與顯示邏輯分離。模型數據可以應用任何的顯示技術,例如,使用JSP頁面、Velocity模板或者直接產生Excel文檔等。
  3、應用被分隔為三層,降低了各層之間的耦合,提供了應用的可擴展性。
  4、控制層的概念也很有效,由于它把不同的模型和不同的視圖組合在一起,完成不同的請求。因此,控制層可以說是包含了用戶請求權限的概念。
  5、MVC更符合軟件工程化管理的精神。不同的層各司其職,每一層的組件具有相同的特征,有利于通過工程化和工具化產生管理程序代碼。
  6、相對于早期的MVC思想,Web模式下的MVC思想則又存在一些變化,因為對于一個應用程序而言,我們可以將視圖注冊給模型,當模型數據發生改變時,即時通知視圖頁面發生改變;而對于Web應用而言,即使將多個JSP頁面注冊給一個模型,當模型發生變化時,模型無法主動發送消息給JSP頁面(因為Web應用都是基于請求/響應模式的),只有當用戶請求瀏覽該頁面時,控制器才負責調用模型數據來更新JSP頁面。

  注意  MVC思想與觀察者模式有一定的相似之處,但并不完全相同。經典的MVC思想與Web應用的MVC思想也存在一定的差別,引起差別的主要原因是因為Web應用是一種請求/響應模式下應用,對于請求/響應應用,如果用戶不對應用發出請求,視圖無法主動更新自己。

相關文檔:詳細介紹JSP技術的兩種架構模型

QQ群:WEB開發者官方群(515171538),驗證消息:10000
微信群:加小編微信 849023636 邀請您加入,驗證消息:10000
提示:更多精彩內容關注微信公眾號:全棧開發者中心(fsder-com)
jsp | mvc
網友評論(共1條評論) 正在載入評論......
理智評論文明上網,拒絕惡意謾罵 發表評論 / 共1條評論
登錄會員中心
分分中彩票app 金寨县| 恩施市| 克山县| 宁河县| 吉木萨尔县| 贵阳市| 体育| 乳山市| 弥渡县| 景东| 信丰县| 民和| 兰州市| 周宁县| 西乡县| 长海县| 砚山县| 福鼎市| 黄平县| 格尔木市| 锡林郭勒盟| 安阳县| 大同县| 青海省| 江陵县| 彩票| 乳山市| 黄冈市| 吉安县| 北宁市| 探索| 彭山县| 淮南市| 鄂州市| 当涂县| 北安市| 凤冈县| 喀什市|