mvc這種設計模式,分爲三個基本部分:模型(Model)、視圖(View)和控制器(Controller),不光運用於Web領域,並且也能用於非Web領域;能夠特指一種表現層設計模式,不限於Java語言;Java Web應用中應用的最普遍的設計模式即是MVC模式,目前的主流Web框架大多也是基於MVC設計模式所編寫的。html
一、JavaWeb開發模式前端
C/S:客戶端 / 服務器web
B/S: 瀏覽器 / 服務器(主要採用mvc框架模式)spring
JavaBean:就是一個普通類(實體bean),包含三樣標準:無參構造、私有屬性、公共的getter和setter方法;數據庫
二、mvc在Java web中具體應用設計模式
Model:模型能夠表明着一種企業規範,就是業務流程/狀態的處理以及業務規則的規定,業務模型的設計能夠說是MVC的核心。通常Model層包括業務處理層和數據訪問層。數據訪問層主要是對數據庫的一些操做的封裝。業務處理層應用JavaBean構建,JavaBean主要是用做將從View層獲取的數據和數據庫的數據進行橋接。除卻JavaBean之外,若想構建分佈式應用系統,能夠應用EJB組件進行業務邏輯層的構建。
View:視圖便是展現給用戶實際進行交互的,像HTML、JSP等。
Controller:控制器,通常控制請求的處理邏輯,負責請求轉發;具體的能夠理解爲對View層提交的請求爲其設置對應的Servlet進行特定功能的處理,通常是編寫在Model中的業務處理層中的,相對於一箇中介者的做用。瀏覽器
如圖所示:服務器
MVC模式在最熟悉的框架中如:Struts二、spring MVC等等,都是基於MVC模式;架構
其中總結Model模式,常見的以下:mvc
<1>Jsp+JavaBean
須要在jsp頁面中檢查請求的參數是否正確,顯示和業務邏輯操做會耦合度高,之後維護起來比較困難;相對於純jsp頁面去作開發比較,程序的可讀性變高了,大部分代碼寫在JavaBean上,可重複率變高了(JavaBean的設計就是用來重用、封裝,大大減小編寫重複代碼的工做);
<2>JSP+Servlrt+JavaBean
基於MVC模式的開發進行的,擁有分層思想:高內聚、低耦合;
三、springmvc與spring的關係?
springmvc屬於spring框架的後續產品,用在基於MVC的表現層開發,相似於struts2框架;spring參考連接 spring知識點 ;
Spring MVC屬於SpringFrameWork的後續產品,已經融合在Spring Web Flow裏面。Spring 框架提供了構建 Web 應用程序的全功能 MVC 模塊。使用 Spring 可插入的 MVC 架構,能夠選擇是使用內置的 Spring Web 框架還能夠是 Struts 這樣的 Web 框架。
一、springmvc工做流程
(1)客戶端經過url發送請求
(2)核心控制器Dispatcher Servlet接收到請求,經過系統或自定義的映射器配置找到對應的handler,並將url映射的控制器controller返回給核心控制器。
(3)經過核心控制器找到系統或默認的適配器
(4)由找到的適配器,調用實現對應接口的處理器,並將結果返回給適配器,結果中包含數據模型和視圖對象,再由適配器返回給核心控制器
(5)核心控制器將獲取的數據和視圖結合的對象傳遞給視圖解析器,獲取解析獲得的結果,並由視圖解析器響應給核心控制器
(6)核心控制器將結果返回給客戶端
二、springmvc與struts2的區別(下面以3種區別爲例)
<1>springmvc的入口是一個servlet,即前端控制器,例如:*.action
struts2入口是一個filter過慮器,即前端過濾器,例如:/*
<2>springmvc是基於方法開發,傳遞參數是經過方法形參,能夠設計爲單例
struts2是基於類開發,傳遞參數是經過類的屬性,只能設計爲多例
<3>springmvc經過參數解析器是將request對象內容進行解析成方法形參,將響應數據和頁面封裝成ModelAndView對象,最後又將模型數據經過request對象傳輸到頁面
struts採用值棧存儲請求和響應的數據,經過OGNL存取數據
三、springmvc的理解與方法(下面以核心代碼爲例子)