Model、ModelMap、ModelAndView的作用及區別


##Model、ModelMap、ModelAndView的作用及區別 對於MVC框架,控制器controller執行業務邏輯 用於產生模型數據Model 視圖view用來渲染模型數據

Model和ModelAndView這兩個類在spring的視圖解析時作用及區別

1、Model是用來傳輸數據的,不會進行業務的尋址

2、ModelAndView可以進行業務尋址(就是設置對應的要請求的靜態文件,靜態文件類似於jsp文件)

最大的區別:Model每一次請求可以自動創建,ModelAndView是需要我們自己去new的

Model方法

如果在控制層上的方法聲明了注解@ResponseBody,則會直接將返回值輸出到頁面,Model是一個接口,實現類為ExtendModelMap,繼承了ModelMap類。

public class ExtendModelMap extends ModelMap implements Model

model可以用來接收各種類型的數據,如果用來接收一組數據list,那么這個時候的model實際上是ModelMap

ModelMap方法

ModelMap對象主要用於傳遞控制方法處理數據到結果頁面(也就是把結果頁面上需要的數據放到ModelMap對象中就可以了)

作用類似於request對象的setAttribute方法的作用:在一個請求過程中傳遞處理的數據

ModelMap本身不能設置頁面跳轉的URL地址名或者物理跳轉地址,此時可以通過控制器方法的字符串返回值來設置跳轉URL地址別名或者物理跳轉地址

ModelAndView方法

添加模型數據用addObject;
設置視圖setViewName;

ModelAndView 對象有兩個作用:

(1)設置轉向地址,這也是ModelAndView和ModelMap的主要區別.設置方式如下所示:

ModelAndView view = new ModelAndView("path:student");

或者通過setViewName方式:

public void setViewName(String viewName){...}

(2)將控制器方法中處理的結果數據傳遞到結果頁面(也就是把在結果頁面上需要的數據放到ModelAndView對象中即可)

其作用類似於request對象的setAttribute方法的作用,用來在一個請求過程中傳遞處理的數據。通過以下方法向頁面傳遞參數:

public ModelAndView addObject(String attributeName, Object attributeValue){...}
public ModelAndView addObject(Object attributeValue){...}

在jsp中:也是可以通過el表達式語言attributeName或者C標簽庫的{name } 來獲取並展示ModelAndView中的數據。

ModelAndView的實例是需要我們手動new的,這也是和ModelMap的一個區別。
而且,ModelAndView 可以自己尋址,只需要return 返回其對象即可。

記住有一個需要返回對象,一個需要返回的是地址路徑。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM