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 

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,397评论 19 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,054评论 6 342
  • Spring的模型-视图-控制器(MVC)框架是围绕一个DispatcherServlet来设计的,这个Servl...
    alexpdh阅读 7,492评论 0 3
  • application的配置属性。 这些属性是否生效取决于对应的组件是否声明为Spring应用程序上下文里的Bea...
    新签名阅读 10,765评论 1 27
  • 牢笼的囚困 肉体的拘禁 精神的欺骗 有多少人被精神囚困 有多少人活在束缚之中 有多少人想突破天际 向往自由 这牢笼...
    妹妹躲雨吗阅读 3,715评论 0 1