2 回答

TA貢獻(xiàn)1828條經(jīng)驗 獲得超3個贊
MVC(Model-View-Controller)三元組的概念:
Model(模型):數(shù)據(jù)模型,提供要展示的數(shù)據(jù),因此包含數(shù)據(jù)和行為,可以認(rèn)為是領(lǐng)域模型或JavaBean組件(包含數(shù)據(jù)和行為),不過現(xiàn)在一般都分離開來:Value Object(數(shù)據(jù)) 和 服務(wù)層(行為)。也就是模型提供了模型數(shù)據(jù)查詢和模型數(shù)據(jù)的狀態(tài)更新等功能,包括數(shù)據(jù)和業(yè)務(wù)。
View(視圖):負(fù)責(zé)進(jìn)行模型的展示,一般就是我們見到的用戶界面,客戶想看到的東西。
Controller(控制器):接收用戶請求,委托給模型進(jìn)行處理(狀態(tài)改變),處理完畢后把返回的模型數(shù)據(jù)返回給視圖,由視圖負(fù)責(zé)展示。 也就是說控制器做了個調(diào)度員的工作,。

TA貢獻(xiàn)1869條經(jīng)驗 獲得超4個贊
Spring Web MVC 處理Http請求的大致過程:
一旦Http請求到來,DispatcherSevlet將負(fù)責(zé)將請求分發(fā)。DispatcherServlet可以認(rèn)為是Spring提供的前端控制器,所有的請求都有經(jīng)過它來統(tǒng)一分發(fā)。
在DispatcherServlet將請求分發(fā)給Spring Controller之前,需要借助于Spring提供的HandlerMapping定位到具體的Controller。HandlerMapping是這樣一種對象,它能夠完成客戶請求到Controller之間的映射。在Struts中,這種映射是通過struts-config.xml文件完成的。其中,Spring為Controller接口提供了若干實現(xiàn),例如Spring默認(rèn)使用的BeanNameUrlHandlerMapping。還有,SimpleUrlHandlerMapping,CommonsPathMapHandlerMapping。
Spring Controller將處理來自DispatcherServlet的請求。Spring的Controller類似于struts的Action,能夠接受HttpServletRequest和HttpServletResponse。Spring為Controller接口提供了若干實現(xiàn)類,位于org.springframework.web.servlet.mvc包中。由于Controller需要為并發(fā)用戶處理上述請求,因此實現(xiàn)Controller接口時,必須保證線程安全并且可重用。Controller將處理客戶請求,這和Struts Action 扮演的角色是一致的。
一旦Controller處理完客戶請求,則返回ModelAndView對象給DispatcherServlet前端控制器。ModelAndView中包含了模型(Model)和視圖(View)。從宏觀角度考慮,DispatcherServlet是整個Web應(yīng)用的控制器;從微觀角度考慮,Controller是單個Http請求處理過程中的控制器,而ModelAndView是Http請求過程中返回的模型和視圖。前端控制器返回的視圖可以是視圖的邏輯名,或者實現(xiàn)了View接口的對象。View對象能夠渲染客戶響應(yīng)結(jié)果。其中,ModelAndView中的模型能夠供渲染View時使用。借助于Map對象能夠存儲模型。
如果ModelAndView返回的視圖只是邏輯名,則需要借助Spring提供的視圖解析器(ViewResoler)在Web應(yīng)用中查找View對象,從而將響應(yīng)結(jié)果渲染給客戶。
DispatcherServlet將View對象渲染出的結(jié)果返回個客戶。
- 2 回答
- 0 關(guān)注
- 884 瀏覽
添加回答
舉報