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不是真正的檢視物件,是檢視名稱
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中