随笔-35  评论-33  文章-0  trackbacks-0
      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



我的微信公众号,欢迎沟通学习。
posted on 2016-03-10 20:02 alexcai 阅读(2959) 评论(1)  编辑  收藏

评论:
# re: spring mvc中的ModelAttribute与SessionAttributes 2016-03-12 14:56 | java论坛
额,你的图片看不到啊  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: