深入理解springMVC

什麼是spring MVC

Spring MVC屬於SpringFrameWork的後續產品,已經融合在Spring Web Flow裡面。Spring 框架提供了構建 Web 應用程序的全功能 MVC 模塊。使用 Spring 可插入的 MVC 架構,從而在使用Spring進行WEB開發時,可以選擇使用Spring的SpringMVC框架或集成其他MVC開發框架,如Struts1(現在一般不用),Struts2(一般老項目使用)等。


spring mvc簡介

springmvc是spring的一個模塊,提供web層解決方案(基於mvc設計架構)

深入理解springMVC


採用springmvc的好處

  1. Spring MVC中提供一個DispatcherServlet, 無需額外開發。
  2. springMVC中使用基於xml的配置文件,可以編輯,無需重新編譯應用程序。
  3. springMVC實例化控制器,並根據用戶輸入來構造bean。
  4. springMVC可以自動綁定用戶輸入,並正確的轉換數據類型。例如,springMVC能自動解析字 符串,並設置float或decimal類型的屬性。
  5. springMVC可以檢驗用戶輸入,若校驗不通過,則重定向回輸入表單。輸入校驗是可選的, 支持編碼方式以及聲明。關於這一點,springMVC內置了常見的校驗器。
  6. springMVC是spring框架的一部分。可以利用spring提供的其它能力。
  7. springMVC支持國際化和本地化,支持根據用戶區域顯示多國語言。
  8. springMVC支持多種視圖技術,最常見的JSP技術以及其它技術包括Velocity和FreeMarker。

使用springMVC的優勢

1、清晰的角色分配: 前段控制器(dispatcherServlet) , 請求到處理器映射(handlerMapping), 處理器適配器(HandlerAdapter), 視圖解析器(ViewResolver),

處理器和頁面控制器(Controller),驗證器(Validator),命令對象(Command),

表單對象(FromObject)

2、分工明細

3、和Spring框架無縫結合


spring mvc框架流程圖

深入理解springMVC

SpringMvc整個的執行流程:

1、發起請求到前端控制器(DispatcherServlet )

2、前端控制器請求HandlerMapping查找Handler(可以根據xml、註解進行查找)

3、處理器映射器HandlerMapping向前端控制器DispatcherServlet 返回Handler

4、前端控制器DispatcherServlet 調用處理器適配器HandlerAdapter 執行Handler

5、處理器適配器HandlerAdapter 執行Handler

6、Handler執行完給處理器適配器返回ModelAndView

7、處理器適配器向前端控制器返回ModelAndView (ModelAndView 是SpringMvc的底層對象 包括model和view)

8、前端控制器請求視圖解析器去解析視圖

根據邏輯視圖名解析成真正的視圖(jsp)

9、視圖解析器向前端控制器返回view

10、前端控制器進行視圖渲染

視圖渲染將模型數據(模型數據在ModelAndView對象中)填充到request域

11、前端控制器向用戶響應結果


組件:

1、前端控制器DispatcherServlet(不需要程序員開發)

作用接收請求,響應結果,相當於轉發器,中央處理器。

有了DispatcherServlet減少了其它組件之間的耦合度。

2、處理器映射器HandlerMapping(不需要程序員開發)

作用:根據請求的url查找Handler

3、處理器適配器HandlerAdapter

作用:按照特定規則(HandlerAdapter要求的規則)去執行Handler

4、處理器Handler(需要程序員開發)

注意:編寫Handler時按照HandlerAdapter的要求去做,這樣適配器才可以去正確執行Handler

5、視圖解析器View resolver(不需要程序員開發)

作用:進行視圖解析,根據邏輯視圖名解析成真正的視圖(view)

6、視圖View(需要程序員開發jsp)

View是一個接口,實現類支持不同的View類型(jsp、freemarker、pdf...)


springMVC常用註解

1. 在 struts-config.xml 文件中加入

2.在 applicationContext.xml 文件中加入

3.cn.base.GetPersonListAction 實現請求響應代碼

可以看出一次請求需求如此多的步驟,在加上一個項目下來有很多這樣的請求響應,將給配置文件管理帶來很大的麻煩。


經過對 Spring 的深入應用, Spring 本身提供的 URL 請求控制,對其天然支持可以讓我們不需要 applicationContext.xml 再次聲明一次 URL 請求 Bean ,即減少了 Struts 的聲明 URL ,達到減少些繁瑣的配置。但只是少了一些而已,同樣也會面臨著配置文件的管理問題。

Spring 註解將給我們的工作帶來些輕鬆,利用反射機制原理出現的註解就是為了解決配置大量的配置問題。請看下處理一次簡單的請求響應代碼

@Controller --聲明控制器

@RequestMapping("/person") –聲明URL

public class PersonControl extends BaseController {

@Autowired –業務接口注入

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 { //處理請求//處理響應}}

可以看出,在代碼上加入註解可以省去我們上面說的多個配置文件的工作,達到簡便的 MVC 處理請求響應。

再配上簡單的配置文件聲明,即可輕鬆處理項目的全部請求控制工作。


分享到:


相關文章: