##Session / Flash 作用域

revel提供了两种cookies存储机制:

// 一个加密签过的cookie (限制为4kb).
// 限制: Key 中不能有冒号
type Session map[string]string

// Flash代表只作用于每个请求的cookie,属于瞬时消息
// 它允许存储只跨越一个页面的数据,是临时性的
// 通常被用于存储并显示 执行成功 或 错误消息
// e.g. the Post/Redirect/Get pattern: http://en.wikipedia.org/wiki/Post/Redirect/Get
type Flash struct {
Data, Out map[string]string
}

##Session

Revel的会话是指一个字符串map,被存储为加密签名的cookies。

有几点需要注意:

1、4kb限制

2、所有数据被序列化为字符串

3、所有数据可以被用户看到(未加密),并可以被安全的修改

##Flash
`Flash`提供一次性字符串存储。

它可以在`Post/Redirect/Get`请求的页面上一次性的显示“操作成功!”或“操作失败!”消息。

示例:

// Show the Settings form
func (c App) ShowSettings() revel.Result {
return c.Render()
}

// Process a post
func (c App) SaveSettings(setting string) revel.Result {
c.Validation.Required(setting)
if c.Validation.HasErrors() {
// 在flash中存储错误提示信息
c.Flash.Error("Settings invalid!")
c.Validation.Keep()
c.FlashParams()
return c.Redirect(App.ShowSettings)
}

saveSetting(setting)

// 在flash中存储成功提示信息
c.Flash.Success("Settings saved!")
return c.Redirect(App.ShowSettings)
}

上面示例的过程:

1、用户获取setting页面

2、用户向setting页面POST数据

3、程序处理用户提交的数据,并且保存错误/成功提示信息到`flash`,然后使用`REDIRECT`重转向至其他页面。

这里用到了两个便利的方法:

1、`Flash.Success(message string)` 是 `Flash.Out["success"] = message`的简化版

2、`Flash.Error(message string)` 是 `Flash.Out["error"] = message`的简化版

flash信息可以在模板中使用key来访问。例如,在模板中使用以下方式来获取成功/错误信息:

{{.flash.success}}
{{.flash.error}}

Go Revel - Session / Flash(会话与flash)的更多相关文章

  1. Java EE : 三、图解Session(会话)

    目录 Java EE : 一.图解Http协议 Java EE : 二.图解 Cookie(小甜饼) Java EE : 三.图解Session(会话) 概述 一.Session由来 二.Sessio ...

  2. Nand Flash,Nor Flash,CFI Flash,SPI Flash 之间的关系

    前言:    在嵌入式开发中,如uboot的移植,kernel的移植都需要对Flash 有基本的了解.下面细说一下标题中的中Flash中的关系 一,Flash的内存存储结构    flash按照内部存 ...

  3. nor flash和nand flash的区别

    NOR和NAND是现在市场上两种主要的非易失闪存技术.Intel于1988年首先开发出NOR flash技术,彻底改变了原先由EPROM和EEPROM一统天下的局面.紧接着,1989年,东芝公司发表了 ...

  4. (三)NAND flash和NOR flash的区别详解

    我们使用的智能手机除了有一个可用的空间(如苹果8G.16G等),还有一个RAM容量,很多人都不是很清楚,为什么需要二个这样的芯片做存储呢,这就是我们下面要讲到的.这二种存储设备我们都统称为“FLASH ...

  5. NAND flash和NOR flash的区别详解

    我们使用的智能手机除了有一个可用的空间(如苹果8G.16G等),还有一个RAM容量,很多人都不是很清楚,为什么需要二个这样的芯片做存储呢,这就是我们下面要讲到的.这二种存储设备我们都统称为“FLASH ...

  6. NOR FLASH与NAND FLASH

    整理自NOR FLASH 与NAND FLASH 1:NandFlash与NorFlash典型电路图 Nor Flash接原理图 从上图可以看出,该NorFlash采用并行地址和数据总线, 其中,21 ...

  7. NOR flash和NAND flash区别,RAM 和ROM区别

    ROM和RAM指的都是半导体存储器,ROM是Read Only Memory的缩写,RAM是Random Access Memory的缩写.ROM在系统停止供电的时候仍然可以保持数据,而RAM通常都是 ...

  8. NOR flash和NAND flash区别,RAM 和ROM区别d

    ROM和RAM指的都是半导体存储器,ROM是Read Only Memory的缩写,RAM是Random Access Memory的缩写.ROM在系统停止供电的时候仍然可以保持数据,而RAM通常都是 ...

  9. SPI FLASH与NOR FLASH的区别?

    1.SPI Flash (即SPI Nor Flash)是Nor Flash的一种: 2.NOR Flash根据数据传输的位数可以分为并行(Parallel)NOR Flash和串行(SPI)NOR ...

随机推荐

  1. Oracle的执行计划(来自百度文库)

    如何开启oracle执行计划 http://wenku.baidu.com/view/7d1ff6bc960590c69ec37636.html怎样看懂Oracle的执行计划 http://wenku ...

  2. python标准库介绍——37 signal 模块详解

    ==signal 模块== 你可以使用 ``signal`` 模块配置你自己的信号处理器 (signal handler), 如 [Example 3-11 #eg-3-11] 所示. 当解释器收到某 ...

  3. SNF微信公众号客户端演示-微信开发客户端能干什么

    关注测试微信号: 关注后菜单页面如下: 一.扫描二维码进行订单查询演示 1.点击菜单“软件产品”->选择“扫描查询” 2.扫描如下二维码进行订单查询演示. 3.扫描结果如下: 二.微信“输入订单 ...

  4. 启动和停止kafka 及kafka manager

    启动kafka: sh /app/pet_kafka_xxxx_cluster/bin/kafka-server-start.sh -daemon /app/pet_kafka_xxxx_cluste ...

  5. JQuery Tree插件——zTree

    Demo:点击下载 zTree 在线操作演示:http://www.ztree.me/v3/demo.php#_101

  6. unity, Animator.ResetTrigger

    解: 正确的写法应该是:Animator.SetTrigger("unfoldTrigger")Animator.ResetTrigger("unfoldTrigger& ...

  7. metaspolit 命令大全

    一.msfconsole相关命令 二.database 三.autopwn自动化攻击工具 四.metaspolit常见渗透命令大全

  8. Oozie介绍

    1. Hadoop常见调度框架: (1)Linux Crontab:Linux自带的任务调度计划,在任务比较少的情况下,可以使用这种方式,直接执行脚本,例如添加一个执行计划: 0 12 * hive ...

  9. 关于Verilog中的几种赋值语句

    1. 连续赋值语句(Continuous Assignments) 连续赋值语句是Verilog数据流建模的基本语句,用于对线网进行赋值,等价于门级描述,是从更高的抽象角度来对电路进行描述.连续赋值语 ...

  10. HTML5学习笔记(十六):原型、类和继承【JS核心知识点】

    理解原型 在JavaScript中,只要声明了一个函数,就会为该函数创建一个名为prototype的属性,该属性指向当前函数的原型对象. 而函数的原型对象有一个constructor属性,该属性指向刚 ...