大家好,我是考100分的小小码 ,祝大家学习进步,加薪顺利呀。今天说一说详解Spring中FlashMap[通俗易懂],希望您对编程的造诣更进一步.
前言
在看Springmvc源码的时候,在DispatcherServlet中的doService发现了如下的逻辑,其中一个FlashMap的关键字引起我的注意,于是我去捣鼓了一番。
FlashMap是什么
FlashMap数据结构是一个Key-Value的结构,继承实现Map<K,V>。关于操作FlahMap,有FlashMapManager接口,其结构只是三层:FlashMapManager、AbstractFlashMapManager、SessionFlashMapManager(关于FlashMapManager的源码晚点奉上)。目前我们对FlashMap的大概认识,多半是做缓存用的。
FlashMap的作用&用法
在正常的Url转发中,其实是无法携带相关参数,无法使用request携带参数。所以Spring为了解决这个问题,FlashMap主要用于Redirect转发时的参数传递,我们只需要在redirect之前将需要传递的参数写入OUTPUT_FLASH_MAP_ATTRIBUTE中(如下例子)。
这样在redirect之后的handler中Spring会自动的设置到Model中(从DispatcherServlet源码可以得到,先设置到INPUT_FLASH_MAP_ATTRIBUTE,再设置Model中)。当然这种方式设置有点复杂,但是还有其他设置的方式,如下使用RequestContextUtils
结尾
这就是FlashMap的用法,inputFlashMap是用于上次请求中转发的属性。outputFlashMap用于保存本次请求转发的属性,通过FlashMapManager用于管理他们。
关于FlashMapManager这个的源码分析,晚几天补上,先欠下,阿门。
以上是我的个人总结,如有遗漏之处,欢迎指出。关注我,我将不定时分享JAVA的学习笔记。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/11856.html