SpringMVC

SpringMVC 使用

需要在 web.xml 中配置 DispatcherServlet 。並且需要配置 Spring 監聽器ContextLoaderListener

<listener>
	<listener-class>org.springframework.web.context.ContextLoaderListener
	</listener-class>
</listener>
<servlet>
	<servlet-name>springmvc</servlet-name>
	<servlet-class>org.springframework.web.servlet.DispatcherServlet
	</servlet-class>	<!-- 如果不設置init-param標籤,則必須在/WEB-INF/下創建xxx-servlet.xml文件,其中xxx是servlet-name中配置的名稱。 -->
	<init-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:spring/springmvc-servlet.xml</param-value>
	</init-param>
	<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
	<servlet-name>springmvc</servlet-name>
	<url-pattern>/</url-pattern>
</servlet-mapping>

SpringMVC 工作原理

 

流程說明(重要):

 

(1)客戶端(瀏覽器)發送請求,直接請求到 DispatcherServlet。

(2)DispatcherServlet 根據請求信息調用 HandlerMapping,解析請求對應的 Handler。

(3)解析到對應的 Handler(也就是我們平常說的 Controller 控制器)後,開始由 HandlerAdapter 適配器處理。

(4)HandlerAdapter 會根據 Handler 來調用真正的處理器開處理請求,並處理相應的業務邏輯。

(5)處理器處理完業務後,會返回一個 ModelAndView 對象,Model 是返回的數據對象,View 是個邏輯上的 View。

(6)ViewResolver 會根據邏輯 View 查找實際的 View。

(7)DispaterServlet 把返回的 Model 傳給 View(視圖渲染)。

(8)把 View 返回給請求者(瀏覽器)

SpringMVC 重要組件說明

1、前端控制器DispatcherServlet(不需要工程師開發),由框架提供(重要)

作用:Spring MVC 的入口函數。接收請求,響應結果,相當於轉發器,中央處理器。有了 DispatcherServlet 減少了其它組件之間的耦合度。用戶請求到達前端控制器,它就相當於mvc模式中的c,DispatcherServlet是整個流程控制的中心,由它調用其它組件處理用戶的請求,DispatcherServlet的存在降低了組件之間的耦合性。

2、處理器映射器HandlerMapping(不需要工程師開發),由框架提供

作用:根據請求的url查找Handler。HandlerMapping負責根據用戶請求找到Handler即處理器(Controller),SpringMVC提供了不同的映射器實現不同的映射方式,例如:配置文件方式,實現接口方式,註解方式等。

3、處理器適配器HandlerAdapter

作用:按照特定規則(HandlerAdapter要求的規則)去執行Handler 通過HandlerAdapter對處理器進行執行,這是適配器模式的應用,通過擴展適配器可以對更多類型的處理器進行執行。

4、處理器Handler(需要工程師開發)

注意:編寫Handler時按照HandlerAdapter的要求去做,這樣適配器纔可以去正確執行Handler Handler 是繼DispatcherServlet前端控制器的後端控制器,在DispatcherServlet的控制下Handler對具體的用戶請求進行處理。 由於Handler涉及到具體的用戶業務請求,所以一般情況需要工程師根據業務需求開發Handler。

5、視圖解析器View resolver(不需要工程師開發),由框架提供

作用:進行視圖解析,根據邏輯視圖名解析成真正的視圖(view) View Resolver負責將處理結果生成View視圖,View Resolver首先根據邏輯視圖名解析成物理視圖名即具體的頁面地址,再生成View視圖對象,最後對View進行渲染將處理結果通過頁面展示給用戶。 springmvc框架提供了很多的View視圖類型,包括:jstlView、freemarkerView、pdfView等。 一般情況下需要通過頁面標籤或頁面模版技術將模型數據通過頁面展示給用戶,需要由工程師根據業務需求開發具體的頁面。

6、視圖View(需要工程師開發)

View是一個接口,實現類支持不同的View類型(jsp、freemarker、thymeleaf...)

注意:處理器Handler(也就是我們平常說的Controller控制器)以及視圖層view都是需要我們自己手動開發的。其他的一些組件比如:前端控制器DispatcherServlet、處理器映射器HandlerMapping、處理器適配器HandlerAdapter等等都是框架提供給我們的,不需要自己手動開發

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