SSM工作流程的大致理解
//不是根據原始碼來理解的,所以細節有省略..
首先從在瀏覽器輸入URl的那一刻開始
例如輸入
localhost:8080/MyProject/listCategory
初始化:
此時tomcat已經啟動,於是tomcat將請求交給相應的Servlet去執行
這裡可以看到web.xml,裡面有一個不是很熟悉的Servlet的名稱:DispatcherServlet,可以看到他是在SpringMVC包下面的.
Dispatcher顧名思義是分發的意思,所以,他是負責協調和組織不同元件完成請求處理並返回響應工作的"老大"
在tomcat啟動的同時,它會載入web.xml檔案裡面的相關配置,包括DispatcherServlet,與此同時SpringMVC的IOC容器也初始化完成
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsdView Code" version="2.5"> <!--Spring配置--> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!--SpringMVC設定--> <servlet> <servlet-name>Dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springMVC.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
找合適的handler:
DispatcherServlet 從容器中取出所有 HandlerMapping 例項(每個例項對應一個 HandlerMapping 介面的實現類)並遍歷,每個
HandlerMapping 會根據請求資訊,通過自己實現類中的方式去找到處理該請求的 Handler,比如Controller類中的方法
但是找到相應的handler之後DispatcherServlet他自己是執行不了的,需要HandlerAdapter,於是他取出HandlerAdapter元件,根據
handler選擇與之匹配的HandlerAdapter來處理, 處理完成得到 ModelAndView
解析成View
這裡會用到另外一個東西:InternalResourceViewResolver,由它把ModelAndView物件解析成View
然後 View 會呼叫 render() 方法再根據 ModelAndView 中的資料渲染出頁面
結束
剛好今天把SSM複習了,所以想把流程全部來一遍,便寫來了記一下,其實這中間還有許多細節,不過我覺得先對巨集觀有個瞭解吧
之後還是會把細節過一遍的