java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Spring MVC要有Model、ModelMap和ModelAndView区别

为什么Spring MVC要有Model、ModelMap和ModelAndView?区别全解析

作者:txxs

还在纠结Spring MVC控制器里用Model、ModelMap还是ModelAndView吗?本文清晰对比了三者的区别与用法,帮你理解Model是接口,ModelMap实现Map,而ModelAndView则同时包含数据和视图,看完这篇,你就能根据场景选择最合适的返回方式了

近来在看代码,发现controller里有不同的处理返回数据的方式,而自己一直在用ModelAndView在处理数据,对于其他的方式也零星用过,但是总感觉不明白其中的区别,也就写了这篇博客总结一下:

简单来说

Model是包含四个addAttribute 和一个  merAttribute方法的接口。

ModelAndView的例子

台后

public class CarListController implements Controller {
	public ModelAndView handleRequest(HttpServletRequest arg0,
			HttpServletResponse arg1) throws Exception {
		CarManager carManager = new CarManager();
		ModelAndView modelAndView = new ModelAndView("carList");
		modelAndView.addObject("carList", carManager.getCarList());
		return modelAndView;
	}
}

ModelAndView的例子

前台view

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<body>
	<h1>Car List</h1>
	<c:forEach items="${carList}" var="car">
		${car.brand.name} ${car.model}: ${car.price}
		<br />
	</c:forEach>
 </body>
<html>

ModelMap的例子

public String testMethod(String someparam,ModelMap model)
{
     //省略方法处理逻辑若干
      //将数据放置到ModelMap对象model中,第二个参数可以是任何java类型
      model.addAttribute("key",someparam);
     ......     //返回跳转地址
      return "test/test";
}

或者直接使用接口:

public String toProvinceView(Model model, HttpSession session,) {
			model.addAttribute("colModel", colModel);
			model.addAttribute("colNames", colNames);
			model.addAttribute("buttonName", buttonName);
			return "statistic/StatisticChart";

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文