spring mvc中的ModelAttribute与SessionAttributes

       spring mvc中,变量有一个作用域的概念,你可以很方便使用注解,就能实现变量的的设置,在各自的作用域内优雅的使用该变量。

ModelAttribute

假如有这样一段代码:

myRequestObject这个引用,经过spring的处理,会自动把addStuffToRequestScope这个方法的返回值MyCommandBean作为值保存下来。实际上spring的model缓存这个值,其实这个值是在request的getAttribute里面。当你调用controller里面某个@requestmapping注解的方法,都能取到这个model里面的值。

这个图能说明一些问题:

可以看出,在controller渲染页面之前,spring已经把ModelAttribute里面的值植入进去了。其实它的作用域就是当前请求。

SessionAttributes

在原来的代码基础之上,再添加一个注解,就表示这个变量会跟随用户的会话周期。只要用户不退出或者SESSION过期,这个值就一直可以保留。当然,在当前的 request周期之内,调用getAttribute方法同样也可以得到。

注意session与model的value名称要一样。

使用场景:

modelattribute:常量定义,比如key,value的映射。像下拉框,多选框等等

sessionattribute:跟用户会话相关的常量,如用户基本信息等

参考链接:understanding-spring-mvc-model-and-session-attributes

猜你喜欢

转载自zuxiong.iteye.com/blog/2282629