SpringMVC提供了以下几种途径输出模型数据:
- ModelAndView:处理方法返回值类型为ModelAndView时,方法体即可通过该对象添加模型数据;
- Model、ModelMap及Map:入参为org.springframeword.ui.Model、org.springframeword.ui.ModelMap或java.util.Map时,处理方法返回时,Map中的数据会自动添加到模型中;
- @SessionAttribute:将模型中的某个属性暂存到HttpSession中,以便多个请求之间可以共享这个属性;
- @ModelAttribute:方法入参标注该注解后,入参的对象就会放到模型中。
1、ModelAndView:
控制器处理方法的返回值如果为ModelAndView时,则既包含视图信息,也包含模型数据信息。
- springMVC会把ModelAndView的model中的数据放入到request域对象中。
添加模型数据:
- ModelAndView addObject(String attributeName, Object attributeValue)
- ModelAndView addAllObject(Map<String,?> modelMap)
设置视图:
- void setView(View view)
- void setViewName(String viewName)
@RequestMapping("/demo")
public ModelAndView demo(){
String viewName = success;
ModelAndView modelAndView = new ModelAndView(viewName);
//添加模型数据到ModelAndView中
modelAndView.addObject("date", new Date());
return modelAndView;
}
2、Model、ModelMap及Map:
SpringMVC在调用方法前会创建一个隐含的模型对象作为模型数据的存储容器,如果方法的入参为Map或Model类型,SpringMVC会将隐含模型的引用传递给这些入参,方法体内,可以通过这个入参对象访问到模型中的所有数据,也可以向模型中添加新的属性数据。
处理方法入参为以下三种之一时,处理方法返回时,Map中的数据会自动添加到模型中:
- java.uti.Map
- org.springframework.ui.Model
- org.springframework.ui.ModelMap
@RequestMapping("/modelTest")
public String testMap(Model model) {
model.addAttribute("names", Arrays.asList("Tom", "Jack", "Anna"));
return "success";
}
3、@SessionAttributes注解:用法详解
4、@ModelAttribute注解:用法详解