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