modelandview(modelandviewaddobject)

天龙生活圈 33755次浏览

最佳答案ModelAndView简介
ModelAndView是SpringMVC中非常重要的一个类,它主要负责控制器与视图之间的数据传输,可以将处理结果数据以及下一步要跳转的视图信息封装进一个ModelAndVie

ModelAndView简介

ModelAndView是SpringMVC中非常重要的一个类,它主要负责控制器与视图之间的数据传输,可以将处理结果数据以及下一步要跳转的视图信息封装进一个ModelAndView对象中。ModelAndView是控制器处理完请求后,将处理结果数据和视图同时返回给SpringMVC框架的一个重要途径,下面将从几个方面详细阐述ModelAndView的使用。

ModelAndView的基本使用

modelandview(modelandview.addobject)

在SpringMVC中控制器处理完请求后,需要将处理结果数据和视图名称一起返回给DispatcherServlet,这个时候就需要用到ModelAndView了。在Controller的方法中创建一个ModelAndView对象,将数据添加到Model中,将视图名称添加到View中,最后返回这个对象即可。下面是示例代码:

//方法一:
@RequestMapping(value=\"hello1\",method = RequestMethod.GET)
public ModelAndView hello1(ModelAndView modelAndView) {
    StringBuilder stringBuilder=new StringBuilder(\"modelAndView.addobject代码示例\
\");
    stringBuilder.append(\"传递的字符串第一种方法\");
    modelAndView.addObject(\"message\", stringBuilder);
    modelAndView.addObject(\"name\",\"blockChain\");
    modelAndView.setViewName(\"modelAndView\");
    return modelAndView;
}
//方法二:
@RequestMapping(value=\"hello2\",method = RequestMethod.GET)
public ModelAndView hello2() {
    ModelAndView modelAndView = new ModelAndView(\"modelAndView\");
    StringBuilder stringBuilder=new StringBuilder(\"modelAndView.addobject代码示例\
\");
    stringBuilder.append(\"传递的字符串第二种方法\");
    modelAndView.addObject(\"message\", stringBuilder);
    modelAndView.addObject(\"name\",\"blockChain\");
    return modelAndView;
}

ModelAndView对象的构造函数

modelandview(modelandview.addobject)

除了上面使用addObject()方法向ModelAndView对象添加数据外,ModelAndView对象还有多个构造函数来方便设置,常用的构造函数如下:

1.无参构造函数

ModelAndView modelAndView=new ModelAndView();

该构造函数创建出的对象没有View属性和Model属性,需要进一步手动设置才能使用。

2.存在视图名称的构造函数

ModelAndView modelAndView=new ModelAndView(\"login\");

该构造函数创建出的对象默认有一个View属性,表示要跳转的页面的名称,同时该对象也没有Model属性,需要进一步手动设置。

3.只有Model属性的构造函数

ModelMap modelMap = new ModelMap();
modelMap.put(\"name\",\"blockChain\");
ModelAndView modelAndView = new ModelAndView(modelMap);

该构造函数创建出的对象仅仅只包含Model属性信息,没有View属性。

4.同时有View和Model属性的构造函数

ModelAndView modelAndView = new ModelAndView(\"modelAndView\", \"name\", \"blockChain\");

该构造函数创建出的对象既有View属性又有Model属性信息。

ModelAttribute注解和ModelAndView的区别

modelandview(modelandview.addobject)

@ModelAttribute注解是SpringMVC中的一个注解,主要作用是绑定请求参数到处理方法的入参对象、对象的属性和方法的返回值上。而ModelAndView则是控制器与视图之间数据传输的一个工具类,这两者的区别有以下几个方面:

1. 注解和工具类的作用不同

@ModelAttribute注解主要是处理请求参数、入参对象等相关的问题;而ModelAndView则负责传输处理结果数据和跳转路径信息。

2. 用途不同

@ModelAttribute注解在控制器中主要用于方法入参上;而ModelAndView则塑造对象在控制器中通过方法返回。

3. 注解可以有多个,ModelAndView在控制器中一般只有一个

@ModelAttribute注解可以在一个方法中同时多次使用,且绑定到不同的方法入参上,而一个方法中没有必要创建多个ModelAndView对象,这个对象中应该只包含一些必要的View和Model属性信息。

ModelAndView的嵌套使用

modelandview(modelandview.addobject)

在实际应用中,经常会出现需要将多个ModelAndView对象嵌套在一起使用的情况。这种情况下我们可以利用上一个ModelAndView对象中的数据建立下一个对象,以此达到ModelAndView对象之间数据的嵌套传递。

ModelAndView设置默认的View

modelandview(modelandview.addobject)

如果我们在添加视图名称时只写了View的名称,那在跳转时会自动根据该名称查找页面的名字,页面的名称与View名称不一致时就会跳转失败。此时为了避免这种情况发生,我们可以在SpringMVC的视图配置文件中设置一个默认的视图,将View和Model的属性默认设置到一个处理结果ModelAndView对象中,这个对象中所有的结果信息就都可以被共享和传递,从而简化了代码的编辑难度和视图配置的复杂度。