- HandlerMapping處理器對映器:建立地址與方法的對映。
HandlerMapping負責根據使用者請求url找到Handler即處理器,springmvc提供了不同的對映器實現不同的對映方式,例如:組態檔方式,實現介面方式,註解方式等。
- HandlerAdapter處理器介面卡:根據地址呼叫方法。
Handler 是繼DispatcherServlet前端控制器的後端控制器,在DispatcherServlet的控制下Handler對具體的使用者請求進行處理。
- ViewResolver 檢視解析器:處理ModelAndView資料和檢視。
ViewResolver通過HandlerAdapter對處理器進行執行,這是介面卡模式的應用,通過擴充套件介面卡可以對更多型別的處理器進行執行。
- 使用者傳送請求至前端控制器DispatcherServlet。
- DispatcherServlet收到請求呼叫HandlerMapping處理器對映器。
- 處理器對映器根據請求url找到具體的處理器,生成處理器物件及處理器攔截器(如果有則生成)一併返回給DispatcherServlet。
- DispatcherServlet通過HandlerAdapter處理器介面卡呼叫處理器。
- 執行處理器(Controller層,也叫後端控制器)。
- Controller執行完成返回資料和檢視(ModelAndView)。
- HandlerAdapter將controller執行結果ModelAndView返回給DispatcherServlet。
- DispatcherServlet將ModelAndView傳給ViewReslover檢視解析器。
- ViewReslover解析後返回具體的View檢視(JSP / HTML)。
- DispatcherServlet對View進行渲染檢視(即將模型資料填充至檢視中)。
- DispatcherServlet響應使用者,使用者看到介面和資料。
SpringMVC中預設提供的三大元件有可能過時,我們可以手動設定這三大元件,一般只需要設定ViewResolver 檢視解析器,設定它的字首prefix
和字尾suffix
。
<!--方式1:手動一個個設定 -->
<!-- 處理器對映器 -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
<!--處理器介面卡-->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
<!--方式2:設定處理器對映器和處理器介面卡 -->
<!-- 在選擇mvc標籤時,一定要選擇最後的路徑是/mvc的選項 -->
<!-- 這行設定可以替換掉上邊的兩行設定(一步步設定) -->
<mvc:annotation-driven/>
<!-- 設定檢視解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 字首和字尾 相當於 //WEB-INF/jsp/Xxx.jsp-->
<!--定義頁面路徑的字首-->
<property name="prefix" value="/WEB-INF/jsp/"/>
<!--定義頁面路徑的字尾-->
<property name="suffix" value=".jsp"/>
</bean>
mvc
標籤無效,標頭檔案模板。<mvc:annotation-driven/>
無效,可能是標頭檔案不對,下面是一個參考。
<?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: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/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">