Spring MVC返回ModelAndView方式

  SpringMVC 内部使用了一个org.springframework.ui.Model接口来存储模型数据,该接口的实现类ExtendedModelMap继承了ModelMap,ModelMap 继承了java.util.LinkedHashMap
  SpringMVC 在调用方法之前会创建一个隐含的模型对象,作为模型数据的存储容器。如果处理方法的参数为ModelModelAndView类型,则 SpringMVC 会将隐含模型引用传递给这些参数。

  1. SpringMVC 提供了多种途径输出模型数据

    • Model 和 ModelMap
    • ModelAndView
    • @ModelAttribute
    • @SessionAttributes
      @ModelAttribute@SessionAttributes在后面的参绑定注解里说明。
  2. 常见返回ModelAndView 两种用法。

    • 返回String
    • 返回ModelAndView

示例代码

SpringMVC 返回ModelAndView

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
@Controller
@RequestMapping("/user")
public class UserController {

/**
* 只返回视图(jsp页面:userInfo.jsp)
* @return
*/
@RequestMapping("/userInfo")
public String userInfo() {
return "userInfo";
}

/**
* 返回视图
* model封装参数
* @param model
* @return
*/
@RequestMapping("/userInfo1")
public String userInfo1(Model model) {
model.addAttribute("name", "张一丰");
return "userInfo";
}

/**
* 返回视图
* ModelMap 封装参数
* @param model
* @return
*/
@RequestMapping("/userInfo11")
public String userInfo11(ModelMap modelMap) {
modelMap.addAttribute("name", "张一丰");
return "userInfo";
}

/**
* 在ModelAndView的构造方法指定视图名称(viewName)
* model封装数据
* 返回的是包含模型和视图的ModelAndView对象
* @return
*/
@RequestMapping("/userInfo2")
public ModelAndView userInfo2() {
ModelAndView mv = new ModelAndView("userInfo");
mv.addObject("name", "张二丰");
return mv;
}

@RequestMapping("/userInfo3")
public ModelAndView userInfo3() {
ModelAndView mv = new ModelAndView("userInfo", "name", "张三丰");
return mv;
}

/**
* 返回ModelAndView model封装数据 设置viewName
*
* @return
*/
@RequestMapping("/userInfo4")
public ModelAndView userInfo4() {
ModelAndView mv = new ModelAndView();
mv.addObject("name", "张四丰");
mv.setViewName("userInfo");
return mv;
}

/**
* 通过构造方法返回ModelAndView,提供了三个构造方法
* new ModelAndView(String viewName)
* new ModelAndView(String viewName, Map<String, ?> model)
* new ModelAndView(String viewName, String modelName, Object modelObject)
*/

jsp代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Spring MVC Controller</title>
</head>
<body>
<h1>userInfo.jsp</h1>
<hr>
<h3>获取model中数据:${name }</h3>
</body>
</html>
作者

光星

发布于

2018-01-03

更新于

2022-06-17

许可协议

评论