1. 程式人生 > 其它 >SpringMVC整體架構(執行原理),快速入門

SpringMVC整體架構(執行原理),快速入門

1:SpringMVC簡介

1:Spring體系簡介

2:回顧MVC設計模式

service + mapper + pojo

3:SpringMVC的整體架構 - 執行原理 - 記住

1、 使用者發起http請求到DispatcherServlet

2、 前端控制器通過HandlerMapping查詢Handler(執行這個請求的人)

3、 對映器返回執行鏈(HandlerExecutorChain),包含2部分內容,一,Hadnler物件,二,攔截器(組)

4、 前端控制器通過介面卡執行Handler

5、 執行業務邏輯

6、 返回ModelAndView,view不是真正的檢視物件,是檢視名稱

,model:模型資料

7、 將ModelAndView返回前端控制器

8、 前端控制器通過檢視解析器查詢檢視

9、 返回真正的檢視物件

10、 渲染檢視

11、 返回渲染結果

12、 產生響應

2:快速入門

1:新建專案匯入jar包

4個基本jar + 2個日誌包+ 1個springmvc + 1個spring對web的支援包+jsp 4

2:建立和引入配置檔案

引入log4J的配置檔案

建立springmvc的配置檔案

3:配置springmvc的配置檔案

1)配置前端控制器

在web.xml中配置springmvc的前端控制器,並指定springmvc的配置檔案位置,

其實springmvc的配置檔案就是配置一個servlet, 同時指定請求的風格 ,

注意 : 因為springmvc是表現層框架,所以在專案啟動的時候就需要載入配置檔案。

1)配置springmvc檔案

需要引入mvc約束:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop
="http://www.springframework.org/schema/aop" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">

配置對映器:BeanNameUrlHandlerMapping

配置介面卡: SimpleControllerHandlerAdapter

配置Handler: 手動編寫, id或者name 作為Handler作為請求的處理器

配置檢視解析器:InternalResourceViewResolver

4:編寫controller及配置

其實controller就是一個簡單的類,想變成控制器的話,需要實現一個Controller的介面,並重寫裡面的方法,其實這個介面僅僅只有一個方法,預設就會去呼叫這個方法

5:請求流程回顧

3:springMVC的預設配置

在springmvc的原始碼配置檔案中有很多的預設配置檔案。可以到springmvc包下面的properties中檢視。

已經關於對映器和介面卡都已經有了相關的預設配置,同樣試圖解析器也有了預設的配置,

如果不配置檢視解析器的話,則在controller,需要寫頁面的全稱,預設的路徑是web目錄。

在springmvc的預設配置檔案中,對映器,介面卡,檢視解析器都已經有了預設的配置,可以不用自己配置

注意:當使用springmvc的檢視解析器預設配置的時候,就不能返回檢視名稱了,而是要返回全路徑。

或者在新增檢視名稱的時候,寫全路徑即可

如:mv.setViewName(“forward:/WEB-INF/views/hello.jsp”)

4:springMVC的註解驅動

使用springMVC的註解驅動,簡化配置

需要開啟springmvc的註解驅動和配置掃描包。

注意:涉及到註解的話就要匯入AOP的包。同時要將這個類宣告為控制器 。

5:@RequestMapping詳解

1:標準url

2:限定請求方式

6:SpringMVC封裝請求引數

1:繫結Servlet內建物件

2:接受資料型別

當客戶端有資料傳遞到伺服器端的時候,伺服器端也確實需要這個引數,那麼可以在對應的方法中,通過在方法引數列表中宣告來接受。

注意:此時在引數列表中宣告的引數名稱應該是傳遞過來的key,名稱要保證一致,如果不一致,可以使用@RequestParam(“name”)註解進行宣告;

3:@RequestParam繫結引數

當客戶端有資料傳遞到伺服器端的時候,可以直接在對應的方法中,通過在方法引數列表中宣告來接受,springmvc自動接受,然後封裝到對應的變數中

注意:一定要保證傳遞過來的key和方法宣告中的形參保持一致,如果不一致將接受不到,此時可以使用@RequestParam(“name”)註解進行宣告

註解中name就是傳遞過來值的key,也可以寫成@RequestParam(value=“name”)

4:@ CookieValue,獲取cookie的值

5:POJO物件繫結引數

SpringMVC會將請求過來的引數名和POJO實體中的屬性名進行匹配,如果名稱一致,將把值填充到物件中。

不需要自己進行接受封裝,spring會將引數直接封裝在pojo物件中,只需要在對應方法的引數列表中宣告需要接受的物件型別即可,同時還會將物件新增到請求域中。

如果在客戶端多出了一些物件無法封裝的資料,此時則需要自己在方法的引數列表中進行宣告,物件只封裝那些可以封裝的引數。

比如在新增使用者和修改使用者的時候,就不需要自己在去接受了。

6: 使用HashMap封裝資料

6:總結:

Springmvc接受引數總結:

1、引數很少,可以直接在方法的引數列表中直接進行宣告即可,注意傳遞的引數key需要和列表中的形參一致,如果不一致需要使用@RequestParam(“name”)來宣告

2、引數比較多的話,可以封裝成物件,此時可以在方法的引數列表中宣告物件來接受

3、引數較多,使用1個物件無法完成接受的話,可以先試用物件接受,然後在物件後面繼續宣告

4、引數比較多,使用物件無法簡潔封裝的話,這個時候可以使用HashMap來實現封裝,但是在HashMap前面需要使用@RequestParam來告訴框架需要將引數封裝在Map中

7:SpringMVC與Struts2的區別