Model、ModelMap、ModelAndView的作用及區(qū)別
Model和ModelAndView這兩個(gè)類在spring的視圖解析時(shí)作用及區(qū)別1、Model是用來傳輸數(shù)據(jù)的,不會進(jìn)行業(yè)務(wù)的尋址 2、ModelAndView可以進(jìn)行業(yè)務(wù)尋址(就是設(shè)置對應(yīng)的要請求的靜態(tài)文件,靜態(tài)文件類似于jsp文件) 最大的區(qū)別:Model每一次請求可以自動創(chuàng)建,ModelAndView是需要我們自己去new的 Model方法如果在控制層上的方法聲明了注解@ResponseBody,則會直接將返回值輸出到頁面,Model是一個(gè)接口,實(shí)現(xiàn)類為ExtendModelMap,繼承了ModelMap類。
model可以用來接收各種類型的數(shù)據(jù),如果用來接收一組數(shù)據(jù)list,那么這個(gè)時(shí)候的model實(shí)際上是ModelMap ModelMap方法ModelMap對象主要用于傳遞控制方法處理數(shù)據(jù)到結(jié)果頁面(也就是把結(jié)果頁面上需要的數(shù)據(jù)放到ModelMap對象中就可以了) 作用類似于request對象的setAttribute方法的作用:在一個(gè)請求過程中傳遞處理的數(shù)據(jù) ModelMap本身不能設(shè)置頁面跳轉(zhuǎn)的URL地址名或者物理跳轉(zhuǎn)地址,此時(shí)可以通過控制器方法的字符串返回值來設(shè)置跳轉(zhuǎn)URL地址別名或者物理跳轉(zhuǎn)地址 ModelAndView方法添加模型數(shù)據(jù)用addObject; ModelAndView 對象有兩個(gè)作用: (1)設(shè)置轉(zhuǎn)向地址,這也是ModelAndView和ModelMap的主要區(qū)別.設(shè)置方式如下所示:
或者通過setViewName方式:
(2)將控制器方法中處理的結(jié)果數(shù)據(jù)傳遞到結(jié)果頁面(也就是把在結(jié)果頁面上需要的數(shù)據(jù)放到ModelAndView對象中即可) 其作用類似于request對象的setAttribute方法的作用,用來在一個(gè)請求過程中傳遞處理的數(shù)據(jù)。通過以下方法向頁面?zhèn)鬟f參數(shù):
在jsp中:也是可以通過el表達(dá)式語言attributeName或者C標(biāo)簽庫的{name } 來獲取并展示ModelAndView中的數(shù)據(jù)。 ModelAndView的實(shí)例是需要我們手動new的,這也是和ModelMap的一個(gè)區(qū)別。 記住有一個(gè)需要返回對象,一個(gè)需要返回的是地址路徑。 |
|