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
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 {
@RequestMapping("/userInfo") public String userInfo() { return "userInfo"; }
@RequestMapping("/userInfo1") public String userInfo1(Model model) { model.addAttribute("name", "张一丰"); return "userInfo"; }
@RequestMapping("/userInfo11") public String userInfo11(ModelMap modelMap) { modelMap.addAttribute("name", "张一丰"); return "userInfo"; }
@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; }
@RequestMapping("/userInfo4") public ModelAndView userInfo4() { ModelAndView mv = new ModelAndView(); mv.addObject("name", "张四丰"); mv.setViewName("userInfo"); return mv; }
}
|
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>
|