SpringMVC中处理模型数据的几种方式【记录】

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
    SpringMVC中处理模型数据的几种方式【记录】
@RequestMapping("/modelTest")
public String testMap(Model model) {
    model.addAttribute("names", Arrays.asList("Tom", "Jack", "Anna"));
    return "success";
}

3、@SessionAttributes注解:用法详解

4、@ModelAttribute注解:用法详解

上一篇:可能有点长的Spring MVC入门篇,但是学会也许就财富*了呢!


下一篇:java spring boot 跳转