SpringMVC中model,modelMap和modelAndView的区别
2018-01-28 14:31
721 查看
ModelMap[Model]和ModelAndView的作用
model
Model 是一个接口, 其实现类为ExtendedModelMap,继承了ModelMap类。ModelMap
ModelMap对象主要用于传递控制方法处理数据到结果页面,也就是说我们把结果页面上需要的数据放到ModelMap对象中即可,他的作用类似于request对象的setAttribute方法的作用,用来在一个请求过程中传递处理的数据。通过以下方法向页面传递参数:addAttribute(String key,Object value);
在页面上可以通过el变量方式$key或者bboss的一系列数据展示标签获取并展示modelmap中的数据。
modelmap本身不能设置页面跳转的url地址别名或者物理跳转地址,那么我们可以通过控制器方法的返回值来设置跳转url地址别名或者物理跳转地址。
ModelAndView
ModelAndView对象有两个作用:1.作用一 设置转向地址,如下所示(这也是ModelAndView和ModelMap的主要区别)
ModelAndView view = new ModelAndView(“path:ok”);
2.作用二 用于传递控制方法处理结果数据到结果页面,也就是说我们把需要在结果页面上需要的数据放到ModelAndView对象中即可,他的作用类似于request对象的setAttribute方法的作用,用来在一个请求过程中传递处理的数据。通过以下方法向页面传递参数:
addObject(String key,Object value);
在页面上可以通过el变量方式$key或者bboss的一系列数据展示标签获取并展示ModelAndView中的数据
ModelMap[Model]和ModelAndView区别:
Model只是用来传输数据的,并不会进行业务的寻址。ModelAndView却是可以进行业务寻址的,就是设置对应的要请求的静态文件,这里的静态文件指的是类似jsp的文件。
两者还有一个最大的区别,那就是Model是每一次请求都必须会带着的,但是ModelAndView是需要我们自己去新建的.
@RequestMapping(value = "/mergeModel") public ModelAndView mergeModel(Model model) { //model是每一次请求都必须会带着的 model.addAttribute("a", "a");//①添加模型数据 ModelAndView mv = new ModelAndView("success"); //ModelAndView是需要我们自己去新建的 mv.addObject("a", "update");//②在视图渲染之前更新③处同名模型数据 model.addAttribute("a", "new");//③修改①处同名模型数据 //视图页面的a将显示为"update" 而不是"new" return mv; }
使用方法:
ModelMapModelMap的实例是由bboss mvc框架自动创建并作为控制器方法参数传入,用户无需自己创建。
public String xxxxmethod(String someparam,ModelMap model) { //省略方法处理逻辑若干 String retVal = "user/index"; User user = new User(); user.setName("XXX"); model.addAttribute("user", user); //将数据放置到ModelMap对象model中,第二个参数可以是任何java类型 return retVal; //通过addAttribute()添加属性,在前端用${xxx.xx}调用 }
ModelAndView
ModelAndView的实例是由用户手动创建的,这也是和ModelMap的一个区别。
public ModelAndView xxxxmethod(String someparam) { //省略方法处理逻辑若干 //构建ModelAndView实例,并设置跳转地址 ModelAndView view = new ModelAndView("path:handleok"); //将数据放置到ModelAndView对象view中,第二个参数可以是任何java类型 /** * Model一个模型对象, * 主要包含spring封装好的model和modelMap,以及java.util.Map, * 当没有视图返回的时候视图名称将由requestToViewNameTranslator决定; * 响应的view应该也是该请求的view。等同于void返回。 */ @RequestMapping(value="/index3",method=RequestMethod.GET) public Map<String, String> index3(){ Map<String, String> map = new HashMap<String, String>(); map.put("1", "1"); //map.put相当于request.setAttribute方法 return map; }
java.util.Map
@RequestMapping("/login") public ModelAndView login(String name,String pass){ User user = userService.login(name,pwd); Map<String,Object> data = new HashMap<String,Object>(); data.put("user",user); return new ModelAndView("success",data); } /** * Model一个模型对象, * 主要包含spring封装好的model和modelMap,以及java.util.Map, * 当没有视图返回的时候视图名称将由requestToViewNameTranslator决定; * 响应的view应该也是该请求的view。等同于void返回。 */ @RequestMapping(value="/index3",method=RequestMethod.GET) public Map<String, String> index3(){ Map<String, String> map = new HashMap<String, String>(); map.put("1", "1"); //map.put相当于request.setAttribute方法 return map; }
相关文章推荐
- springMVC Model ModelMap 和 ModelAndView的区别
- springMVC Model、 ModelMap 和 ModelAndView的区别
- SpringMVC 中Model、ModelMap和ModelAndView的区别和用法
- SpringMVC Model、ModelMap和ModelAndView的区别和用法
- springMVC Model、 ModelMap 和 ModelAndView的区别
- springMVC Model、 ModelMap 和 ModelAndView的区别
- springMVC Model、 ModelMap 和 ModelAndView的区别
- springmvc Model ModelMap 和 ModelAndView的区别
- springMVC Model ModelMap 和 ModelAndView的区别
- SpringMVC框架中ModelAndView、Model、ModelMap的区别与使用
- SpringMVC中返回数据Model,ModelAndView,ModelMap的区别
- SpringMVC中Model/ModelMap/ModelAndView
- SpringMVC Model、ModelMap和ModelAndView的区别和用法
- Spring中Model,ModelMap以及ModelAndView之间的区别
- SpringMVC Model ModelAndView ModelMap Map
- SPRING框架中ModelAndView、Model、ModelMap区别【转】
- SpringMVC-Model和ModelAndView的区别
- ModelMap和ModelAndView的使用的区别和各自介绍
- Spring框架中ModelAndView、Model、ModelMap的区别
- springmvc Model和ModelAndView的区别