1.springmvc为什么要处理模型数据
当我们采用映射路径映射到方法处理完数据时,需要将数据显示在页面上。然而springmvc框架提供可以将模型数据暴露给视图的解决方案。
2.springmvc提供了哪些处理模型数据的方案
① ModelAndView :当处理方法返回值类型为ModelAndView时,方法体即可通过该对象添加模型数据。
② @ModelAttribute注解 : 在方法入参标记了该注解后,入参的对象就会放到数据模型中。
③ Map、Model、ModelMap :方法返回时,数据会自动添加到模型中。
④ @SessionAttribute : 将模型中的某个属性暂时存到HttpSession中,为了使多个请求之间可以共享这个属性。
3.ModelAndView
ModelAndView中既包含视图信息,又包含模型数据信息。而ModelAndView也是通过ModelMap来实现的。
使用addObject方法来添加模型数据。使用setView方法来指定一个视图对象或者视图名称。
4.@ModelAttribute注解
关键点是模型数据会赋给User的入参,然后再根据HTTP请求消息进一步填充覆盖user对象。在准备对视图进行渲染前,springmvc会进一步将模型中的数据转储到视图的上下文并暴露给视图对象。
在访问控制器中的任何一个请求处理方法前,springmvc先执行该方法,并将返回值以user为键添加到模型中去。
5.@SessionAttribute
这个注解的作用是将处理方法对应的模型属性透明的保存到HttpSession中。前提是HttpSession中已经事先存在一个对应的模型,否则就会报错。
解决办法:
那么我们可以利用@ModelAttribute注解在方法上标注的特性解决。可以在控制器中处理任何一个请求前,先向隐含模型中添加一个名为user的模型属性。