详解Spring中FlashMap[通俗易懂]

详解Spring中FlashMap[通俗易懂]前言在看Springmvc源码的时候,在DispatcherServlet中的doService发现了如下的逻辑,其中一个FlashMap的关键

前言

在看Springmvc源码的时候,在DispatcherServlet中的doService发现了如下的逻辑,其中一个FlashMap的关键字引起我的注意,于是我去捣鼓了一番。

详解Spring中FlashMap[通俗易懂]

FlashMap是什么

FlashMap数据结构是一个Key-Value的结构,继承实现Map<K,V>。关于操作FlahMap,有FlashMapManager接口,其结构只是三层:FlashMapManager、AbstractFlashMapManager、SessionFlashMapManager(关于FlashMapManager的源码晚点奉上)。目前我们对FlashMap的大概认识,多半是做缓存用的。

详解Spring中FlashMap[通俗易懂]

FlashMap的作用&用法

在正常的Url转发中,其实是无法携带相关参数,无法使用request携带参数。所以Spring为了解决这个问题,FlashMap主要用于Redirect转发时的参数传递,我们只需要在redirect之前将需要传递的参数写入OUTPUT_FLASH_MAP_ATTRIBUTE中(如下例子)。

详解Spring中FlashMap[通俗易懂]

这样在redirect之后的handler中Spring会自动的设置到Model中(从DispatcherServlet源码可以得到,先设置到INPUT_FLASH_MAP_ATTRIBUTE,再设置Model中)。当然这种方式设置有点复杂,但是还有其他设置的方式,如下使用RequestContextUtils

详解Spring中FlashMap[通俗易懂]

结尾

这就是FlashMap的用法,inputFlashMap是用于上次请求中转发的属性。outputFlashMap用于保存本次请求转发的属性,通过FlashMapManager用于管理他们。

关于FlashMapManager这个的源码分析,晚几天补上,先欠下,阿门。

详解Spring中FlashMap[通俗易懂]

以上是我的个人总结,如有遗漏之处,欢迎指出。关注我,我将不定时分享JAVA的学习笔记。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/11856.html

(0)

相关推荐

  • Spark3 学习【基于Java】4. Spark-Sql数据源

    Spark3 学习【基于Java】4. Spark-Sql数据源通过DF,Spark可以跟大量各型的数据源(文件/数据库/大数据)进行交互。前面我们已经看到DF可以生成视图,这就是一个非常使用的功能。 简单的读写流程如下: 通过read方法拿到DataFrameR

    2023-05-01
    154
  • Python好友管理系统

    Python好友管理系统随着社交网络的普及,人们逐渐习惯于在网络上与朋友交流和互动。无论你是学生还是职场人士,都可能需要一个好友管理系统来轻松地管理你的好友列表、聊天记录、社交圈子等信息。本文将介绍一个基于Python的好友管理系统,可以帮助大家更加便捷地管理好友信息。p

    h3一、系统功能/h3

    p好友管理系统的主要功能包括:好友列表、聊天记录、社交圈子。下面分别介绍。

    2024-05-16
    122
  • Python列表转字符串方法

    Python列表转字符串方法在Python编程中,列表(List)是一个非常常见的数据类型。但有时候我们需要将列表转换为字符串类型,以便于输出、存储或处理。Python提供了多种方法来实现列表转字符串的操作,下面将对这些方法进行详细的介绍。

    2024-06-10
    61
  • EasyX实现简易贪吃蛇

    EasyX实现简易贪吃蛇@TOC 前言 我们曾经都玩过贪吃蛇游戏,所以我今天学习了C语言就想学习然后写一下。 一、头文件包含 包含完头文件后进行一些预处理操作: 二、创建蛇与食物的结构体 贪吃蛇是基于帧驱动,而不是事件驱动的

    2023-11-14
    161
  • 如何运行Python .py文件

    如何运行Python .py文件Python是一种通用编程语言,具有简单易学、高效快速的特点,因此被广泛应用于机器学习、数据分析、网络编程等领域。若想运行Python .py文件,本文将会给您提供一些有效的方法和实践经验。

    2024-05-07
    79
  • SQL 入门教程:创建联结(JOIN)[亲测有效]

    SQL 入门教程:创建联结(JOIN)[亲测有效]目录汇总:SQL 入门教程:面向萌新小白的零基础入门教程 创建 联结 非常简单,指定要联结的所有表以及关联它们的方式即可。请看下面的例子: 输入▼ SELECT vend_name, prod_nam

    2023-04-20
    155
  • DDL和DML[通俗易懂]

    DDL和DML[通俗易懂]DDL(Data Definition Languages)语句: 数据库定义语句:用来创建数据库中的表、索引、视图、存储过程、触发器等 常用的语句关键字有:create,alter,drop,tru

    2023-06-02
    146
  • 金三银四招聘季,不想996?附赠一份955公司名单以及招聘链接

    金三银四招聘季,不想996?附赠一份955公司名单以及招聘链接金三银四,又到了跳槽季,相信很多小伙伴都已经在摩拳擦掌,如果你厌倦了966制的工作,不妨看一下这个955的公司名单。 以上公司名单,基本不属于 996 的公司,相对接近 955/965 的水平,但是依旧要看部门和地区,不能保证完全准确性。

    2023-08-04
    133

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注