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;?? ????}?? }
以上就是小編今天的分享了,希望可以幫助到大家。