基本概念:
M:Model 程序的業務
V:View 程序的界面
C:Controller 程序的控制部分
1.MVC1模式
view接受用戶輸入,并傳遞到controller.
controller統一進行處理命令,交由model處理具體的業務.
進過處理model更新后,通知view進行更新.
這種模式主要用于桌面程序,使用觀察者模式實現,具體來說就是讓View觀察Model,而用戶交互控制的地方用匿名類的方式統一放在controller中.
2.MVC2模式
view接受用戶輸入,并傳遞到controller.
controller統一進行處理命令,交由model處理具體的業務.
進過處理model更新后,controller會選一個view并把model內容傳遞(request,session)給它(forward).
然后view進行顯示.
3.區別
可以看到,model是否能主動通知view就是二者的主要差別.桌面程序可以做到,所以使用MVC1;Web程序由于Http協議的限制做不到,所以使用MVC2.
附錄:
mvc1 模式:
view接收用戶輸入,把命令傳到controller
controller處理命令,更新model
model被更新后,會通知view需要update
view更新后向用戶顯示
mvc2 模式:
由于mvc1中,model可以通知view,然后view就可以被更新,這在windows程序中很常見,像MFC的frame-document-view架構,如果document改變了,他會主動通知view進行update
但是在web中,作為model的java bean更新后,無法調用作為view的jsp(而且view通常很多,需要選一個),因此改為mvc2模式:
view接收用戶輸入,把命令傳到controller
controller處理命令,更新model
model被更新后,controller會選一個view并forward到這個jsp,附帶把model放到request參數
這個view獲得model然后顯示