1. 程式人生 > 其它 >SPRING框架中ModelAndView、Model、ModelMap區別

SPRING框架中ModelAndView、Model、ModelMap區別

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

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

Model 是一個介面, 其實現類為ExtendedModelMap,繼承了ModelMap類。 ModelMap ModelMap物件主要用於傳遞控制方法處理資料到結果頁面,也就是說我們把結果頁面上需要的資料放到ModelMap物件中即可,他的作用類似於request物件的setAttribute方法的作用,用來在一個請求過程中傳遞處理的資料。通過以下方法向頁面傳遞引數: addAttribute(String key,Object value); 在頁面上可以通過el變數方式$key或者bboss的一系列資料展示標籤獲取並展示modelmap中的資料。 modelmap本身不能設定頁面跳轉的url地址別名或者物理跳轉地址,那麼我們可以通過控制器方法的返回值來設定跳轉url地址別名或者物理跳轉地址。 ModelAndView

ModelAndView物件有兩個作用: 作用一 設定轉向地址,如下所示(這也是ModelAndView和ModelMap的主要區別) ModelAndView view = new ModelAndView("path:ok"); 作用二 用於傳遞控制方法處理結果資料到結果頁面,也就是說我們把需要在結果頁面上需要的資料放到ModelAndView物件中即可,他的作用類似於request物件的setAttribute方法的作用,用來在一個請求過程中傳遞處理的資料。通過以下方法向頁面傳遞引數: addObject(String key,Object value); 在頁面上可以通過el變數方式$key或者bboss的一系列資料展示標籤獲取並展示ModelAndView中的資料。 作用介紹完了後,接下來介紹使用方法
ModelMap ModelMap的例項是由bboss mvc框架自動建立並作為控制器方法引數傳入,使用者無需自己建立。

public String xxxxmethod(String someparam,ModelMap model)
{
     //省略方法處理邏輯若干
      //將資料放置到ModelMap物件model中,第二個引數可以是任何java型別
      model.addAttribute("key",someparam);
     ......
     //返回跳轉地址
      return "path:handleok";
}

ModelAndView

ModelAndView的例項是由使用者手動建立的,這也是和ModelMap的一個區別。

public ModelAndView xxxxmethod(String someparam)
{
     //省略方法處理邏輯若干
      //構建ModelAndView例項,並設定跳轉地址
      ModelAndView view = new ModelAndView("path:handleok");
      //將資料放置到ModelAndView物件view中,第二個引數可以是任何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"));
    }