ModelAndView类别就如其名称所示,是代表了MVC Web程序中Model与View的对象,不过它只是方便您一次返回这两个对象的holder,Model与View两者仍是分离的概念。
实例:
ModelAndViewTest.java
package com.ray;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author Ray
* @date 2018/4/18 0018
* ModelAndView测试
*/
@Controller
public class ModelAndViewTest {
@RequestMapping(value = "/login")
public ModelAndView login(){
//默认构造函数
ModelAndView modelAndView = new ModelAndView();
//设置视图名称
modelAndView.setViewName("welcome"); //文件名
//向模型添加属性
modelAndView.addObject("msg","Hello Ray");
//List
List<String> list = new ArrayList<>();
list.add("java");
list.add("c++");
list.add("php");
modelAndView.addObject("booklist",list);
//Map
Map<String,String> map = new HashMap<>();
map.put("张三","北京");
map.put("李四","上海");
map.put("王五","珠海");
modelAndView.addObject("map",map);
return modelAndView;
}
}
welcome.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>springmvc的ModelAndView的简单使用</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
</head>
<body>
<!-- 输出字符 -->
<h2>${msg}</h2>
<hr>
<!-- 输出List -->
<p>书籍列表</p>
<c:forEach items="${booklist}" var="node">
<c:out value="${node}"></c:out>
<br>
</c:forEach>
<hr>
<!-- 输出Map -->
<p>人员列表</p>
<c:forEach items="${map}" var="node">
姓名:<c:out value="${node.key}"></c:out>
住址:<c:out value="${node.value}"></c:out>
<br>
</c:forEach>
</body>
</html>
遍历集合可使用jstl表达式,需在jsp中引入头文件并导入jstl.jar和standard.jar。
效果: