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