1. 程式人生 > >springmvc請求處理詳解

springmvc請求處理詳解

控制器 接口

Spring Web MVC 處理的大致過程:
一旦到來,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是單個處理過程中的控制器,而ModelAndView是Http請求過程中返回的模型和視圖。前端控制器返回的視圖可以是視圖的邏輯名,或者實現了View接口的對象。View對象能夠渲染客戶響應結果。其中,ModelAndView中的模型能夠供渲染View時使用。借助於Map對象能夠存儲模型。
如果ModelAndView返回的視圖只是邏輯名,則需要借助Spring提供的視圖解析器(ViewResoler)在Web應用中查找View對象,從而將響應結果渲染給客戶。
DispatcherServlet將View對象渲染出的結果返回個客戶。


springmvc請求處理詳解