java modelandview是什么,讓我們一起了解一下?
modelandview是當(dāng)控制器處理完請(qǐng)求時(shí),會(huì)將包含視圖名稱或視圖對(duì)象以及一些模型屬性的ModelAndView對(duì)象返回到DispatcherServlet。因此,經(jīng)常需要在控制器中構(gòu)造ModelAndView對(duì)象。ModelAndView類提供了幾個(gè)重載的構(gòu)造器和一些方便的方法,讓你可以根據(jù)自己的喜好來構(gòu)造ModelAndView對(duì)象。這些構(gòu)造器和方法以類似的方式支持視圖名稱和視圖對(duì)象。當(dāng)你只有一個(gè)模型屬性要返回時(shí),可以在構(gòu)造器中指定該屬性來構(gòu)造ModelAndView對(duì)象。
ModelAndView的使用方法是怎樣的?
添加模型數(shù)據(jù)用addObject,設(shè)置視圖setViewName。
ModelAndView 對(duì)象有兩個(gè)作用:
1、設(shè)置轉(zhuǎn)向地址,這也是ModelAndView和ModelMap的主要區(qū)別。設(shè)置方式如下所示:
ModelAndView?view?=?new?ModelAndView("path:student");
或者通過setViewName方式:
public?void?setViewName(String?viewName){...}
2、將控制器方法中處理的結(jié)果數(shù)據(jù)傳遞到結(jié)果頁面,也就是把在結(jié)果頁面上需要的數(shù)據(jù)放到ModelAndView對(duì)象中即可,其作用類似于request對(duì)象的setAttribute方法的作用,用來在一個(gè)請(qǐng)求過程中傳遞處理的數(shù)據(jù)。通過以下方法向頁面?zhèn)鬟f參數(shù):
public?ModelAndView?addObject(String?attributeName,?Object?attributeValue){...} public?ModelAndView?addObject(Object?attributeValue){...}
在jsp中:也是可以通過el表達(dá)式語言 a t t r i b u t e N a m e 或 者 C 標(biāo) 簽 庫 的 attributeName或者C標(biāo)簽庫的 attributeName或者C標(biāo)簽庫的{name } 來獲取并展示ModelAndView中的數(shù)據(jù)。
實(shí)戰(zhàn)操作,示例代碼如下:
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;?? ????}?? }
以上就是小編今天的分享了,希望可以幫助到大家。