什么是spring MVC Spring MVC屬于SpringFrameWork的后續(xù)產(chǎn)品,,已經(jīng)融合在Spring Web Flow里面。Spring 框架提供了構(gòu)建 Web 應(yīng)用程序的全功能 MVC 模塊,。使用 Spring 可插入的 MVC 架構(gòu),,從而在使用Spring進行WEB開發(fā)時,可以選擇使用Spring的SpringMVC框架或集成其他MVC開發(fā)框架,,如Struts1(現(xiàn)在一般不用),Struts2(一般老項目使用)等,。 spring mvc簡介springmvc是spring的一個模塊,,提供web層解決方案(基于mvc設(shè)計架構(gòu))采用springmvc的好處
使用springMVC的優(yōu)勢 1、清晰的角色分配: 前段控制器(dispatcherServlet) , 請求到處理器映射(handlerMapping), 處理器適配器(HandlerAdapter), 視圖解析器(ViewResolver),, 處理器和頁面控制器(Controller),,驗證器(Validator),命令對象(Command), 表單對象(FromObject) 2,、分工明細 3,、和Spring框架無縫結(jié)合 spring mvc框架流程圖SpringMvc整個的執(zhí)行流程:1、發(fā)起請求到前端控制器(DispatcherServlet )2,、前端控制器請求HandlerMapping查找Handler(可以根據(jù)xml,、注解進行查找)3、處理器映射器HandlerMapping向前端控制器DispatcherServlet 返回Handler4,、前端控制器DispatcherServlet 調(diào)用處理器適配器HandlerAdapter 執(zhí)行Handler5,、處理器適配器HandlerAdapter 執(zhí)行Handler6、Handler執(zhí)行完給處理器適配器返回ModelAndView7,、處理器適配器向前端控制器返回ModelAndView (ModelAndView 是SpringMvc的底層對象 包括model和view)8,、前端控制器請求視圖解析器去解析視圖根據(jù)邏輯視圖名解析成真正的視圖(jsp)9、視圖解析器向前端控制器返回view10,、前端控制器進行視圖渲染視圖渲染將模型數(shù)據(jù)(模型數(shù)據(jù)在ModelAndView對象中)填充到request域11,、前端控制器向用戶響應(yīng)結(jié)果組件: 1、前端控制器DispatcherServlet(不需要程序員開發(fā)) 作用接收請求,響應(yīng)結(jié)果,,相當(dāng)于轉(zhuǎn)發(fā)器,,中央處理器。 有了DispatcherServlet減少了其它組件之間的耦合度,。 2,、處理器映射器HandlerMapping(不需要程序員開發(fā)) 作用:根據(jù)請求的url查找Handler 3、處理器適配器HandlerAdapter 作用:按照特定規(guī)則(HandlerAdapter要求的規(guī)則)去執(zhí)行Handler 4,、處理器Handler(需要程序員開發(fā)) 注意:編寫Handler時按照HandlerAdapter的要求去做,,這樣適配器才可以去正確執(zhí)行Handler 5、視圖解析器View resolver(不需要程序員開發(fā)) 作用:進行視圖解析,,根據(jù)邏輯視圖名解析成真正的視圖(view) 6,、視圖View(需要程序員開發(fā)jsp) View是一個接口,實現(xiàn)類支持不同的View類型(jsp,、freemarker,、pdf...) springMVC常用注解 1. 在 struts-config.xml 文件中加入 <!--用于聲明GetPersonList。do請求委托Spring處理--><action path="/GetPersonList" scope="request"type="org.springframework.web.struts.DelegatingActionProxy"></action> 2.在 applicationContext.xml 文件中加入 <!-- 指定GetPersonList處理的代碼,,和注入實現(xiàn)業(yè)務(wù)的代碼 --><bean name="/GetPersonList" class="cn.base.GetPersonListAction"><property name="getPersonList" ref=" getPersonListServices"></property></bean> 3.cn.base.GetPersonListAction 實現(xiàn)請求響應(yīng)代碼 可以看出一次請求需求如此多的步驟,,在加上一個項目下來有很多這樣的請求響應(yīng),將給配置文件管理帶來很大的麻煩,。 經(jīng)過對 Spring 的深入應(yīng)用,, Spring 本身提供的 URL 請求控制,對其天然支持可以讓我們不需要 applicationContext.xml 再次聲明一次 URL 請求 Bean ,,即減少了 Struts 的聲明 URL ,,達到減少些繁瑣的配置。但只是少了一些而已,,同樣也會面臨著配置文件的管理問題,。 Spring 注解將給我們的工作帶來些輕松,利用反射機制原理出現(xiàn)的注解就是為了解決配置大量的配置問題,。請看下處理一次簡單的請求響應(yīng)代碼 @Controller --聲明控制器 @RequestMapping("/person") –聲明URL public class PersonControl extends BaseController { @Autowired –業(yè)務(wù)接口注入 private personServices personServices;/*** 獲得人員列表*@param request* @param response* @throws Exception*/ @RequestMapping(params = "method=geList") --即處理/person.do? method=geList方法 public void getnodeList(HttpServletRequest request,HttpServletResponse response) throws Exception { //處理請求//處理響應(yīng)}} 可以看出,,在代碼上加入注解可以省去我們上面說的多個配置文件的工作,達到簡便的 MVC 處理請求響應(yīng),。 再配上簡單的配置文件聲明,,即可輕松處理項目的全部請求控制工作。 |
|