架構之談(MVC>Structs>Structs2)

來源:互聯網
上載者:User

標籤:自身   返回   str   視圖   標籤庫   改變   支援   mvc   單擊   

經典MVC中的事件流中,使用者與視圖View進行互動,填入資料並單擊按鈕,控制器Controller按接收到來自視圖的事件並對模型Model進行操作,根據使用者提供的資料更新模型Model。View也會接到“模型改變”的事件通知,因而它會隨著模型而更新,將更新的結果顯示給使用者。這種模式在單機且即時更新的應用程式中效果很好。

但是,在web世界的MVC,view是在用戶端的瀏覽器產生的,controller和model在伺服器端,他們之間的互動通過http協議完成的。view不能直接調用controller,而是基於http請求映射成不同的url。view不是一個可以被更新的對象,而是在用戶端發出一個新請求的時候隨之呈現的網頁頁面。同時,controller也不能將自身的改變通知biew,因為view呈現於另一台電腦的使用者瀏覽器中。因此,試圖每次都需要依照最新的資料重建。

web世界的經典MVC應用程式通過使用前端控制器(front controller)模式實現的。此模式包含一個分發器(通過servlet實現),而分發器將請求url映射到需要被執行的命令樣本(commond  Instance,於Structs中就是Action)。

Action與系統後端的服務進行互動,通常這些服務組合在一起作為模型。命令執行個體在處理完商務邏輯之後返回一個碼值,這個返回碼會映射到某個view(通常為一個web頁面模板,如jsp)。最後,結合controller和模型view(通常會使用標籤庫,一邊訪問數值)將會呈現給使用者。

分發器直接到達view並且在繼續產生view之前調用相應的controller,這種模式稱為頁面控制器

(▲Structs1採用前端控制器,Structs兩種模式都支援)

 

架構可以極大提高開發效率。

架構的強大之處不是源自他能讓你做什麼,而是他不能讓你做什麼。

 

架構之談(MVC>Structs>Structs2)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.