什么是Spring MVC
Spring MVC是Spring框架的一個模塊,也是基于MVC設(shè)計模式的.
什么是MVC
MVC是一種設(shè)計模式,分別表示模型 視圖 控制器.
M,Model,引用系統(tǒng)數(shù)據(jù),模型層有pojo service dao.
V,View,組織和展示模型數(shù)據(jù).
C,Controller,處理用戶請求.
Spring MVC 執(zhí)行流程
1.用戶發(fā)起請求到前端控制器(DispatcherServler),前端控制器負責(zé)接收用戶請求與響應(yīng).
2.前端控制器調(diào)用
HandlerMapping
(處理器映射器),找到URL所對應(yīng)的Handler
.并返回一個HandlerExecuteChain
對象.其中包含有攔截器鏈與URL對應(yīng)的Handler
.也就是說
HandlerMapping
主要是幫我們查找要Handler,并返回一個HandlerExecutChain
對象.3.DispatcherServler(前端控制器)調(diào)用,HandlerAdapter(處理器適配器)來執(zhí)行Handler并返回
ModelAndView
給HandlerAdapter,然后HandlerAdapter再將ModelAndView返回給DispatcherServler(前端控制器).4.DispatcherServler調(diào)用
ViewResolver
(視圖解析器),將邏輯視圖解析成物理視圖并返回View對象.例如我們ModelAndView中存放的視圖名為"user"(邏輯視圖),通過
ViewResolver
(視圖解析器),解析為"/WEB-INF/user.jsp"(物理視圖).5.前端控制器進行視圖渲染,將模型數(shù)據(jù)填充到Request 域中.
6.前端控制器向用戶響應(yīng)結(jié)果.
Spring MVC 與 Struts2對比
入口
Spring MVC入口是servlet,而Struts2是filter.
因為我們在配置web.xml
的時候使用了不同的標簽進行的配置.
對request請求參數(shù)的封裝
SpringMVC的方法之間基本上獨立的,獨享request response數(shù)據(jù),請求數(shù)據(jù)通過方法參數(shù)進行傳遞.
Struts2把request請求參數(shù)封裝到Action的屬性上.雖然方法之間也是獨立的,但Action變量是共享的,也就是說我們每次請求就要創(chuàng)建一個Action.
對于ajax
SpringMVC集成了Ajax只需一個注解@ResponseBody就可以.
Struts2攔截器集成了Ajax,但是在Action中處理時需要先繼承json-default