1.处理模型数据
• Spring MVC 提供了以下几种途径输出模型数据:
– ModelAndView: 处理方法返回值类型为org.springframework.web.servlet.ModelAndView时(有两个相同的类,注意包名), 方法体即可通过该对象添加模型数据
– Map 及 Model: 参数为org.springframework.ui.Model、org.springframework.ui.ModelMap 或 java.uti.Map 时,处理方法返回时,Map中的数据会自动添加到模型中。
– @SessionAttributes: 将模型中的某个属性暂存到HttpSession 中,以便多个请求之间可以共享这个属性
– @ModelAttribute: 方法入参标注该注解后, 入参的对象就会放到数据模型中
2. ModelAndView
• 注意包名:org.springframework.web.servlet.ModelAndView
• 控制器处理方法的返回值如果为 ModelAndView, 则其既包含视图信息,也包含模型数据信息。
SpringMVC把ModelAndView的model中数据放入到request域对象中
构造函数可以接受 视图或者模型信息
• 添加模型数据:
– MoelAndView addObject(String attributeName, ObjectattributeValue)
– ModelAndView addAllObject(Map<String, ?> modelMap)
• 设置视图:
– void setView(View view)
– void setViewName(String viewName)
例子:
private static final String SUCCESS = "success";
@RequestMapping("/testModelAndView")
public ModelAndView testModelAndView(){
String viewName = SUCCESS;
ModelAndView modelAndView = new ModelAndView(viewName);
modelAndView.addObject("time", new Date());
return modelAndView;
}
在success.jsp文件中获取:
${ requestScope.time}
3.Map 及 Model
• Spring MVC 在内部使用了一个org.springframework.ui.Model 接口存储模型数据
• 具体步骤
– Spring MVC 在调用方法前会创建一个隐含的模型对象作为模型数据的存储容器。
– 如果方法的参数为 Map 或 Model 类型,Spring MVC 会将隐含模型的引用传递给这些参数。在方法体内,开发者可以通过这个入参对象访问到模型中的所有数据,也可以向模型中添加新的属性数据
Map:(主要是Map,其他了解)
private static final String SUCCESS = "success";
@RequestMapping("/testMap")
public String testMap(Map<String , Object> map){
map.put("name", Arrays.asList("Tom","Jerry","Mike"));
return SUCCESS;
}
在success.jsp文件中获取