天天看點

SpringMvc處理請求流程

    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