Model 模型層 (javaBean組件 = 領域模型(javaBean) + 業務層 + 持久層)
View 視圖層( html、jsp…)
Controller 控制層(委託模型層進行數據處理)
複製代碼
springmvc是一個web層mvc框架,相似struts2。
複製代碼
springmvc是spring的部分,其實就是spring在原有基礎上,又提供了web應用的mvc模塊。
複製代碼
實現機制:
struts2是基於過濾器實現的。
springmvc是基於servlet實現的。
運行速度:
由於過濾器底層是servlet,因此springmvc的運行速度會稍微比structs2快。
struts2是多例的
springmvc單例的
參數封裝:
struts2參數封裝是基於屬性進行封裝。
springmvc是基於方法封裝。顆粒度更細。
複製代碼
⑴ 用戶發送請求至DispatcherServlet。
⑵ DispatcherServlet收到請求調用HandlerMapping查詢具體的Handler。
⑶ HandlerMapping找到具體的處理器(具體配置的是哪一個處理器的實現類),生成處理器對象及處理器攔截器(HandlerExcutorChain包含了Handler以及攔截器集合)返回給DispatcherServlet。
⑷ DispatcherServlet接收到HandlerMapping返回的HandlerExcutorChain後,調用HandlerAdapter請求執行具體的Handler(Controller)。
⑸ HandlerAdapter通過適配調用具體的Handler(Controller即後端控制器)。
⑹ Controller執行完成返回ModelAndView(其中包含邏輯視圖和數據)給HandlerAdaptor。
⑺ HandlerAdaptor再將ModelAndView返回給DispatcherServlet。
⑻ DispatcherServlet請求視圖解析器ViewReslover解析ModelAndView。
⑼ ViewReslover解析後返回具體View(物理視圖)到DispatcherServlet。
⑽ DispatcherServlet請求渲染視圖(即將模型數據填充至視圖中) 根據View進行渲染視圖。
⑾ 將渲染後的視圖返回給DispatcherServlet。
⑿ DispatcherServlet將響應結果返回給用戶。
複製代碼
(1)前端控制器DispatcherServlet(配置便可)
功能:中央處理器,接收請求,本身不作任何處理,而是將請求發送給其餘組件進行處理。DispatcherServlet 是整個流程的控制中心。
(2)處理器映射器HandlerMapping(配置便可)
功能:根據DispatcherServlet發送的url請求路徑查找Handler
常見的處理器映射器:BeanNameUrlHandlerMapping,SimpleUrlHandlerMapping,
ControllerClassNameHandlerMapping,DefaultAnnotationHandlerMapping(不建議使用)
(3)處理器適配器HandlerAdapter(配置便可)
功能:按照特定規則(HandlerAdapter要求的規則)去執行Handler。
經過HandlerAdapter對處理器進行執行,這是適配器模式的應用,經過擴展多個適配器對更多類型的處理器進行執行。
常見的處理器適配器:HttpRequestHandlerAdapter,SimpleControllerHandlerAdapter,AnnotationMethodHandlerAdapter
(4)處理器Handler即Controller(程序猿編寫)
功能:編寫Handler時按照HandlerAdapter的要求去作,這樣適配器才能夠去正確執行Handler。
(5)視圖解析器ViewReslover(配置便可)
功能:進行視圖解析,根據邏輯視圖名解析成真正的視圖。
ViewResolver負責將處理結果生成View視圖,ViewResolver首先根據邏輯視圖名解析成物理視圖名即具體的頁面地址,再生成View視圖對象,最後對View進行渲染將處理結果經過頁面展現給用戶。
springmvc框架提供了多種View視圖類型,如:jstlView、freemarkerView、pdfView...
(6)視圖View(程序猿編寫)
View是一個接口,實現類支持不一樣的View類型(jsp、freemarker、pdf...)
複製代碼
引入相關依賴:spring的基本包、springmvc須要的spring-webmvc,日誌相關的slf4j-log4j12,jsp相關的jstl、servlet-api、jsp-api。html
由於DispatcherServlet自己就是一個Servlet,因此須要在web.xml配置。前端
1、使用默認加載springmvc配置文件的方式,必須按照如下規範:java
①命名規則:-servlet.xml ====> springmvc-servlet.xmlweb
②路徑規則:-servlet.xml必須放在WEB-INF下邊spring
2、若是要不按照默認加載位置,則須要在web.xml中經過標籤來指定springmvc配置文件的加載路徑,如上圖所示。後端
將自定義的 Controller 處理器配置到 spring 容器中交由 spring 容器來管理,由於這裏的 springmvc.xml 配置文件中處理器映射器配置的是 BeanNameUrlHandlerMapping ,根據名字可知這個處理器映射器是根據 bean (自定義Controller) 的 name 屬性值url去尋找執行類 Handler(Controller) , 因此bean的name屬性值便是要和用戶發送的請求路徑匹配的 url 。 設計模式
根據視圖解析路徑:WEB-INF/jsps/index.jspapi
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
複製代碼
功能:根據bean(自定義Controller)的name屬性的url去尋找執行類Controller。bash
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
複製代碼
功能:自定義的處理器(Controller)實現了Controller接口時,適配器就會執行Controller的具體方法。mvc
Controller接口中有一個方法叫handleRequest,也就是處理器方法。
所以,自定義的Controller要想被調用就必須實現Controller接口,重寫Controller接口中的處理器方法。
若是以爲這篇文章對你有幫助
麻煩幫忙點個贊或關注
這對我來講是一種很好的鼓勵
在此先謝謝各位
O(∩_∩)O
複製代碼