<link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>
java modelandview是什麼,讓我們一起了解一下?
modelandview是當控制器處理完請求時,會將包含視圖名稱或視圖對象以及一些模型屬性的ModelAndView對象返回到DispatcherServlet。因此,經常需要在控制器中構造ModelAndView對象。ModelAndView類提供了幾個重載的構造器和一些方便的方法,讓你可以根據自己的喜好來構造ModelAndView對象。這些構造器和方法以類似的方式支持視圖名稱和視圖對象。當你只有一個模型屬性要返回時,可以在構造器中指定該屬性來構造ModelAndView對象。
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表達式語言 a t t r i b u t e N a m e 或 者 C 標 籤 庫 的 attributeName或者C標籤庫的 attributeName或者C標籤庫的{name } 來獲取並展示ModelAndView中的數據。
實戰操作,示例代碼如下:
package com.itmyhome; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; @Controller public class Login { @RequestMapping(value="login") public ModelAndView login(){ ModelAndView mav = new ModelAndView(); mav.setViewName("welcome"); //返回的文件名 mav.addObject("message","hello kitty"); //List List list = new ArrayList(); list.add("java"); list.add("c++"); list.add("oracle"); mav.addObject("bookList", list); //Map Map map = new HashMap(); map.put("zhangsan", "北京"); map.put("lisi", "上海"); map.put("wangwu", "深圳"); mav.addObject("map",map); return mav; } }