SpringMVC 内部使用了一个org.springframework.ui.Model
接口来存储模型数据,该接口的实现类ExtendedModelMap
继承了ModelMap
,ModelMap 继承了java.util.LinkedHashMap
。
SpringMVC 在调用方法之前会创建一个隐含的模型对象,作为模型数据的存储容器。如果处理方法的参数为Model
或ModelAndView
类型,则 SpringMVC 会将隐含模型引用传递给这些参数。
SpringMVC 提供了多种途径输出模型数据
- Model 和 ModelMap
- ModelAndView
- @ModelAttribute
- @SessionAttributes
@ModelAttribute
和@SessionAttributes
在后面的参绑定注解里说明。
常见返回ModelAndView 两种用法。
- 返回
String
。 - 返回
ModelAndView
。
- 返回
示例代码
SpringMVC 返回ModelAndView
@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代码
<%@ 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>
更多内容请访问:IT源点
注意:本文归作者所有,未经作者允许,不得转载