1.解釋
模型-視圖-控制器(MVC)是一個眾所周知的以設計界面應用程序為基礎的[設計模式]
藻茂,主要通過分離模型驹暑,視圖以及控制器,通過應用程序中角色將業(yè)務邏輯從界面中解耦辨赐。
模型負責封裝應用程序數(shù)據(jù)在視圖層展示优俘。
視圖僅僅只是展示這些數(shù)據(jù),不包含任何業(yè)務邏輯掀序。
控制器負責接收來自用戶的請求帆焕,并調用后臺服務(manager或者dao)來處理業(yè)務邏輯。
處理后不恭,后臺業(yè)務層可能會返回了一些數(shù)據(jù)在視圖層展示叶雹。控制器收集這些數(shù)據(jù)及準備模型在視圖層展示换吧。MVC模式的核心思想是將業(yè)務邏輯從界面中分離出來折晦,允許它們單獨改變而不會相互影響。
-
Dispatcher Servlet(Spring控制器)在Spring MVC應用程序中沾瓦,模型通常由POJO對象組成满着,它在業(yè)務層中被處理,在持久層中被持久化贯莺。視圖通常是用JSP標準標簽庫(JSTL)編寫的JSP模板风喇。控制器部分是由dispatcher servlet負責缕探,
Spring MVC控制器 ——通常稱作Dispatcher Servlet魂莫,當一個web請求發(fā)送到Spring MVC應用程序,dispatcher servlet首先接收請求爹耗。然后它組織那些在Spring web應用程序上下文配置的(例如實際請求處理控制器和視圖解析器)或者使用注解配置的組件耙考,所有的這些都需要處理該請求秽誊。
在Spring3.0中定義一個控制器類,這個類必須標有@Controller注解琳骡。
當有@Controller注解的控制器收到一個請求時锅论,它會尋找一個合適的handler方法去處理這個請求。
這就需要控制器通過一個或多個handler映射去把每個請求映射到handler方法楣号。為了這樣做最易,一個控制器類的方法需要被@RequestMapping注解裝飾,使它們成為handler方法炫狱。
handler方法處理完請求后藻懒,它把控制權委托給視圖名與handler方法返回值相同的視圖。
為了提供一個靈活的方法视译,一個handler方法的返回值并不代表一個視圖的實現(xiàn)而是一個邏輯視圖(視圖的抽象類)嬉荆,即沒有任何文件擴展名。
你可以將這些邏輯視圖映射到正確的實現(xiàn)酷含,并將這些實現(xiàn)寫入到上下文文件鄙早,這樣你就可以輕松的更改視圖層代碼甚至不用修改請求handler類的代碼。
為一個邏輯名稱匹配正確的文件是視圖解析器的責任椅亚。一旦控制器類已將一個視圖名稱解析到一個視圖實現(xiàn)限番。它會根據(jù)視圖實現(xiàn)的設計來渲染對應對象。