MVC是一個
框架模式,它強制性的使
應用程序的
輸入、
處理和
輸出分開。使用MVC應用程序被分成三個核心部件:
模型、
視圖、
控制器。它們各自處理自己的任務。最典型的MVC就是
JSP +
servlet +
javabean的模式。[5]
視圖
視圖是用戶看到並與之交互的界面。對老式的
Web應用程序來說,視圖就是由
HTML元素組成的界面,在新式的Web應用程序中,
HTML依舊在視圖中扮演着重要的角色,但一些新的技術已層出不窮,它們包括
Adobe Flash和像
XHTML,
XML/
XSL,
WML等一些標識語言和
Web services.
MVC好處是它能為應用程序處理很多不同的
視圖。在視圖中其實沒有真正的處理發生,不管這些數據是聯機存儲的還是一個雇員列表,作為視圖來講,它只是作為一種輸出數據並允許用戶操縱的方式。[6]
模型
模型表示企業數據和業務規則。在MVC的三個部件中,模型擁有最多的處理任務。例如它可能用像
EJBs和ColdFusion Components這樣的構件
對象來處理
數據庫,被模型返回的數據是中立的,就是說模型與數據格式無關,這樣一個模型能為多個視圖提供數據,由於應用於模型的代碼只需寫一次就可以被多個視圖重用,所以減少了代碼的重復性。[6]
控制器
控制器接受用戶的輸入並調用模型和視圖去完成用戶的需求,所以當單擊
Web頁面中的超鏈接和發送
HTML表單時,控制器本身不輸出任何東西和做任何處理。它只是接收請求並決定調用哪個模型構件去處理請求,然后再確定用哪個視圖來顯示返回的數據。[6]
SSH
集成SSH框架的系統從職責上分為四層:
表示層、
業務邏輯層、
數據持久層和域模塊層,以幫助開發人員在短期內搭建結構清晰、可復用性好、維護方便的
Web應用程序。其中使用Struts作為系統的整體基礎架構,負責MVC的分離,在Struts框架的模型部分,控制業務跳轉,利用Hibernate框架對
持久層提供支持,Spring做管理,管理struts和hibernate。具體做法是:用
面向對象的分析方法根據需求提出一些模型,將這些模型實現為基本的Java對象,然后編寫基本的DAO(Data Access Objects)接口,並給出Hibernate的DAO實現,采用Hibernate架構實現的DAO類來實現Java類與數據庫之間的轉換和訪問,最后由Spring做管理,管理struts和hibernate。
系統的基本業務流程是: 在
表示層中,首先通過JSP頁面實現
交互界面,負責接收請求(Request)和傳送響應(Response),然后Struts根據配置文件(struts-config.xml)將ActionServlet接收到的Request委派給相應的Action處理。在業務層中,管理服務組件的Spring IoC容器負責向Action提供業務模型(Model)組件和該組件的協作對象數據處理(DAO)組件完成業務邏輯,並提供事務處理、緩沖池等容器組件以提升系統性能和保證數據的完整性。而在
持久層中,則依賴於Hibernate的對象化映射和數據庫交互,處理DAO組件請求的數據,並返回處理結果。
采用上述開發模型,不僅實現了視圖、控制器與模型的徹底分離,而且還實現了
業務邏輯層與
持久層的分離。這樣無論前端如何變化,模型層只需很少的改動,並且數據庫的變化也不會對前端有所影響,大大提高了系統的可復用性。而且由於不同層之間
耦合度小,有利於團隊成員並行工作,大大提高了開發效率。
MVC與SSH的區別(轉載)
MVC三層架構:模型層,控制層和視圖層。模型層,用Hibernate框架讓來JavaBean在數據庫生成表及關聯,通過對JavaBean的操作來 對數據庫進行操作;控制層,用Struts框架來連接數據層和視圖層的,接收、處理、發送數據並控制流程;視圖層,用JSP模板把頁面展現給用戶以及提供 與用戶的交互。而Spring框架粘合了Hibernate和Struts,透明的管理了整個架構,提供IOC容器使代碼松耦合以及AOP框架的切面功能 等等。
也可以換種說法:我們去飯館吃飯,擺在我們面前的油淋小白菜就是Jsp呈現的視圖,而這道菜怎么來的呢,當然要有小白菜,也就是Hibernate產生的 數據,小白菜要洗干凈,切好,這是對數據的操作;這些准備好了就要炒小白菜了,這就是Struts的事了。這個過程分工明確,各做各的,有的只負責洗菜, 有的只負責炒菜的,Spring就是中間負責跑腿的,讓洗菜的和炒菜的都安心做自己的事。最終一道菜就出來了,我們看到的是成品菜,卻看不見它被制作的過 程。
也可以換種說法:我們去飯館吃飯,擺在我們面前的油淋小白菜就是Jsp呈現的視圖,而這道菜怎么來的呢,當然要有小白菜,也就是Hibernate產生的 數據,小白菜要洗干凈,切好,這是對數據的操作;這些准備好了就要炒小白菜了,這就是Struts的事了。這個過程分工明確,各做各的,有的只負責洗菜, 有的只負責炒菜的,Spring就是中間負責跑腿的,讓洗菜的和炒菜的都安心做自己的事。最終一道菜就出來了,我們看到的是成品菜,卻看不見它被制作的過 程。
自己的體會:
MVC是一種框架模式,是一種思想,SSH是一種框架,是框架模式的實現,SSH是一種經典的MVC模式。
SSH是指struts2、spring、hibernate,是三種被封裝的框架。MVC是指Model、view、control,是程序的一種分層模式。SSH是一種經典的MVC模式。