a. 前端控制器(DispatcherServlet) 前端
本質上是一個Servlet,至關於一箇中轉站,全部的訪問都會走到這個Servlet中,再根據配置進行中轉到相應的Handler中進行處理,獲取到數據和視圖後,再使用相應視圖作出響應。 java
b.處理器映射器(HandlerMapping) web
本質上就是一段映射關係,將訪問路徑和對應的Handler存儲爲映射關係,再須要時供前端控制器查閱。 spring
c.處理器適配器(HandlerAdapter) 瀏覽器
本質上是一個適配器,能夠根據要求找到對應的Handler來運行。前端控制器經過處理器映射器找到對應的Handler信息以後,將請求響應和對應的Handler信息交由處理器適配器處理,處理器適配器找到真正Handler執行後,將結果即modelAndview返回給前端控制器。 bash
d.視圖解析器(ViewResolver) 服務器
本質上也是一種映射關係,能夠將試圖名稱映射到真正的視圖地址。前端控制器調用處理器適配完成後獲得modle和view,將view信息傳給視圖解析器獲得真正的view。 mvc
e.視圖渲染(View) app
本質上就是將handler處理器中返回的model數據嵌入到視圖解析器解析後獲得jsp頁面中,向客戶端作出響應 jsp
圖解:
1.建立Web項目,並導入SpringMVC相關開發包。
2.配置前端控制器:
本質上是一個servlet,再當前web項目中配置該servlet
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>複製代碼
3.生成SpringMVC的核心配置文件
SpringMVC默認會自動再web應用的WEB-INF目錄下去尋找[前端控制器ServletName]-servlet.xml做爲當前SpringMVC的核心配置文件。
建立這個文件,這個文件自己就是Spring的配置文件,因此導入Spring相關的約束信息,包括beans、context、mvc
4.建立處理器,編寫代碼
想要開發一個處理器,寫一個類實現Controller接口,在其中的handlerRequest中編寫代碼處理請求,並將處理好的數據和目標視圖封裝到ModelAndView中返回
5.配置處理器映射器中的路徑和處理器的映射關係
6.配置視圖解析器
7.開發視圖
8.發佈應用,經過瀏覽器訪問
總體流程:
SpringMVC默認在和web.xml相同的位置即WEB-INF目錄下尋找核心配置文件,文件名默認[前端控制器Servlet-name]-servlet.xml 若是須要,能夠經過配置,手動指定核心配置文件的位置,和文件的名稱:
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:/springmvc-servlet.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>複製代碼
SpringMVC支持使用註解方式配置,比配置文件方式更加的靈活易用,是SpringMVC使用的主流模式。
1 在配置文件中開啓SpringMVC的註解模式
2.使用註解開發Controller
3.發佈應用,經過瀏覽器訪問
4.總體流程
5.SpringMVC註解方式工做原理
a. 當服務器啓動時,先會加載web.xml,以後經過引入核心配置文件加載springmvc-servlet.xml。就會解析該xml配置文件。
b. 當解析到包掃描時,掃描指定的包,並將含有@Controller註解的類解析爲處理器。
c.若是配置過mvc:annotation-driver/就會解析Spring-MVC註解
d.解析@RequestMapping(value="/hello.action"),將指定的地址和當前方法的映射關係進行保存。
e.當用戶發出請求訪問一個地址時,SpringMVC尋找該地址映射關係,若是存在,則找到響應處理器響應方法執行,若是找不到,則報404。
歡迎你們有興趣的能夠關注個人公衆號【java小瓜哥的分享平臺】,文章都會在裏面更新,還有各類java的資料都是免費分享的。但願與你們一塊兒進步努力!