MVC模式在Java web 應用程序的實現

1、MVC簡介前端

  MVC(Model-View-Controller)模型-視圖-控制器,最先由Trygve Reenskaug在1978年提出,是施樂帕羅奧多研究中心(Xerox PARC)在20世紀80年代爲程序語言Smalltalk發明的一種軟件架構。MVC模式的目的是實現一種動態的程序設計,使後續對程序的修改和擴展簡化,而且使程序某一部分的重複利用成爲可能。除此以外,此模式經過對複雜度的簡化,使程序結構更加直觀。軟件系統經過對自身基本部分分離的同時也賦予了各個基本部分應有的功能。java

  • Model: 用於封裝與應用程序的業務邏輯相關的數據以及對數據的處理方法。模型有對數據直接訪問的權力,例如對數據庫的訪問。模型不依賴視圖和控制器,也就是說, M模型不關心它會被如何顯示或是如何被操做。可是模型中數據的變化通常會經過一種刷新機制被公佈。爲了實現這種機制,那些用於監視此模型的視圖必須事先在此模型上註冊,從而,視圖能夠了解在數據模型上發生的改變。
  • View:可以實現數據有目的的顯示。在視圖中通常沒有程序上的邏輯。爲了實現視圖上的刷新功能,視圖須要訪問它監視的數據模型,所以應該事先在被它監視的數據那裏註冊。
  • Controller:起到不一樣層面間的組織做用,用於控制應用程序的流程。它處理事件並做出響應。「事件」包括用戶的行爲和數據模型上的改變

  在Smalltalk-80中的應用程序編程中:如何使用模型 - 視圖 - 控制器(MVC) [Burbeck92],史蒂夫·伯貝克( Steve Burbeck)描述了MVC的兩個變體:一個被動模型和一個主動模型。web

  • 被動模型:當一個控制器專門操縱模型時,採用被動模型。控制器修改模型,而後通知視圖模型已更改並應更新。這種狀況下的模型徹底獨立於視圖和控制器,這意味着模型沒法報告其狀態的變化。HTTP協議就是這個例子。在瀏覽器中沒有簡單的方法從服務器獲取異步更新。瀏覽器顯示視圖並響應用戶輸入,但不檢測服務器上數據的更改。只有當用戶顯式請求刷新時,服務器被詢問才能進行更改。

  

  • 主動模型:當模型在沒有控制器參與的狀況下改變狀態時,使用主動模型。當其餘來源更改數據而且更改必須反映在視圖中時,可能會發生這種狀況。考慮股票代碼顯示。您能夠從外部來源收到股票數據,並但願在股票數據發生變化時更新視圖(例如,股票行情和警報窗口)。由於只有模型檢測到它們發生時內部狀態的變化,因此模型必須通知視圖來刷新顯示。

  

2、Java web 應用程序的經常使用組件數據庫

  1.Serverlet編程

    Servlet運行於Web容器中,如Tomcat,它能夠被Web容器動態加載,接收瀏覽器請求,調用其餘組件處理請求,而後把處理結果返回。當瀏覽器訪問某個Servlet時,        Web容器將會建立一個ServletRequest對象和ServletResponse對象,而且把用戶的請求信息封裝在ServletRequest對象中。而後把這兩個對象做爲參數傳輸給Servlet的         特定方法中。在該方法中處理請求,把處理結果封裝在ServletResponse對象中,返回給Web容器。最後Web容器把結果返回到瀏覽器去解析、顯示。設計模式

  2.Jsp瀏覽器

    JSP是一種動態網頁技術。它把HTML頁面中加入Java腳本,以及JSP標籤構成JSP文件。當瀏覽器請求某個JSP頁面時,Tomcat會把JSP頁面翻譯爲Java文件。而後將它         編譯爲class文件,接着執行它,把生成的HTML頁面返回到客戶端顯示。服務器

  3.JavaBean架構

    JavaBeans是Java中一種特殊的類,能夠將多個對象封裝到一個對象(bean)中。 特色是可序列化,提供無參構造器,提供getter方法和setter方法訪問對象的屬性。框架

  4.EJB

    企業級JavaBean(Enterprise JavaBean, EJB)是一個用來構築企業級應用的服務器端可被管理組件。Java企業版API(Java Enterprise Edition)中提供了對EJB的   規範。EJB是一個封裝有某個應用程序之業務邏輯服務器端組件。

  5.Web服務器和應用服務器

    Web服務器用來處理HTTP請求,並返回HTTP數據。它主要用來和瀏覽器進行交互,給用戶提供服務。應用服務器能夠被Web服務器調用,進行業務邏輯的處理。它返回      的數據被Web服務器組織爲HTML格式,而後返回到瀏覽器去解析。

3、java web 的解決方案(開發方法)

  1.JSP+JavaBean:該模式將業務邏輯與頁面表現進行分離,在必定程度上增長了程序的可調試性和維護性。簡單,適合小型項目的快速構建與運行。

  2.JSP+javaBean+Serverlet:JSP做爲視圖,來表現頁面;Servlet做爲控制器,控制程序的流程並調用業務進行處理;JavaBean封裝了業務邏輯。遵循了MVC設計模式。

  3.JSP+Struts:成熟的MVC開發框架。

  4.Spring:創建在覈心模塊之上,嫩夠適應於多種多視圖、模板技術、國際化和驗證服務,實現控制邏輯和業務邏輯清晰的分離。                                                          

  5.JSP+Struts+Hibernate:利用Struts的MVC設計模式,與Hibernate持久化對象組成的開發方案。

  6.JSP+Struts+Spring+Hibernate:Struts負責表示層,Spring負責邏輯層的業務, Hibernate持久層中數據庫的操做,組成的開發方案。

4、經常使用的java web的MVC框架

  1.Struts2:Struts 是Apache軟件基金會(ASF)贊助的一個開源項目。它最初是Jakarta項目中的一個子項目,並在2004年3月成爲ASF的頂級項目。它經過採用JavaServlet/JSP技術,實現了基於Java EEWeb應用的MVC設計模式的應用框架,是MVC經典設計模式中的一個經典產品.

  2.Spring MVC:Spring MVC屬於SpringFrameWork的後續產品,已經融合在Spring Web Flow裏面。Spring 框架提供了構建 Web 應用程序的全功能 MVC 模塊。使用 Spring 可插入的 MVC 架構,從而在使用Spring進行WEB開發時,能夠選擇使用Spring的SpringMVC框架或集成其餘MVC開發框架,如Struts1,Struts2等.

  3.Grails:Grails是一套用於快速Web應用開發的開源框架,它基於Groovy編程語言,並構建於Spring、Hibernate等開源框架之上,是一個高生產力一站式框架。

  4.JSF:JavaServer Faces (JSF) 是一種用於構建Java Web 應用程序的標準框架(是Java Community Process 規定的JSR-127標準)。它提供了一種以組件爲中心的用戶界面(UI)構建方法,從而簡化了Java服務器端應用程序的開發。因爲由Java Community Process (JCP) 推進,屬於Java EE 5中的技術規範,而受到了廠商的普遍支持。

  5.Tapestry:Tapestry並非一種單純的MVC框架,它更像MVC框架和模板技術的結合,它不只包含了前端的MVC框架,還包含了一種視圖層的模板技術,使用Tapestry徹底能夠與Servlet/JSP API分離,是一種很是優秀的設計。 經過使用Tapestry,開發者徹底不須要使用JSP技術,用戶只須要使用Tapestry提供的模板技術便可,Tapestry實現了視圖邏輯和業務邏輯的完全分離。

相關文章
相關標籤/搜索