參考文獻:http://www.cnblogs.com/xdp-gacl/p/3908610.html
一、Jsp+JavaBean
此模式如下圖所示:
在jsp+javabean架構中,JSP負責控制邏輯、表現邏輯、業務對象(javabean)的調用。
JSP+JavaBean模式適合開發業務邏輯不太復雜的web應用程序,這種模式下,JavaBean用於封裝業務數據,JSP即負責處理用戶請求,又顯示數據。
二、Servlet+Jsp+JavaBean模式
在平時的JavaWeb項目開發中,在不使用第三方mvc開發框架的情況下,通常會選擇Servlet+JSP+JavaBean開發模式來開發JavaWeb項目,Servlet+JSP+JavaBean組合開發就是一種MVC開發模式了,控制器(Controller)采用Servlet、模型(Model)采用JavaBean、視圖(View)采用JSP。
2.1、Web開發中的請求-響應模型
在Web世界里,具體步驟如下:
1、Web瀏覽器(如IE)發起請求,如訪問http://www.iteye.com/
2、Web服務器(如Tomcat)接收請求,處理請求(比如用戶新增,則將把用戶保存一下),最后產生響應(一般為html)。
3、web服務器處理完成后,返回內容給web客戶端(一般就是我們的瀏覽器),客戶端對接收的內容進行處理(如web瀏覽器將會對接收到的html內容進行渲染以展示給客戶)。
因此,在Web世界里:都是Web客戶端發起請求,Web服務器接收、處理並產生響應。
一般Web服務器是不能主動通知Web客戶端更新內容。雖然現在有些技術如服務器推(如Comet)、還有現在的HTML5 websocket可以實現Web服務器主動通知Web客戶端。
到此我們了解了在web開發時的請求/響應模型,接下來我們看一下標准的MVC模型是什么。
2.2、標准MVC模型概述
MVC模型:是一種架構型的模式,本身不引入新功能,只是幫助我們將開發的結構組織的更加合理,使展示與模型分離、流程控制邏輯、業務邏輯調用與展示邏輯分離。如下圖所示:
2.3、MVC的概念
首先讓我們了解下MVC(Model-View-Controller)的概念:
Model(模型):數據模型,提供要展示的數據,因此包含數據和行為,可以認為是領域模型(domain)或JavaBean組件(包含數據和行為),不過現在一般都分離開來:Value Object(數據) 和 服務層(行為)。也就是模型提供了模型數據查詢和模型數據的狀態更新等功能,包括數據和業務。
View(視圖):負責進行模型的展示,一般就是我們見到的用戶界面,客戶想看到的東西。
Controller(控制器):接收用戶請求,委托給模型進行處理(狀態改變),處理完畢后把返回的模型數據返回給視圖,由視圖負責展示。 也就是說控制器做了個調度員的工作。
從圖2-1我們還看到,在標准的MVC中模型能主動推數據給視圖進行更新(觀察者設計模式,在模型上注冊視圖,當模型更新時自動更新視圖),但在Web開發中模型是無法主動推給視圖(無法主動更新用戶界面),因為在Web開發是請求-響應模型。
那接下來我們看一下在Web里MVC是什么樣子,我們稱其為 Web MVC 來區別標准的MVC。
2.4.、Web MVC概述
Web MVC中的M(模型)-V(視圖)-C(控制器)概念和標准MVC概念一樣,我們再看一下Web MVC標准架構,如下圖所示:
在Web MVC模式下,模型無法主動推數據給視圖,如果用戶想要視圖更新,需要再發送一次請求(即請求-響應模型)。
2.5、Servlet+JSP+JavaBean開發模式
Servlet+JSP+JavaBean架構其實可以認為就是我們所說的Web MVC模型,只是控制器采用Servlet、模型采用JavaBean、視圖采用JSP,如下圖
2.6、改進
單純采用JavaBean作為模型層時,JavaBean組件類既負責收集封裝數據,又要進行業務邏輯處理,這樣可能造成JavaBean組件類很龐大,所以一般現在項目都是采用三層架構,而不直接采用JavaBean。如下: