Spring MVC處理的流程:
具體執行步驟如下:
1 首先用戶發送請求給前端控制器,前端控制器根據請求信息(如url)來決定選擇哪一個頁面控制器進行處理並把請求委托給它,即以前的控制器的控制邏輯部分;圖中的1、2步驟
2 頁面控制器接收到請求后,進行功能處理,首先需要收集和綁定請求參數到一個對象,這個對象在spring web mvc中叫命令對象,並進行驗證,然后將命令對象委托給業務對象進行處理;
處理完畢后返回一個ModelAndView(模型數據和邏輯視圖名);圖中3、4、5步驟
3 前端控制器收回控制權,然后根據返回的邏輯視圖名,選擇相應的視圖進行渲染,並把模型數據傳入以便視圖渲染;圖中的6、7步驟
4 前端控制器再次收回控制權,將響應返回給用戶,圖中的步驟8
Spring MVC 的運行原理
首先,用戶向服務器發送請求,請求被前端控制器DispatcherServet截獲
DispatcherServlet沒有業務處理的能力,調用HandlerMapping處理器映射器
HandlerMapping根據xml配置和注解找到具體的Handler,並將處理器執行鏈(包括Handler和攔截器數組)返回給DispatcherServlet
DispatcherServlet調用HandlerAdapter處理器適配器
HandlerAdapter經過適配器調用具體的處理器(Controller,也稱后端控制器)
Controller執行完返回ModleAndView
HandlerAdapter將ModleAndView返回給DispatcherServlet
DispatcherServlet將ModleAndView傳給ViewReslover視圖解析器
ViewReslover解析后返回具體的View
Dispatcher根據View進行視圖渲染(將Modle填充至View)
DispatcherServlet響應用戶
springMVC執行細節:
DispatcherServlet在執行時會加載默認的配置文件:DispatcherServlet.properties來加載相關組件
可以在springMVC-servlet.xml中更改配置:
<!-- 視圖解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp" /> </bean> <!-- 處理器映射器 --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean> <!-- 處理器適配器 --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"></bean>
也可以使用注解驅動來代替上面的 處理器映射器 和處理器適配器的配置:
<!-- 配置注解驅動 --> <mvc:annotation-driven />