1. 程式人生 > >淺談Javaweb經典三層架構和MVC框架模式

淺談Javaweb經典三層架構和MVC框架模式

淺談javaweb三大框架和MVC設計模式

小序:博主以前在學javaweb的時候開始總不理解javaweb三大框架和MVC框架模式,雖然沒有把兩者混為一談,但是也是很暈菜。作為一個Java開發程式設計師的話,特別是B/S架構的開發來說,MVC框架模式是我們必須要掌握的!!!

一、MVC設計模式

1.MVC的概念

首先我們需要知道MVC模式並不是javaweb專案中獨有的,MVC是一種軟體工程中的一種軟體架構模式,把軟體系統分為三個基本部分:模型(Model)、檢視(View)和控制器(Controller),即為MVC。它是一種軟體設計的典範,最早為Trygve Reenskaug提出,為施樂帕羅奧多研究中心(Xerox PARC)的Smalltalk語言發明的一種軟體設計模式。

2.MVC的詳解

雖然MVC並不是Java當中獨有的,但是現在幾乎所有的B/S的架構都採用了MVC框架模式,但是MVC在B/S架構中並沒有完全地實現,其實我們根本不需要掌握未實現的部分。  ·控制器Controller:控制器即是控制請求的處理邏輯,對請求進行處理,負責請 求轉發;  ·檢視View:檢視即是使用者看到並與之互動的介面,比如HTML(靜態資源),JSP(動態資源)等等。  ·模型Model:模型代表著一種企業規範,就是業務流程/狀態的處理以及業務規則的規定。業務流程的處理過程對其他層來說是不透明的,模型接受檢視資料的請求,並返回最終的處理結果。業務模型的設計可以說是MVC的核心。

3.MVC模式的用武之地

MVC模式被廣泛用於Java的各種框架中,比如Struts2、Spring MVC等等都用到了這種思想。

Struts2是基於MVC的輕量級的web應用框架。基於MVC,說明基於Struts2開發的Web應用自然就能實現MVC,也說明Struts2著力於在MVC的各個部分為我們的開發提供相應幫助。

二、Javaweb經典三層架構

1.Javaweb經歷了三個時期

①JSP Model1第一代  JSP Model1是JavaWeb早期的模型,它適合小型Web專案,開發成本低!Model1第一代時期,伺服器端只有JSP頁面,所有的操作都在JSP頁面中,連訪問資料庫的API也在JSP頁面中完成。也就是說,所有的東西都耦合在一起,對後期的維護和擴充套件極為不利。

②JSP Model1第二代  JSP Model1第二代有所改進,把業務邏輯的內容放到了JavaBean中,而JSP頁面負責顯示以及請求排程的工作。雖然第二代比第一代好了些,但還讓JSP做了過多的工作,JSP中把檢視工作和請求排程(控制器)的工作耦合在一起了。

③JSP Model2  JSP Model2模式已經可以清晰的看到MVC完整的結構了。  ·JSP:檢視層,用來與使用者打交道。負責接收用來的資料,以及顯示資料給使用者;  ·Servlet:控制層,負責找到合適的模型物件來處理業務邏輯,轉發到合適的檢視;  JavaBean:模型層,完成具體的業務工作,例如:開啟、轉賬等。

這就是javaweb經歷的三個年代,JSP Model2適合多人合作開發大型的Web專案,各司其職,互不干涉,有利於開發中的分工,有利於元件的重用。但是,Web專案的開發難度加大,同時對開發人員的技術要求也提高了。

2.JavaWeb經典三層框架

我們常說的三層框架是由JavaWeb提出的,也就是說這是JavaWeb獨有的!  所謂三層是表述層(WEB層)、業務邏輯層(Business Logic),以及資料訪問層(Data Access)。  ·WEB層:包含JSP和Servlet等與WEB相關的內容;  ·業務層:業務層中不包含JavaWeb API,它只關心業務邏輯;  ·資料層:封裝了對資料庫的訪問細節;

  注意,在業務層中不能出現JavaWeb API,例如request、response等。也就是說,業務層程式碼是可重用的,甚至可以應用到非Web環境中。業務層的每個方法可以理解成一個萬能,例如轉賬業務方法。業務層依賴資料層,而Web層依賴業務層! 

注:網上很多人在討論MVC究竟是一種框架模式還是一種設計模式(百度百科中強行解釋其為一種框架模式而不是一種設計模式),雖然Java中的23種設計模式裡並沒有MVC,但是我認為討論這個問題沒有太大的必要。我們大可將他作為一種思想,我們需要做的僅僅是理解它,應用它,掌握其中的思想,這才是我們需要做的。

博主才疏學淺,希望各位批評指正,一起進步!如有任何疑問或錯誤之處,還請各位指出,以防博主誤人子弟!謝謝! ---------------------