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())
}

PLAY2.6-SCALA(三) 数据的返回与保存的更多相关文章

  1. ASP.NET API(MVC) 对APP接口(Json格式)接收数据与返回数据的统一管理

    话不多说,直接进入主题. 需求:基于Http请求接收Json格式数据,返回Json格式的数据. 整理:对接收的数据与返回数据进行统一的封装整理,方便处理接收与返回数据,并对数据进行验证,通过C#的特性 ...

  2. mysql插入数据后返回自增ID的方法,last_insert_id(),selectkey

    mysql插入数据后返回自增ID的方法 mysql和oracle插入的时候有一个很大的区别是,oracle支持序列做id,mysql本身有一个列可以做自增长字段,mysql在插入一条数据后,如何能获得 ...

  3. 用注解的方式实现Mybatis插入数据时返回自增的主键Id

    一.背景 我们在数据库表设计的时候,一般都会在表中设计一个自增的id作为表的主键.这个id也会关联到其它表的外键. 这就要求往表中插入数据时能返回表的自增id,用这个ID去给关联表的字段赋值.下面讲一 ...

  4. 第18课-数据库开发及ado.net 连接数据库.增.删.改向表中插入数据并且返回自动编号.SQLDataReade读取数据

    第18课-数据库开发及ado.net 连接数据库.增.删.改向表中插入数据并且返回自动编号.SQLDataReade读取数据 ADO.NET 为什么要学习? 我们要搭建一个平台(Web/Winform ...

  5. mysql函数之六:mysql插入数据后返回自增ID的方法,last_insert_id(),selectkey

    mysql插入数据后返回自增ID的方法 mysql和oracle插入的时候有一个很大的区别是,oracle支持序列做id,mysql本身有一个列可以做自增长字段,mysql在插入一条数据后,如何能获得 ...

  6. 【Android】7.0 Intent向下一个活动传递数据、返回数据给上一个活动

    1.0 可以利用Intent吧数据传递给上一个活动,新建一个叫“hellotest01”的项目. 新建活动FirstActivity,勾选“Generate Layout File”和“Launche ...

  7. mybatis+oracle添加一条数据并返回所添加数据的主键问题

    最近做mybatis+oracle项目的时候解决添加一条数据并返回所添加数据的主键问题 controller层 @RequestMapping("/addplan") public ...

  8. 用ajax获取后台数据,返回json数据,怎么在前台使用?

    用ajax获取后台数据,返回json数据,怎么在前台使用呢?后台 C# code   ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 if (dataType == &qu ...

  9. echarts通过ajax向服务器发送post请求,servlet从数据库读取数据并返回前端

    1.echarts的官网上的demo,都是直接写死的随机数据,没有和数据库的交互,所以就自己写了一下,ok,我们开始一步一步走一遍整个流程吧. 就以官网最简单的那个小demo来做修改吧.官网上的小de ...

随机推荐

  1. PAT甲级——A1026 Table Tennis

    A table tennis club has N tables available to the public. The tables are numbered from 1 to N. For a ...

  2. 抽象工厂模式(Abstract Factory)(抽象化)

    不管是简单工厂模式还是工厂方法模式,在整个模式中只能有一个抽象产品,但在现实生活中,一个工厂只创建单个产品的例子很少,因为现在的工厂都是多元化发展. (1)产品等级结构:即产品的继承结构,如一个抽象类 ...

  3. KOA 学习(一)

    一.安装KOA 用npm下载KOA 就会在koa文件夹下生成 二.输出hello,world 我下载的KOA版本号是2.0.1 const Koa = require('koa'); const ap ...

  4. 嘴巴题1 LA2531 足球联赛

    LA2531 足球联赛 题目: 有n只队伍打比赛,给出每只队目前获胜和失败的场数,再给出两两队伍接下来的比赛场次,问你哪些队伍可能的冠军 (题面摘自http://blog.csdn.net/s_h_r ...

  5. file_instances文件实例表

      SELECT * FROM performance_schema.file_instances;

  6. TZ_05_Spring_Proxy基于接口的动态代理和基于类的动态代理

    代理:为了增强方法在不添加代码的情况下 1.Proxy基于接口的动态代理 /** * 模拟一个消费者 * @author Administrator * */ public class Client ...

  7. js构造函数+原型

    注:普通对象与函数对象 var o1 = {}; var o2 =new Object(); var o3 = new f1(); function f1(){}; var f2 = function ...

  8. Browsersync 浏览器自动刷新

    Browsersync 是一个很好用的工具,它可以实时监测文件的变动然后自动刷新浏览器,不用每次去点刷新或F5,特别在调试样式时非常有用. browsersync中文网  http://www.bro ...

  9. java swing调试时线程显示名字

    一般有一个默认名字 但是具体运行到哪一个线程,需要猜 为了节约时间,提高效率 可以给线程写个中文名(因为默认就是英文,写中文,一眼就能挑出来) 以RTC定时器为例子 final TimerRtc ti ...

  10. GIT生成公钥和私钥

    转载至:https://blog.csdn.net/gwz1196281550/article/details/80268200 打开 git bash! git config --global us ...