1,Model
Model只是用来传输数据的,并不会进行业务的寻址。Model是一个接口,其实现类为ExtendedModelMap,继承了ModelMap类。一般来说,可以用model来接收各种类型的数据,如果使用来接收一组数据List那么这个时候的model实际上是ModelMap。Model通过addAttribute方法向页面传递参数。
Model的实例是spirng mvc框架来自动创建并作为控制器方法参数传入,用户无需自己创建,需要return 返回指定的页面路径。
@RequestMapping("testModel")
public String testModel(Model model) {
// 接收查询的信息
List<Category> cs1= categoryService.list();
// 封装了查询的数据
model.addAttribute("test", cs1);
//重要!!需要给出返回model跳转的路径
return "testModel";
}
2,ModelMap
ModelMap本身不能设置页面跳转的url地址别名或者物理跳转地址,那么我们可以通过控制器方法的字符串返回值来设置跳转url地址别名或者物理跳转地址。request对象的setAttribute方法的作用(用来在一个请求过程中传递处理的数据),用法等同于Model。(通过addAttribute方法向页面传递参数)
ModelMap的实例是spirng mvc框架来自动创建并作为控制器方法参数传入,用户无需自己创建,需要return 返回指定的页面路径。
@RequestMapping("testModelMap")
public String testModelMap(ModelMap model) {
// 接收查询的信息
List<Category> cs2= categoryService.list();
// 封装了查询的数据
model.addAttribute("test", cs2);
//重要!!需要给出返回model跳转的路径
return "testModelMap";
}
3,ModelAndView
添加模型数据用addObject,设置视图setViewName。ModelAndView的实例是需要我们手动new的,ModelAndView 可以自己寻址,只需要return 返回其对象即可。
@RequestMapping("testModelAndView")
public ModelAndView testModelAndView(){
//创建一个模型视图对象
ModelAndView mav = new ModelAndView();
//获取到查询的数据
List<Category> cs= categoryService.list();
// //将数据放置到ModelAndView对象view中,第二个参数可以是任何java类型
mav.addObject("cs", cs);
// 放入jsp路径
mav.setViewName("testModelAndView");
//返回ModelAndView对象mav
return mav;
}