亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

關于MVC&Model2&Struts的一點看法

2019-11-18 12:56:33
字體:
來源:轉載
供稿:網友

  MVC
  MVC是Model-View-Controller的簡稱,原本是建立Smalltalk 應用的框架。框架支持代表應用狀態、屏幕表現和控制流的3個類,他們分別叫做Model、View和Controller。
  
  在Model發生變化的時候,通知View改變;在View需要查詢狀態的時候,向Model發送請求,當View做出一個動作時,比如對數據的修改等,通知Controller;Controller得到狀態改變信息時,發送請求給Model,并且Controller負責選擇顯示新的View。
  
  下圖是典型的Model-View-Controller范式,經常被表示為:一個互相連接的三角形。
  
 關于MVC&Model2&Struts的一點看法(圖一)


  
圖1 MVC 通常表示為3個互相連接的組件

  在Design Patterns: Elements of Reusable Object-Oriented Software一書中,作者以smalltalk MVC為例,贊揚了通知/訂閱者(notify/subscribe)協議和觀察者(Observer)模式的使用。其中局的一個經典的例子是對同一數據,系統可能需要不同的顯示視圖,比如條形圖、餅圖、數據表格等等,如下圖:
  
 關于MVC&Model2&Struts的一點看法(圖二)

  
圖2不同的View使用相同的Model

  圖2所示的每種視圖可能在同一時間顯示給不同的用戶。應用必須保證在其下面的數據或者模型改變時視圖的更新。為改變模型,用戶提交一個請求給控制器,由控制起來配合改變模型。數據視圖必須跟著改變,以反映最近的模型改變狀態。
  
  Smalltalk MVC 方案使用觀察者通知模式。在這種模式下,每個視圖注冊為一個模型數據的觀察者。然后模型可以通過發送消息給所有這冊觀察者,通知它們相關的改變。其為 Smalltalk MVC 框架已經通用化了,他也可以應用它其他平臺上面。
  
  Model2
  Model2是Sun公司為了解決jsp不易維護和功能塊難以復用提出的。Sun的技術人員,提出使用JSP 和 SERVLET同時來部署web 應用,SERVLET可以應付控制流,而 JSP則可專注于討厭的編寫Html的任務。
  
  結合使用 JSP 和 SERVLET 開始被稱為Model 2 ,而單獨使用JSP稱為Model 1。
  
  Model2并不是什么新的東西,其思想上實際是對MVC的一種繼續。很多場合,交互使用Model 2 和 MVC這兩個詞。但是還是存在一些爭論,即一個應用是否是 MVC,以及是否支持經典的觀察者通知模式。沒有觀察者通知的Model-View-Controller 有時被稱為MVC2 或Web MVC。
  
  層模式的MVC結構
  人們認為Model2不同于MVC的主要原因之一是:基于觀察者/通知模式的經典的MVC是難以在web環境下實現的。
  
  因為HTTP協議是一個請求/響應協議,客戶端有請求,服務器端才會有響應,沒有請求,就沒有響應。而觀察者/通知模式要求在服務器端發生變化時能主動給用戶端發消息更新。
  
  為了解決經典MVC模式難于在web環境下實現的問題,引入層模式將狀態改變和狀態查詢的職責加于控制器之上,并伴隨著改變通知。
  
  如圖3,分層的web 應用使用一種比傳統MVC模式更加“扁平”的模式??刂破鞅粖A在表現層(View) 和 應用邏輯 (Model)之間。
  
 關于MVC&Model2&Struts的一點看法(圖三)

  
圖3 web應用的層模式

  每個組件的主要職責并沒有改變。流程有稍微改變,View不再與Model有直接的聯系,而它們之間的交互都通過Controller。即查詢狀態和改變通知都必須通過控制器;當視圖,或者表現層需要加工動態頁面時,它使用從控制器傳遞的數據而不是直接來自于模型層。這種改變去除了View 和 Model的耦合,答應控制器選擇數據和顯示這些數據的視圖。
  
  Struts概要介紹
  Struts實現層模式的MVC
  Struts是一個應用框架,它實現了層次化的MVC模式或者說Sun公司提出的Model2模式。
  
  在Model1模式的web編程中,Model部分可以交給EJB及JDBC實現,而View部分可以由Jsp完成,但是卻沒有合適的工具完成獨立的Contrroller。在Model2的思想提出由Servlet應付控制流,在Struts中Servlet就扮演了Front End Controller的角色。
  
  當客戶端提出請求,ActionServlet響應請求,并且在指定的Struts-Config.xml文件中查到請求對應的Action(Action是Struts引入的一個核心類,作為Back End Controller,在后文會介紹),對已經實例化的Action,ActionServlet為這個新的請求開一個線程,對未實例化的Action,ActionServlet將其實例化。
  
  Action作為Back End Controller可以與Model部分交互,以實現狀態改變或者狀態查詢,Action還將返回下一步的視圖選擇給ActionServlet。ActionServlet根據對應的Struts-Config.xml找到視圖選擇對應物理地址,并把新的View返回給用戶端。
  
 關于MVC&Model2&Struts的一點看法(圖四)

  
圖4 Struts實現層模式的MVC結構

  另一種常見的關于Srtuts實現MVC模式的看法是認為只有ActionServlet是Controller,而把Action看作BusinessLogic。我認為,這種看法是沒有前一種將Action視為Back End Controller的看法合理的,因為Controller部分需要完成的視圖選擇實際上是由Action實現的。
  
  之所以會有后一種不太合適的關于Struts實現MVC結構的看法存在,主要是起源于編程習慣問題,很多人喜歡把大量的業務邏輯交給Action處理,我認為這是不太合適的。一方面,這樣降低了代碼的可復用性;另一方面使Action看起來臃腫,降低了可讀性。所以,推薦的編程方式是把大量的業務邏輯抽出做成javaBean,以解放Action。
  
