⑴ 寫出MVC的工作原理
1.當用戶在瀏覽器中點擊一個鏈接或者提交一個表單時,那麼就會產生一個請求(request)。當請求離開瀏覽器時,它會攜帶用戶請求的信息。
2.請求的第一站到達的是Spring的DispatcherServlet,它是一個前端控制器,工作是將用戶的請求委託給其他的組件(這里是交給Spring MVC的控制器)去處理。
這里DispatcherServlet要決定將請求傳給哪一個控制器(Controller)去處理,那麼這時就需要處理器映射(Handler Mapping)了。
處理器映射會看請求的URL信息,然後決定將請求交給哪一個控制器去處理。比如說有兩個控制器ControllerA和ControllerB,分別處理後綴名為.html和.jsp送來的請求,那麼當請求者的後綴名為.html時,那麼DispatcherServlet就將請求交給ControllerA進行處理。
C代表Controller,負責用戶界面和業務邏輯層的通信控制,一方面解釋來自用戶界面的輸入,識別用戶動作(如點擊按鈕等),調用相應Model中的方法,另一方面處理來自Model的事件和返回的執行結果,調用適當的View顯示給用戶,Controller主要由Servlet完成。
M代表Model,負責整個解決方案的業務邏輯實現,底層的資料庫也由Model訪問和操作;
V代表View,負責系統向用戶的展示,主要由HTML及JSP等完成;
拓展資料:
MVC組件說明:
以下組件通常使用框架提供實現:
DispatcherServlet:作為前端控制器,整個流程式控制制的中心,控制其它組件執行,統一調度,降低組件之間的耦合性,提高每個組件的擴展性。
HandlerMapping:通過擴展處理器映射器實現不同的映射方式,例如:配置文件方式,實現介面方式,註解方式等。
HandlAdapter:通過擴展處理器適配器,支持更多類型的處理器。
ViewResolver:通過擴展視圖解析器,支持更多類型的視圖解析,例如:jsp、freemarker、pdf、excel等。
組件:
1、前端控制器DispatcherServlet(不需要工程師開發),由框架提供
作用:接收請求,響應結果,相當於轉發器,中央處理器。有了dispatcherServlet減少了其它組件之間的耦合度。
用戶請求到達前端控制器,它就相當於mvc模式中的c,dispatcherServlet是整個流程式控制制的中心,由它調用其它組件處理用戶的請求,dispatcherServlet的存在降低了組件之間的耦合性。
2、處理器映射器HandlerMapping(不需要工程師開發),由框架提供
作用:根據請求的url查找Handler
HandlerMapping負責根據用戶請求找到Handler即處理器,springmvc提供了不同的映射器實現不同的映射方式,例如:配置文件方式,實現介面方式,註解方式等。
3、處理器適配器HandlerAdapter
作用:按照特定規則(HandlerAdapter要求的規則)去執行Handler
通過HandlerAdapter對處理器進行執行,這是適配器模式的應用,通過擴展適配器可以對更多類型的處理器進行執行。
4、處理器Handler(需要工程師開發)
注意:編寫Handler時按照HandlerAdapter的要求去做,這樣適配器才可以去正確執行Handler
Handler 是繼DispatcherServlet前端控制器的後端控制器,在DispatcherServlet的控制下Handler對具體的用戶請求進行處理。
由於Handler涉及到具體的用戶業務請求,所以一般情況需要工程師根據業務需求開發Handler。
5、視圖解析器View resolver(不需要工程師開發),由框架提供
作用:進行視圖解析,根據邏輯視圖名解析成真正的視圖(view)
View Resolver負責將處理結果生成View視圖,View Resolver首先根據邏輯視圖名解析成物理視圖名即具體的頁面地址,再生成View視圖對象,最後對View進行渲染將處理結果通過頁面展示給用戶。
springmvc框架提供了很多的View視圖類型,包括:jstlView、freemarkerView、pdfView等。
一般情況下需要通過頁面標簽或頁面模版技術將模型數據通過頁面展示給用戶,需要由工程師根據業務需求開發具體的頁面。
6、視圖View(需要工程師開發jsp...)
View是一個介面,實現類支持不同的View類型(jsp、freemarker、pdf...)
參考資料:網路-MVC
⑵ mvc中的mvc分別指什麼
MVC是Java中的一種設計模式,在你寫程序的時候一定得按照這樣的模式寫代碼,他的目的是為了減少層與層之間的耦合,方便後續的維護
M——指的是Model,即模型,在實際的開發中我們的實體類就是我們的模型,再通俗一點就是你寫了很多private修飾的變數,然後寫了很多get、set方法的類就叫模型
V——指的是View,即視圖,就是我們JavaWEB中的視圖,也就是JSP了,通俗一點就是用戶可以看到的頁面就叫做視圖
C——指的是Controller,即控制器,就是我們在接收前端穿過來的請求的那個類就叫做控制器,比如我們的servlet,向模型發送數據,控制用戶輸入,讀取視圖的數據
⑶ 如何設計一個自己的前端MVC框架
對於一些中小型的web應用程序,為了縮短開發周期和降低開發和維護成本,往往會採用一種基本MVC開發模式的框架開發。現在市場上的開發傳統web頁面的JavaScript框架比較多,但是專門對移動應用程序的MVC設計模式的框架比較少。所以開發一套針對移動應用程序的MVC設計模盯衡式的框架還是很有價值的。參考傳統MVC設計模式框架,移動應用框架應該實現以下幾個方面:
MVC的分離
移動應用程序中,model,view,controller得到嚴格的分離,使得應用程序的結構和開發的思路更加清晰,程序的維護更加方便。
數據的更新
Model中的數據與View中數據的雙向更新,當Model中的數據發生變化時,View中的數據隨著發生變化,當View中輸入或修改數據時,Model的數據也會發生變化,省去開發者手動操作數據的變化,避免發生錯誤。
數據的格式化
當Model中的數據需要先格式化再顯示在view中的時候,可以先進行數據格式的轉化。
數據的驗證
當view中輸入數據或者是改變數據的時候,需要驗證數據時,可以先對數據進行驗證,當驗證通過時,才賦給Model中相應的數據。
頁面管理調度
實現各個頁面之間的調度,避免由開發者實現頁面調度而產生的混亂,同時也加快程序的開發速度。
框架的實現與程序的開發離不開JavaScript庫,目前的Javascript庫的形勢也比較尷尬,一方面是傳統的web頁面javascript庫的成熟,一方面卻是針對移動端應用設計開發web應用JavaScript的相對落後,雖然也有幾款優秀的,但是相對體積比較大,而且有時候出了問題也很難跟蹤,所以有必要開發一套專門針對移動端開發的JavaScript庫,使它具有靈活,小巧,功能完善的工具集和UI組件,幫助開發移動端應用的開發者快速工發並容易維護,所以具體需求有以下幾個方面:
事件的支持
DOM2級的臘褲事件使對DOM元素的操作起到了解耦作用,在程序開發的過程中,對程序對象之間的解耦的作用,在程序開發的過程中,對對象之間的解耦也是相當必要的,所以有必要做一個統一的介面,而事件是一個不錯的選擇,而且事件在MVC設計模式的實現中佔有很重要的地位,他既可以使Model,view,controller之間分離解耦,又使他們之間存在內在聯系。
插件機制
一個好的Javascript庫,他應該有自己的靈活完善的插件機制,不僅可以為庫的開發台提供方便,也應該為開發應用程序時提供方便,針對相同的功能開發插件,避免代碼的多次開發。
頁面管理
一個移動應用程序會有很多頁面需要分級管理,這是由移動辦公設備的特性決定的,面對多級與多個頁面,需要一種機制來管理各個頁面之間的關系才而已痛苦誤會頁面的載入時機與載入方法。
動畫的功能
使用移動設置性能的提升與大量移動應用的出現,使用戶對程序的選擇更多。如果程序不能更炫更苦的表現來吸引用戶,那他將難以進入市場,而動畫就是其表現手段之一,所以有必要為開發者提供一套實現動畫的方法,使開發者可以迅速開發能吸引用戶的動畫。
手勢的支持
隨著觸摸移動設備的普及與蘋果公司在它原生IOS應用程序中推出了手勢操作後,人們越來越喜歡這種交互方式了。為了適應這種潮流與提升程序的競爭力,在面向移動應用開發的JavaScript庫中添加手勢的支持是有必要的。
數據的通信
作為一個信息時候的應用程序,數據通信的功能是不可或缺的。雖然Ajax技術提供了數據通信的相應的介面,但是如果每一次的數據通信都要開發者去創建,調用相應的介面,會出現很重復的代碼,而且效率也不高,所以有必要對Ajax數據通信介面進行封裝。
數據的本地化
當應用程序與後台通信取得數據的時候,有些數據是需要保存在本地的,還有一些數據的狀態,以及一些經過運算得到的數據也是需要保留在本地的。這就需要提供一種數據本地化的介面
UI組件
開發者在開發應用程序的時候,常常會遇到一個功能相同的控制項在不現的輪則簡應用程序程序中都會用到,為了提高應用程序的開發效率,縮短開發周期,有必要把一些常用的控制項抽象出來形成組件,供開發者調用
屏幕的適配
隨著移動設備的不斷更新發展,設備屏幕的尺寸與解析度越來越多樣化,這便成了跨平台應用程序「一次開發,多處運行」的最大難題。所以有必要形成一_方案來解決這一問題。
總結
在這所有問題中,事件的擴展,插件機制,頁面的管理,MVC設計模式的實現不僅是重點,也是難點,它們的實現具有以下價值:
事件在web開發中應用已經很廣泛,不過它只有在相應的DOM元素上才有事件,而且MVC設計模式的實現需要事件的驅動,所以需要擴展DOM事件到普通對象上,使它們具有訂閱發布消息功能,且與DOM事件有相同的介面。
插件機制需要代碼的高度抽象化,它是UI組件實現的基礎,它的實現提高了代碼的重復使用。
頁面的管理,它把應用程序按業務邏輯分解為以頁面為單位進行管理,使程序的邏輯結構更加清晰,而且它為MVC框架中頁面的調度實現提供了基礎。
MVC設計模式的實現,即MVC框架的實現,對應用程序開發周期的縮短,開發成本的降低,應用程序後期的維護都會有很大的幫助。
⑷ asp.net mvc是什麼概念
mvc是一個設計模式,和所用的語言無關。asp.net是基於C#語言或者VB.NET語言的網頁設計語言。
MVC是一種設計模式。M(model)、V(view)、C(controller)。講究在程序設計中,將各個模塊最大限度的解耦(降低關聯度)。通過C來連接M和V。不過我們比較常用MVC的五層模式。MVC從表面講是三層。這個具體你可以網路的。
⑸ 個人對於spring mvc框架的理解
以下我的個人理解加上網路上的所查閱資料,對於spring mvc框架的一些總結,不足之處還望指出
在web模型中,MVC是一種很流行的框架,通過把Model,View,Controller分離,把較為復雜的web應用分成邏輯清晰的幾部分,是為了簡化開發,減少出錯,同時也為了組內開發人員之間的配合。總之就是一種分層工作的辦法。
(1) 用戶通過瀏覽器向伺服器發送請求,請求被springmvc的前端控制器DispatcherServlet攔截;
(2) DispatcherServlet攔截到請求後,會調用HandlerMapping處理映射器;
(3) 處理器映射器根據請求URL找到具體的處理器,生成處理器對象及處理器攔截器(如果有則生成)一並返回給調用處理器DispatcherServlet;
(4)DispatcherServlet會通過返回信息選擇合適的滾簡HanderAdapter(處理器適配器);
(5)HanderAdapter會調用並執行Handler(處理器),這里的處理器值的就是程序中編寫的Controller類,也被稱之為後端控制器;
(6)Controller執行完成後,會返回一個ModelAndView對象,該對象中包含視圖名或包含模型和視圖名
(7)HandlerAdapter將ModelAndView對象返回給DispatcherServlet;
(8)DispatcherServlet會根據ModelAndView對象選擇一個合適的ViewReslover(視圖解析器)
(9)ViewReslover解析後,會向DispatcherServlet中返回具體的View
(10)DispatcherServlet對view進行渲染(即將模型數據填充至視圖中)
(11)視圖渲染結果會返回給客戶端瀏覽器顯示
(1)DispatcherServlet介面:Spring提供的前端控制器,所有的請求都有經過它來統一分發。在DispatcherServlet將請求分發給Spring Controller之前,需要藉助於Spring提供的HandlerMapping定位到具體的Controller。
(2)HandlerMapping介面:能夠完成蠢備跡客戶請求到Controller映射。
(3)Controller介面:需要為並發用戶處理上述請求,因此實現Controller介面時,必須保證線程安全並且可重用。Controller將處理用戶請求,這和Struts Action扮演的角色是一致的。一旦Controller處理完用戶請求,則返回ModelAndView對象給DispatcherServlet前端控制器,ModelAndView中包含了模型(Model)和視圖(View)。
從宏觀角度考慮,DispatcherServlet是整個Web應用的控制器;從微觀考慮,Controller是單個Http請求處理過程中的控制器,而ModelAndView是Http請求過程中返回的模型(Model)和視圖(View)。
(4)ViewResolver介面:Spring提供的視圖解析器(ViewResolver)在Web應用中查帶並找View對象,從而將相應結果渲染給客戶。
是整個Spring MVC的核心。它負責接收HTTP請求組織協調Spring MVC的各個組成部分。其主要工作有以下三項:
(1)截獲符合特定格式的URL請求。
(2)初始化DispatcherServlet上下文對應WebApplicationContext,並將其與業務層、持久化層的WebApplicationContext建立關聯。
(3)初始化Spring MVC的各個組成組件,並裝配到DispatcherServlet中。
⑹ 能通俗易懂的介紹一下前端的mvc和mvvm么
一、MVC
MVC模式的意思是,軟體可以分成三個部分。
唯一的區別是,它採用雙向綁定(data-binding):View的變動,自動反映在 ViewModel,反之亦然。Angular和Ember都採用這種模式