怎麼使用Model、ModelMap和ModelAndView

在SpringMVC中,調用方法前會先建立一個隱含的數據模型,做爲模型數據的存儲容器.

也就是說在每次的先後端請求時,會攜帶一個揹包,無論你有沒有用到,這個揹包是存在的,用來存放咱們交互的數據的值html

有個 @ModelAttribute 註解,意思是在請求方法調用以前,會優先執行被這個註解修飾的方法前端


在前端向後端請求時,Spring 就會自動建立好 Model 和 ModelMap 實例,咱們只須要使用便可.java


Model
1、理解

Model 是一個接口,public class ExtendedModelMap extends ModelMap implements Model ,經過 .attribue() 添加數據進揹包,存儲的數據域範圍是 requestScope segmentfault

經過 Controller 來返回目標頁面.後端

2、代碼
@RequestMapping(value = "/index")
    public String index1(Model model) {
        model.addAttribute("result", "後臺返回index1");
        return "result";
}
ModelMap
1、理解

經過 .attribue() 添加數據進揹包,做用和 requestsetAttribute 相似,用來傳遞請求處理的數據,做用域範圍 requestScope app

經過 Controller 來返回目標頁面.jsp

2、代碼
public String xxxxmethod(String someparam,ModelMap model)
{
     //省略方法處理邏輯若干
     //將數據放置到 ModelMap 對象 model 中,第二個參數能夠是任何java類型
      model.addAttribute("key",someparam);
         ......
     //返回跳轉地址
      return "success";
}
ModelAndView
1、理解

Model 和 ModelMap 的結合體,有多種重載的構造方法,能夠在構造方法中傳入參數指定跳轉到的目標頁面,也能夠經過 ModelAndView 實例對象的方法指定,最後返回 實例對象 便可spa

2、代碼
@RequestMapping("/index")
    public ModelAndView testModelAndView(){
        //建立一個模型視圖對象
        ModelAndView mav = new ModelAndView();
        // ......    
        // //將數據放置到 ModelAndView 對象 view 中,第二個參數能夠是任何 java 類型
        mav.addObject("cs", cs);
        // 放入 jsp / html 路徑
        mav.setViewName("lankeren");
         //返回 ModelAndView 對象 mav
        return mav;
    }
相關文章
相關標籤/搜索