大家都知道對于spring mvc架構,最核心的就是DispatcherServlet。
那麼DispatcherServlet到底能幹些什麼活呢,其實DispatcherServlet就是負責協調群組織不同元件以完成請求處理并傳回響應的工作。
spring mvc 處理請求的過程簡單如下:
1.一個請求過來,首先去比對DispatcherServlet的請求映射路徑(web.xml中可配置,如:
<servlet>
<servlet-name>springServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:/applicationContext-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
),如果比對成功,則web容器将該請求轉交給DispatcherServlet進行處理;
2.DispatcherServlet接收到請求後,将根據請求資訊及HandlerMapping的配置找到處理請求的Handler;
3.通過HandlerAdapter對該Handler進行封裝,再以統一的擴充卡接口調用Hander;
4.Handler完成業務邏輯的處理後,傳回一個ModelAndView(包含視圖邏輯名和模型資料資訊)給DispatcherServlet;
5.DispatcherServlet借助ViewResoler完成邏輯視圖名到真實視圖對象的解析;
6.得到真實視圖對象View後,DispatcherServlet使用這個View對ModerAndView中的模型資料進行視圖渲染。
總結:可以發現整個過程DispatcherServlet擔任了協調群組織不同元件,完成請求處理并傳回響應的工作。