SessionAttributes注解:默认情况下Spring MVC将模型中的数据存储到request域中。当一个请求结束后,数据就失效了。如果要跨页面使用。那么需要使用到session。而@SessionAttributes注解就可以使得模型中的数据存储一份到session域中。
- 该注解只能应用在类上
- 该注解用于将Map、ModelMap、Model或ModelAndView中的数据暂存到HttpSession中以使其可以在多个请求之间共用数据(不能作用于HttpServletRequest)
ModelAndView
如下,我们发现添加这个注解好像是多此一举了,因为handler方法返回值类型为ModelAndView时,其包含视图信息,也包含数据信息,但其实这里mv中的数据被存放在了request中,添加上SessionAttributes注解之后将属性名为ui的数据copy了
一份放进了session域
Model
Modelhandler方法参数列表包含Model时,handler方法只需返回视图即可,当用户发出请求,服务器执行handler方法后,Spring MVC自动将Model中的数据填充到request中。上例UserInfoController类中代码等效于如下代码:
同上 SessionAttributes注解也是将model中的属性名为ui的数据copy放入了session域中
ModelMap&Map
handler方法参数列表包含org.springframework.ui.ModelMap或java.uti.Map时,handler方法只需返回视图即可,Spring MVC自动将ModelMap或Map中的数据添加到模型中。
ModelMap类对象的put或者addAttribute方法都可以将控制层数据输出到显示层,并通过EL表达式调用
结果
目标页面如下
有注解的类 对应的显示页面:
没有注解的类对应的显示页面: