1.修改默认的Content-Type

自动设置内容类型为text/plain

val textResult = Ok("Hello World!")

自动设置内容类型为application/xml.

val xmlResult = Ok(<message>Hello World!</message>)

手动设置类型

val htmlResult2 = Ok(<h1>Hello World!</h1>).as(HTML)

2.添加或更新http请求头

val result = Ok("Hello World!").withHeaders(
CACHE_CONTROL -> "max-age=3600",
ETAG -> "xx")

cookies是一个特殊格式的http请求头

val result = Ok("Hello world")
.withCookies(Cookie("theme", "blue"))
.bakeCookies()

丢弃一个浏览器中之前存储的cookie

val result2 = result.discardingCookies(DiscardingCookie("theme"))

设置或移除cookie后,回复不变

val result3 = result.withCookies(Cookie("theme", "blue")).discardingCookies(DiscardingCookie("skin"))

改变文本的编码格式,默认格式为utf-8

class Application @Inject()(cc: ControllerComponents) extends AbstractController(cc) {

  implicit val myCustomCharset = Codec.javaSupported("iso-8859-1")

  def index = Action {
Ok(<h1>Hello World!</h1>).as(HTML)
} }

3.数据的保存(只能保存String类型,最多4KB数据)

session:保存在会话中的数据在整个用户会话期间都有效

flash scope:只在下次请求可用

3.1 session

session的配置(配置application.conf)

session的设置

Ok("Welcome!").withSession( "connected" -> "user@gmail.com")

插入一个元素

Ok("Hello World!").withSession( request.session + ("saidHello" -> "yes"))

删除一个元素

Ok("Theme reset!").withSession(request.session - "theme")

读取session中的数据

def index = Action { request =>
request.session.get("connected").map { user =>
Ok("Hello " + user)
}.getOrElse {
Unauthorized("Oops, you are not connected")
}
}

清除整个session

Ok("Bye").withNewSession

3.2 Flash scope

flash中的数据仅保存到下一个request中,且未被签名保护。因此flash仅用于在非Ajax请求中传送成功或失败信息

//检查flash中是否有success信息
def index = Action { implicit request =>
Ok {
request.flash.get("success").getOrElse("Welcome!")
}
}
//在保存一条信息后,想要将页面重定向到初始页面,并且想要在初始页面中显示一条信息表示保存成功,就可以使用flash
def save = Action {
Redirect("/home").flashing(
"success" -> "The item has been created")
}

获取Flash scope中的值

@()(implicit flash: Flash)
...
@flash.get("success").getOrElse("Welcome!")
... def index = Action { implicit request =>
Ok(views.html.index())
}

最新文章

  1. 2 . Linux常见命令
  2. 处理Linux下subversion尝试连接自建的VisualSVN server报“Key usage violation in certificate has been detected”错误的问题
  3. qt中文乱码问题
  4. FreeMarker template error!
  5. storm0.9.0.1安装
  6. 现代程序设计——homework-09
  7. gd库复制图片做水印
  8. 管理员把我的admin权限去掉了,那么如何获得jdk zip安装呢?这篇可以帮你。
  9. centos7启动时出现“无法应用原保存的显示器配置”
  10. 【转】android cts测试方法及步骤
  11. SQL Server表分区详解
  12. 安装免安装版的mysq服务的方法l
  13. 初识Djiango
  14. notes for lxf(二)
  15. webpack4.0.1安装问题和webpack.config.js的配置变化
  16. golang初识5 - interface
  17. 剑指Offer 40. 数组中只出现一次的数字 (数组)
  18. React琐碎
  19. 79、iOS 的Cocoa框架、Foundation框架以及UIKit框架
  20. 【30集iCore3_ADP出厂源代码(ARM部分)讲解视频】30-7底层驱动之滴嗒定时器

热门文章

  1. 移动相关的css
  2. vue实现跳转路由
  3. Redis源码解析:26集群(二)键的分配与迁移
  4. fidder下载及使用
  5. 20190817-T1-LOJ6322「雅礼国庆 2017 Day6」Star Way To Heaven
  6. VSCode 配置阿里云CentOS 7.6 远程开发
  7. 关于display:flex;兼容写法
  8. angular可以做的小功能 未完成
  9. GYM 101350 F. Monkeying Around
  10. curl应用大法