一、处理模型数据
SpringMVC提供了以下几种途径输出模型数据:
- ModelAndView:处理方法返回值类型为ModelAndView时,方法即可通过该对象添加模型数据。
- Map及Model:入参为org.springframework.ui.Model、org.springframework.ui.ModelMap、java.util.Map时,处理方法返回值时,Map中的数据会自动添加到模型中。
- @SessionAttributes:将模型中的某个数据暂存到HttpSession中,以便多个请求间可以共享这个属性。
- @ModelAttribute:方法入参标注该注解后,入参的对象就会放到数据模型中。
二、处理数据模型之ModelAndView
- 控制器处理方法的返回值如果为ModelAndView,则其包含视图信息,也包含模型数据信息。
-添加模型数据:
—ModelAndView addObject(String attributeName,Object attributeValue)
—ModelAndView addAllObject(Map<String,?> modelMap)
- 设置视图:
—void setView(View view)
—void setViewName(String viewName)
/**
* 目标方法的返回值可以是ModelAndView类型
* 其中可以包含视图和模型信息
* SpringMVC会把ModelAndView的model中数据放入到request域对象中
* @return
*/
@RequestMapping("/testModelAndView")
public ModelAndView testModelAndView(){
String viewName = SUCCESS;
ModelAndView mv = new ModelAndView(viewName);
//添加模型数据到ModelAndView中
mv.addObject("time",new Date());
return mv;
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<a>哈哈哈哈</a>
time:${time}
</body>
</html>
学习的过程中发现使用 ${time} 无法获取ModelAndView,原因是jsp头文件版本有问题:
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
将上面的头文件改为下面的:
<?xml version="1.0" encoding="UTF-8"?>
<web-