1. 程式人生 > >springmvc學習筆記(20)——Map和Model 以及ModelAndView

springmvc學習筆記(20)——Map和Model 以及ModelAndView

處理模型資料之Map,Model
在上一次的筆記中講到了使用ModelAndView作為返回值,可以輕鬆的返回資料並且指定轉發的頁面。 
其實我們也可以使用Map作為引數,將資料傳遞給頁面。直接上程式碼:

import org.springframework.ui.Model;
/
**
* 可以新增map型別的引數(或者Model型別,ModelMap型別)
* @param map
* @return
*/
@RequestMapping("/testMap")
public String testMap(Map<String, Object> map){
    map.put("names",   Arrays.asList("peter","tom","jack"));
    return "hello";
}
@RequestMapping("/testModel")
public String testMap(Model model){
    model.addAttribute("names",Arrays.asList("peter","tom","jack"));     
    return "hello";
}


程式碼解析: 
將Map或者Model作為引數傳給目標方法,然後把資料存入其中,然後就可以輕鬆的傳給頁面。 
底層實現原理:springmvc會將他們轉化為ModelAndView,viewName為hello,Model就是這的Map或者Model

前端獲取值:

names:${names }


無論是傳入Map還是Model作為引數,前端獲取值得方法都是一樣的。 
ModelAndView也是如此。 
關於ModelAndView
 

ModelAndView

ModelAndView 從字面上來看,就是模型和檢視。我們在Controller中,可以返回一個頁面,比如return "hello" 就是返回一個hello.jsp頁面。其實我們也可以返回ModelAndView這個物件.

ModelAndView 這個物件中可以儲存你要轉發的頁面以及你要返回的資料。 
假設現在有一個使用者想要你開啟一個叫hello.jsp的頁面,該頁面上顯示當前時間,那麼我們可以這樣做:

@RequestMapping("/testModelAndView")
    public ModelAndView testModelAndView(){
        String viewName = "hello";
        ModelAndView mv = new ModelAndView(viewName);
        mv.addObject("time", new Date());
        return mv;
    }


程式碼解析: 
viewName就是你要返回的介面,就相當於return "hello" 
addObject()就是把你要返回的資料加入到這個物件中。 
然後return ModelAndView,springmvc就幫你跳轉到hello這個介面,返回時間資料
在介面上使用${time}進行對內容的接收。