`

Flash Scope

阅读更多

项目中遇到了一个潜在的问题,大致就是说,在一个流程的两个或某几个环节中,需要短暂地存储一部分对象(如果不存储,就需要在这几个环节中多次调用同一个外部接口,这被认为是不够合理的实现)。

而这部分对象的存储:

(1)如果用request,太小,毕竟一次提交以后就丢失了,如果需要往后传递,可能需要借助一些页面参数传值等丑陋或是不易控制的方法;

(2)如果用session,太大,我不需要在整个用户会话生命周期内使用,而且如果同个用户并行地操作两个流程,期间会互相影响到。

 

其实在Rails/Grails里面就已经包含了一个机制,它将对象短暂地放置在session中,request-response连续的两个环节后再清除掉这个短暂保存的对象,就叫是Flash Scope。

它的原理很简单,内部定义了两个Map,将保存在里面的数据,在两个Map里面来回转移,这样就保证在下一次请求到来时,只需要将其中一个Map的数据转移到另外一个Map中,而清除掉一个Map。这样就保证一次在重定向时,该作用域下依然保存数据。而在第二次的请求时,如果没有新的数据加进来,原来的数据将会被清空。

这里有一个简单的例子:http://yongtree.javaeye.com/blog/629572

 

看起来好像结束了,不过,把思路扩展一下:

(1)这样的做法可以支持若干次的request-response,一串这样的requset-response就可以成为一条工作流。

(2)上面的做法解决了对象在对个环节中传递的问题,那么,怎样解决在同个用户并行地操作两个流程时,会互相影响到的问题?

 

我想其实也不难,只需要稍稍扩展一下,如果这样的问题确实需要解决,那就在存入这个短命对象到Map时,使用的key需要包含一个唯一序列x,而这个x最易想到的就是以系统当前时间为参数,让这个x作为hidden参数的形式经由页面传递,从而保证了一整条工作流中行为的独立性。

 

我画一个简单的时序图来说明:



 

 

文章系本人原创,转载请注明作者和出处

  • 大小: 62.5 KB
分享到:
评论

相关推荐

    J-Scope V7.66安装文件,自带jlink,安装该包会装上J-Scope V7.66和jlink

    jFlash-V7.66和J-ScopeV7.66下载使用

    angular-flash-message:角度Flash讯息

    角度闪光消息角度Flash讯息Angular Flash消息支持在AngularJS应用上显示Flash消息。 目前,我们不包含样式,因为... controller ( 'YourController' , function ( $scope , $flash ) { $scope . save = function ( ) {

    flash-message

    controller ( "Test" , [ '$scope' , 'flashMessage' , function ( $scope , flashMessage ) { flashMessage . success ( { message : "Success message" , seconds : 10 } ) ; } ] ) ; 该模块使用以下方法导出...

    Linux Scope -JTAG(目标系统调试器)

    LinuxScope不仅对BDI probe的功能进行了平衡,还允许用户对多种普通flash和strata flash设备进行编程。因为LinuxScope是建立在Eclipse上的,这就很容易增加用户定义的工具链来支持应用软件建立和调试。  性能 ...

    豪华首页调用Flash自动变换效果(附源代码)

    [color=Navy]文档说明《关于首页调用经典随即Flash.(模拟Adobe官方网站)》 1.大尺寸flash调用方法 请将FMA文件夹上传至网站更目录 在您的网站首页调用/FMA/FMA.swf XML存放目录/FMA/swf/homepage/fma/en_us/...

    angular-camera:用角度指令渲染具有Flash后备功能的网络摄像头

    角度相机指令 使用getUserMedia(如果可用)或Flash渲染Web摄像机的角度指令。 还提供了一个接口(感谢 ),用于通过flash和rtc拍摄快照。 用法 ... 选项可以在您的控制器中配置,并且可以模拟CamCapture的... $scope.op

    TFFS文件系统详解(Transaction Flash FileSystem (TFFS) Description)

    1.1 Scope ................................................................................................................... 4 1.2 Background ............................................................

    14a-angular-flashCards-1

    角形闪存卡 - 第 1 天 ... app.controller('FlashCardController', function ($scope) { // 我们现在可以使用 $scope 访问我们的范围。}); ng-app ng-控制器 ng-重复 ng-show ng-click ng级 角度过滤器

    TKScope仿真/烧录BootLoader方法

    在ARM9内核的开发中,烧录和仿真BootLoader程序一直是研发工程师头痛的事情。原因是没有高效的BootLoader程序和模仿...本文以LPC3000系列芯片为例,详细讲解TK-Scope仿真/烧录NAND Flash、SPI存储器的启动方法。LPC

    EDA/PLD中的TKScope仿真/烧录BootLoader方法

    在ARM9内核的开发中,烧录和仿真BootLoader程序一直是研发工程师头痛的事情。原因是没有高效的BootLoader下载程序和模仿...本文以LPC3000系列芯片为例,详细讲解TK-Scope仿真/烧录NAND Flash、SPI存储器的启动方法。L

    MCSA Windows Server 2016 Complete Study Guide

    The scope is broad, but your complete understanding of the most up-to-date concepts and practices is critical to your success on the exam—and on the job. MCSA Windows Server 2016 Complete Study ...

    PROGRAMMING ACTIONSCRIPT 3.0

    Function scope.135 Chapter 4: Object-oriented programming in ActionScript.137 Basics of object-oriented programming 138 Classes140 Class definitions..141 Class property attributes... 144 Variables......

    hope-oauth:最精简的oauth2授权认证服务:认证服务,资源服务,授权码模式,数据库持久化令牌,客户端

    Oauth2-服务 技术栈:Spring-Boot2 Oauth2 Spring-Security ...简化模式(在redirect_uri的哈希传递令牌中,客户端运行在浏览器中,如JS,Flash) refresh_token 更新access_token 1.授权码 申请代码 ...

    hadoop中文文档

    3.6 Extractor SWF 从 Flash里面提取链接。 3.7 Extractor Universal 最后一个链接提取器,通过提取任何看起来像链接的。如果使用的话,那么一般把它放在链接提取链的最后一个。 3.8 Extractor URI 从URI 里面提取...

    +Flex+集成到+Java+EE+应用程序的最佳实践(完整源代码)

    默认地,Flex Builder 将会把生成的 Flash 文件放到 EmployeeMgmt-Server 项目的 web/EmployeeMgmt-Flex-debug 目录下。 一个 Flex Project 的目录结构如下: 图 5. Flex 工程的目录结构 用 Flex Builder ...

    将 Flex 集成到 Java EE 应用程序的最佳实践(完整源代码)

    默认地,Flex Builder 将会把生成的 Flash 文件放到 EmployeeMgmt-Server 项目的 web/EmployeeMgmt-Flex-debug 目录下。 一个 Flex Project 的目录结构如下: 图 5. Flex 工程的目录结构 用 Flex Builder 做出...

    Manning.Spring.in.Action.4th.Edition.2014.11.epub

    3.4.1. Working with request and session scope 3.4.2. Declaring scoped proxies in XML 3.5. Runtime value injection 3.5.1. Injecting external values 3.5.2. Wiring with the Spring Expression Language 3.6...

    EDN--------------------电子杂志

    Use a trick to count scope events ............122 A primer on binary-arithmetic rounding ........................................................124 Light powers isolation amplifier ..............128 ...

    spring-framework-reference4.1.4

    Not Using Commons Logging ................................................................... 12 Using SLF4J ..............................................................................................

Global site tag (gtag.js) - Google Analytics