Spring Web MVC 的工做流程

Spring Web MVC 處理Http請求的大體過程: 一旦Http請求到來,DispatcherSevlet將負責將請求分發。 DispatcherServlet能夠認爲是Spring提供的前端控制器,全部的請求都有通過它來統一分發。 在DispatcherServlet將請求分發給Spring Controller以前,須要藉助於Spring提供的HandlerMapping定位到具體的Controller。 HandlerMapping是這樣一種對象,它可以完成客戶請求到Controller之間的映射。 在Struts中,這種映射是經過struts-config.xml文件完成的。 其中,Spring爲Controller接口提供了若干實現,例如Spring默認使用的BeanNameUrlHandlerMapping。 還有,SimpleUrlHandlerMapping,CommonsPathMapHandlerMapping。 Spring Controller將處理來自DispatcherServlet的請求。 Spring的Controller相似於struts的Action,可以接受HttpServletRequest和HttpServletResponse。 Spring爲Controller接口提供了若干實現類,位於org.springframework.web.servlet.mvc包中。 因爲Controller須要爲併發用戶處理上述請求,所以實現Controller接口時,必須保證線程安全而且可重用。 Controller將處理客戶請求,這和Struts Action 扮演的角色是一致的。 一旦Controller處理完客戶請求,則返回ModelAndView對象給DispatcherServlet前端控制器。 ModelAndView中包含了模型(Model)和視圖(View)。 從宏觀角度考慮,DispatcherServlet是整個Web應用的控制器; 從微觀角度考慮,Controller是單個Http請求處理過程當中的控制器,而ModelAndView是Http請求過程當中返回的模型和視圖。 前端控制器返回的視圖能夠是視圖的邏輯名,或者實現了View接口的對象。 View對象可以渲染客戶響應結果。其中,ModelAndView中的模型可以供渲染View時使用。 藉助於Map對象可以存儲模型。 若是ModelAndView返回的視圖只是邏輯名,則須要藉助Spring提供的視圖解析器(ViewResoler)在Web應用中查找View對象,從而將響應結果渲染給客戶。 DispatcherServlet將View對象渲染出的結果返回個客戶。
相關文章
相關標籤/搜索