• 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" -> "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())
    }
  • 相关阅读:
    java中使用静态字段和构造函数跟踪某个类所创建对象的个数
    java中静态初始化块的执行顺序
    Java字段初始化的规律
    java web第一次课堂测试1
    java课极限测试
    对于java中反编译命令的使用以及Integer包装类的查看
    在java的静态方法中访问类的实例成员
    [Android开发] 获取Android的Google Map API密钥
    [Android开发] 整合不同版本的android project的方法
    比特,字节和像素之间的关系
  • 原文地址:https://www.cnblogs.com/feiyumo/p/9132518.html
Copyright © 2020-2023  润新知