關于MVC&Model2&Struts的一點看法(圖五)


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品98久久久久久中文字幕| 亚洲日本欧美中文幕| 久久久久久噜噜噜久久久精品| 美女国内精品自产拍在线播放| 久久中文字幕国产| 91超碰中文字幕久久精品| 亚洲国产精品99| 欧美激情视频在线观看| 欧美中文字幕视频在线观看| 在线亚洲午夜片av大片| 日韩黄在线观看| 久久免费在线观看| 日韩高清av一区二区三区| 亚洲电影免费观看高清| 日韩av免费网站| 亚洲色图五月天| 久久久久久69| 日韩在线观看视频免费| 欧亚精品中文字幕| 亚洲欧美激情另类校园| 日韩美女视频在线观看| 国产精品久久久久久久久久| 国产精品自产拍在线观| 午夜精品一区二区三区av| 国产国语刺激对白av不卡| 日韩在线观看免费高清| 欧美亚洲另类激情另类| 激情成人在线视频| 亚洲欧美日本精品| 欧美一级片一区| 成人黄色在线观看| 欧美亚洲第一页| 在线视频欧美日韩| 亚洲成人av片在线观看| 97国产精品久久| 疯狂做受xxxx欧美肥白少妇| 亚洲va欧美va国产综合久久| 亚洲精品99久久久久中文字幕| 清纯唯美亚洲综合| 亚洲国产精品va在线看黑人动漫| 欧美性开放视频| 亚洲一区二区三区成人在线视频精品| 久久精品免费播放| 一本一本久久a久久精品综合小说| 欧美极品美女视频网站在线观看免费| 国产精品免费观看在线| 色综合天天综合网国产成人网| 精品毛片网大全| 亚洲片在线观看| 少妇久久久久久| 久久精品视频中文字幕| 欧美激情第1页| 亚洲国产成人久久综合一区| 欧美一区二区三区免费视| 97国产suv精品一区二区62| 亲爱的老师9免费观看全集电视剧| 欧美激情精品久久久久久变态| 亚洲有声小说3d| 欧美成人精品xxx| 成人写真视频福利网| 国产精品成人观看视频国产奇米| 国产乱人伦真实精品视频| 国产原创欧美精品| 国产精品久久久亚洲| 日韩精品中文字幕在线观看| 国产精品久久久久久久久久ktv| 亚洲自拍偷拍第一页| 久久成人精品一区二区三区| 亚洲欧美日韩久久久久久| 在线观看欧美日韩| 97久久伊人激情网| 欧美性极品xxxx做受| 日韩精品在线观看一区| 91久久精品久久国产性色也91| 不卡中文字幕av| 中文字幕日韩欧美在线| 红桃av永久久久| 中文在线资源观看视频网站免费不卡| 欧美激情按摩在线| 日韩中文字幕av| 91av国产在线| 成人性生交xxxxx网站| 亚洲色图激情小说| 亚洲人精选亚洲人成在线| 欧美日韩中文字幕在线| 亚洲精品福利在线观看| 欧美猛少妇色xxxxx| 色综合久久88色综合天天看泰| 国产精品高潮在线| 亚洲国产一区自拍| 日韩成人中文电影| 欧美亚洲国产精品| 久99九色视频在线观看| 国产精品一二三视频| 久久国内精品一国内精品| 亚洲精品一区二区三区不| 人九九综合九九宗合| 亚洲视频在线免费观看| 日韩视频在线免费观看| 久久精品小视频| 亚洲成人精品在线| 一本一本久久a久久精品综合小说| 日韩精品在线观看一区二区| 成人疯狂猛交xxx| 91在线视频九色| 在线日韩中文字幕| 久久久久久久久久久免费精品| 亚洲福利在线视频| 国产美女久久精品| 91免费欧美精品| 日韩电影大全免费观看2023年上| 7777精品久久久久久| 国产高清视频一区三区| 97香蕉超级碰碰久久免费软件| 91在线观看欧美日韩| 美女视频久久黄| 伊人伊成久久人综合网站| 日本a级片电影一区二区| 欧美日本高清视频| 亚洲亚裔videos黑人hd| 91香蕉国产在线观看| 久久久亚洲天堂| 国产美女扒开尿口久久久| 日韩美女福利视频| 中文字幕日韩免费视频| 69久久夜色精品国产69| 在线激情影院一区| 国内精品久久久久久中文字幕| 欧美专区在线播放| 成人黄色在线免费| 亚洲最大福利视频网| 欧美性69xxxx肥| 日韩福利伦理影院免费| 亚洲理论在线a中文字幕| 51午夜精品视频| 午夜精品一区二区三区在线视频| 亚洲精品国产免费| 疯狂蹂躏欧美一区二区精品| 亚洲欧美国产日韩天堂区| 欧美日韩免费区域视频在线观看| 在线国产精品视频| 国产精品第一页在线| 91香蕉国产在线观看| 中文字幕无线精品亚洲乱码一区| 国产亚洲精品高潮| 国产日韩中文字幕在线| 国产精品人成电影在线观看| 亚洲男人天堂2024| 亚洲图片在线综合| 美女精品久久久| 91视频88av| 国产精品ⅴa在线观看h| 久久久91精品国产| 欧美高清无遮挡| 国内精品在线一区| 日韩av大片免费看| 成人免费黄色网| 日韩一区二区精品视频| 国产成人精品av| 久久av.com| 高清欧美一区二区三区| 亚洲欧洲中文天堂| 欧美另类在线播放| 久久久精品一区二区|