1:首先用戶端發送一個
http請求,web伺服器接受這個請求,然後web容器交給
DispatcherSevlet處理。
2:
DispatcherSevlet将負責将請求分發。DispatcherSevlet可以認為是spring提供的前端控制器,所有的請求都要經過他來進行統一的分發。
3:在DispatcherSevlet将請求分發給
spring controller之前,需要借助于spring提供的HandleMapping定位到具體的controller。(
HandleMapping是這樣的一種對象,他能夠完成客戶請求和controller之間的映射。在
structs中,這種映射是通過struts-config.xml檔案完成的。spring為controller提供了若幹實作,例如:BeanNameUrlHandlerMappin g有,SimpleUrlHandlerMapping,CommonsPathMapHandlerMap ping。)
4:
spring controller将處理來自DispatcherSevlet的請求。spring的controller類似于
structs的action。能
夠接受HttpServletRequest和HttpServletResponse。spring為controller提供了若幹實作類,由于controller要為
并發使用者處理上述請求,是以實作controller接口時,
必須保證線程安全并且可重用。controller将處理使用者請求,這和structs中的action是一緻的。
5:一旦controller處理完使用者請求,則傳回
ModelAndView對象給DispatcherSevlet前端控制。ModelAndView包含了
模型(model)和視圖(view)。從宏觀角度來看,DispatcherSevlet是整個web應用的控制器。從微觀來看,controller是單個http請求的控制器。而
ModelAndView是http請求過程中傳回的模型和視圖。6:ModelAndView中包含了
視圖邏輯名與模型資料資訊。DispatcherSevlet通過
ViewResolver完成邏輯視圖名到真實視圖對象的解析工作。
7:當得到真實對象的view,DispatcherServlet就使用這個View對象對
ModelAndView中的模型資料進行視圖渲染。然後将渲染後的結果傳回給客戶。
文章轉載:http://blog.sina.com.cn/s/blog_e3734cfe0102xmsf.html