SpringMVC核心講解

1.SpringMVC是什麼?

  • 顧名思義SpringMVC是一個基於MVC設計思想的框架。

  • 什麼是mvc?MVC是模型(model)-視圖(view)-控制器(controller)的縮寫 ,是一種軟件設計思想,主要的作用就是解決應用開發的耦合性,將應用的輸入、控制、輸出進行強制解耦。

    mvc中的模型、視圖、控制器分別擔負着不同的角色:

  1. 模型:頁數的數據和業務的處理。我們平常用的service和dao層就屬於這一層面

  2. 視圖:只用於用戶的顯示,不進行任何的業務處理。主要用來獲取和顯示數據

  3. 控制器:控制視圖層與用戶的交互,將對應的操作調用對應的模型。簡單的說,就是管理交互的

    理解了mvc,我們就來說一說mvc的執行過程:用戶通過view層向服務器發出請求,controller接收請求後,調用對應的model後獲取數據,控制器在將數據返回給view。

Spring web mvc和Struts2都屬於表現層的框架,它是Spring框架的一部分,我們可以從Spring的整體結構中看得出來:

2.SpringMVC處理流程

  1. 用戶請求提交到前端控制器
  2. 前端控制器請求業務處理給處理器
  3. 處理器把處理結果返回給前端控制器
  4. 前端控制器把處理結果交給jsp頁面
  5. jsp頁面返回html給前端控制器
  6. 前端控制器響應客戶

3.SpringMVC 詳細架構

  1. 用戶發送請求至DispatcherServlet(前端控制器)
  2. DispatcherServlet收到請求調用HandlerMapping(處理器映射器)。
  3. HandlerMapping根據請求url找到具體的Handler(處理器),可以根據 xml 配置、註解進行查找,生成處理器對象及處理器攔截器(如果有則生成)一併返回給DispatcherServlet。Handler就是我們定義的controller。
  4. DispatcherServlet通過HandlerAdapter(處理器適配器)調用Handler(處理器)
  5. 執行處理器(Controller,也叫後端控制器)。
  6. Controller執行完成返回ModelAndView
  7. HandlerAdapter將controller執行結果ModelAndView返回給DispatcherServlet
  8. DispatcherServlet將ModelAndView傳給ViewReslover視圖解析器
  9. ViewReslover解析後返回具體View
  10. DispatcherServlet對View進行渲染視圖(即將模型數據填充至視圖中)。
  11. DispatcherServlet響應用戶

處理器映射器:類中標記@ResquestMapping方法進行映射,根據ResquestMapping定義的url匹配ResquestMapping標記的方法,匹配成功返回HandlerMethod對象給前端控制器,HandlerMethod對象中封裝url對應的方法Method
處理器適配器:對標記@ResquestMapping方法進行適配

4.基本入門開發程序步驟

1.創建javaweb工程
2.導入springMVC相關jar包
3.在/WEB-INF/jsp下創建jsp
4.編寫Controller類
5.配置SpringMVC.xml,配置組件掃描器掃描@Controller,配置處理器映射器和處理器適配器,配置視圖解析器
6.web.xml配置前端控制器

3.核心註解講解

1. @Controller  標記爲控制器類,讓處理器映射器查找到此hadler

2. @RequestMapping 路徑配置

     通過RequestMapping註解可以定義不同的處理器映射規則。

URL路徑映射解釋

@RequestMapping(value="/item")或@RequestMapping("/item")

value的值是數組,可以將多個url映射到同一個方法

@RequestMapping註解作用

    1)標記url到請求方法的映射(其實就是通過一段url路徑來找到需要訪問的controller中的方法)

    2) 窄化請求映射:就是在類上面又加入@RequestMapping ,相當於在類上面又定義了一層url

這樣的好處就是防止在企業中團隊開發的時候, 你和你的同事起的url重名

    3)@RequestMapping 可以限定請求類型:

請求類型: post, get, put, delete等,可以在@RequestMapping(value="/list", method=RequestMethod.post) 限制請求的類型

如果定義成如post指定的類型,那麼像get這樣其他的訪問類型將訪問不到這個方法,會報405錯誤

GET和POST都可以的限定,@RequestMapping(method={RequestMethod.GET,RequestMethod.POST})

4.springmvc與struts2不同

  1. springmvc的入口是一個servlet即前端控制器,而struts2入口是一個filter過慮器

  2. springmvc是基於方法開發(一個url對應一個方法),請求參數傳遞到方法的形參,可以設計爲單例或多例(建議單例)struts2是基於類開發,傳遞參數是通過類的屬性,只能設計爲多例。

  3. Struts採用值棧存儲請求和響應的數據,通過OGNL存取數據, springmvc通過參數解析器是將request請求內容解析,並給方法形參賦值,將數據和視圖封裝成ModelAndView對象,最後又將ModelAndView中的模型數據通過reques域傳輸到頁面。Jsp視圖解析器默認使用jstl。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章