SPRING框架中ModelAndView、Model、ModelMap區(qū)別

原博客鏈接:SPRING框架中ModelAndView、Model、ModelMap區(qū)別

注意:如果方法聲明了注解@ResponseBody ,則會直接將返回值輸出到頁面。

首先介紹ModelMap[Model]和ModelAndView的作用

Model 是一個接口, 其實現(xiàn)類為ExtendedModelMap,繼承了ModelMap類。

ModelMap
ModelMap對象主要用于傳遞控制方法處理數(shù)據(jù)到結(jié)果頁面,也就是說我們把結(jié)果頁面上需要的數(shù)據(jù)放到ModelMap對象中即可,他的作用類似于request對象的setAttribute方法的作用,用來在一個請求過程中傳遞處理的數(shù)據(jù)。通過以下方法向頁面?zhèn)鬟f參數(shù):
addAttribute(String key,Object value);
在頁面上可以通過el變量方式$key或者bboss的一系列數(shù)據(jù)展示標簽獲取并展示modelmap中的數(shù)據(jù)。
modelmap本身不能設置頁面跳轉(zhuǎn)的url地址別名或者物理跳轉(zhuǎn)地址,那么我們可以通過控制器方法的返回值來設置跳轉(zhuǎn)url地址別名或者物理跳轉(zhuǎn)地址。

ModelAndView
ModelAndView對象有兩個作用:
作用一 設置轉(zhuǎn)向地址,如下所示(這也是ModelAndView和ModelMap的主要區(qū)別)
ModelAndView view = new ModelAndView("path:ok");

作用二 用于傳遞控制方法處理結(jié)果數(shù)據(jù)到結(jié)果頁面,也就是說我們把需要在結(jié)果頁面上需要的數(shù)據(jù)放到ModelAndView對象中即可,他的作用類似于request對象的setAttribute方法的作用,用來在一個請求過程中傳遞處理的數(shù)據(jù)。通過以下方法向頁面?zhèn)鬟f參數(shù):
addObject(String key,Object value);

在頁面上可以通過el變量方式$key或者bboss的一系列數(shù)據(jù)展示標簽獲取并展示ModelAndView中的數(shù)據(jù)。

作用介紹完了后,接下來介紹使用方法

ModelMap
ModelMap的實例是由bboss mvc框架自動創(chuàng)建并作為控制器方法參數(shù)傳入,用戶無需自己創(chuàng)建。

public String xxxxmethod(String someparam,ModelMap model)
{
     //省略方法處理邏輯若干
      //將數(shù)據(jù)放置到ModelMap對象model中,第二個參數(shù)可以是任何java類型
      model.addAttribute("key",someparam);
     ......
     //返回跳轉(zhuǎn)地址
      return "path:handleok";
}

ModelAndView

ModelAndView的實例是由用戶手動創(chuàng)建的,這也是和ModelMap的一個區(qū)別。

public ModelAndView xxxxmethod(String someparam)
{
     //省略方法處理邏輯若干
      //構(gòu)建ModelAndView實例,并設置跳轉(zhuǎn)地址
      ModelAndView view = new ModelAndView("path:handleok");
      //將數(shù)據(jù)放置到ModelAndView對象view中,第二個參數(shù)可以是任何java類型
      view.addObject("key",someparam);
     ......
     //返回ModelAndView對象view
      return view;
}

到此bboss mvc中ModelMap和ModelAndView兩個對象的作用和使用方法介紹完畢

如下為我自己寫的測試代碼

@RequestMapping(value = "/demo",method = RequestMethod.GET)
    public ModelAndView getBusinessIdListByIp(@RequestParam("ip") String ip,@RequestParam("phoneId") String phoneId,Model model){
        ModelAndView mav = new ModelAndView();
        model.addAttribute("ip", ip);
        model.addAttribute("phoneId", phoneId);
        mav.addObject(model);
        mav.setViewName("user/mav");
        return mav;
    }
    
    @RequestMapping(value = "/demo2",method = RequestMethod.GET)
    public ModelAndView getBusinessIdListByIp(){
        return new ModelAndView("user/mav","key",new String("makeHappy"));
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 22年12月更新:個人網(wǎng)站關(guān)停,如果仍舊對舊教程有興趣參考 Github 的markdown內(nèi)容[https://...
    tangyefei閱讀 35,412評論 22 257
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,734評論 18 399
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,094評論 25 709
  • 今天我去學校了,在學校里吃餅了。放學我媽媽和鄭石哥哥一起來接我了,我們就回書店了。然后小孩兒們寫完作業(yè),所有的媽媽...
    吳卓逸閱讀 309評論 0 1
  • 昨晚猝不及防看到了我暗戀十年的男生曬到朋友圈的結(jié)婚證,我一下子蒙圈了,什么狀況,看到新娘的名字,我終于恍惚記起來,...
    柔軟的刺猬77閱讀 512評論 1 1

友情鏈接更多精彩內(nèi)容