PLAY2.6-SCALA 数据的返回与保存
Posted 飞末
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PLAY2.6-SCALA 数据的返回与保存相关的知识,希望对你有一定的参考价值。
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" -> "[email protected]")
插入一个元素
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()) }
以上是关于PLAY2.6-SCALA 数据的返回与保存的主要内容,如果未能解决你的问题,请参考以下文章