1.mvc要作哪些事:html
先說下Servlet 作哪些事情:前端
處理用戶提交的數據;java
調用業務方法;web
處理業務結果;spring
控制視圖顯示;tomcat
a)將url映射到java類或java 類方法安全
b)封裝用戶提交的數據網絡
c)處理請求-調用相關的業務處理-封裝相應的數據mvc
d)將響應的數據進行渲染,Jsp,html,freemarker等app
2.spring mv是一個輕量級的,基於請求響應的mvc框架。
3.爲啥要學習spring mvc 呢?
性能較struts2好。
簡單,便捷,易學。
天生和spring無縫集成(使用spring ioc ,aop)使用約定優於配置
可以進行簡單junit測試
支持Restful風格
異常處理
本地化,國際化
數據驗證,類型轉換等
攔截器等
--------------------------------使用的人多,使用的公司多
簡單結構圖:
4.跳轉結果的方式
4.一、設置ModelAndView對象。根據View的名稱和視圖解析器跳轉到指定頁面。
頁面:視圖解析器的前綴+view name +視圖解析器的後綴
4.二、經過Servlet對象來實現。不須要視圖解析器的配置
經過HttpServletResponse來進行輸出
經過HttpServletResponse實現重定向
經過HttpServletRequest實現轉發
4.三、經過springmvc來實現轉發和重定向——沒有視圖解析器
轉發的實現
轉發1:
轉發2:
重定向
4.四、經過spring mvc 來實現轉發和重定向——有視圖解析器
轉發方式
注意:重定向"redirect:index.jsp"不須要視圖解析器
5.數據的處理。
5.1.提交數據的處理:
a.提交的域名稱和處理方法的參數一致便可。
處理方法:
b.若是域名稱和參數名不一致
c.若是提交的是一個對象
要求提交的表單域名和對象的屬性名一致,參數名使用對象便可
處理方法
實體類
5.二、將數據顯示到UI層
第一種經過Model And View ——須要視圖解析器
第二種經過ModelMap來實現——不須要視圖解析器
ModelMap須要做爲處理方法的參數
ModelAndView 和ModelMap的區別
相同點:均可以將數據封裝顯示到表示層頁面中
不一樣點:ModelAndView能夠指定跳轉的視圖,而ModelMap不能;ModelAndView須要視圖解析器,ModelMap不須要配置
6.亂碼及Restful
a)spring mvc 中提供了CharacterEncodingFilter解決Post亂碼
同一個Controller經過參數來達到不一樣的處理方法不重要
Spring Mvc使用框架實現的組件(不須要開發):
DispatcherServlet:做爲前端控制器,整個流程控制的中心,控制其它組件執行,統一調度,下降組件之間的耦合性,提升每一個組件的擴展性。----------------------接收請求,響應結果,至關於電腦的CPU
做用:接收請求,響應結果,至關於轉發器,中央處理器。有了dispatcherServlet減小了其它組件之間的耦合度。
用戶請求到達前端控制器,它就至關於mvc模式中的c,dispatcherServlet是整個流程控制的中心,由它調用其它組件處理用戶的請求,dispatcherServlet的存在下降了組件之間的耦合性。
HandlerMapping:經過擴展處理器映射器實現不一樣的映射方式,例如:配置文件方式,實現接口方式,註解方式等。----------------------根據URL去查找處理器
做用:根據請求的url查找Handler
HandlerMapping負責根據用戶請求找到Handler即處理器,springmvc提供了不一樣的映射器實現不一樣的映射方式,例如:配置文件方式,實現接口方式,註解方式等。
HandlAdapter:經過擴展處理器適配器,支持更多類型的處理器。-----------------會把處理器包裝成適配器,這樣就能夠支持多種類型的處理器,類比筆記本的適配器(適配器模式的應用)
做用:按照特定規則(HandlerAdapter要求的規則)去執行Handler
經過HandlerAdapter對處理器進行執行,這是適配器模式的應用,經過擴展適配器能夠對更多類型的處理器進行執行。
ViewResolver:經過擴展視圖解析器,支持更多類型的視圖解析,例如:jsp、freemarker、pdf、excel等。----------------------進行視圖解析,多返回的字符串,進行處理,能夠解析成對應的頁面
做用:進行視圖解析,根據邏輯視圖名解析成真正的視圖(view)
View Resolver負責將處理結果生成View視圖,View Resolver首先根據邏輯視圖名解析成物理視圖名即具體的頁面地址,再生成View視圖對象,最後對View進行渲染將處理結果經過頁面展現給用戶。 springmvc框架提供了不少的View視圖類型,包括:jstlView、freemarkerView、pdfView等。
通常狀況下須要經過頁面標籤或頁面模版技術將模型數據經過頁面展現給用戶。
View是一個接口,實現類支持不一樣的View類型(jsp、freemarker、pdf...)
springMVC和spring之間的關係:
springMVC是spring的一個後續產品,其實就是spring在原有基礎上,又提供了web應用的MVC模塊,能夠把springMVC理解爲是spring的一個模塊(相似AOP,IOC這樣的模塊),網絡上常常會說springMVC和spring無縫集成,其實springMVC就是spring的一個子模塊,因此根本不須要同spring進行整合。