美文网首页Play Framework
【Play framework 学习笔记】、新手入门

【Play framework 学习笔记】、新手入门

作者: mrzhqiang | 来源:发表于2018-01-03 15:25 被阅读75次

    背景

    后台同事离职,公司安排我(Android)接手项目,由于后台开发的核心是 Play framework,作为这个领域的萌新,必须了解官方文档的一切秘密。

    正文

    更新这篇新手入门时,Play 的版本是 2.6.15,所以接下来的内容,都是基于这个版本的吐槽。

    官方主页

    打开 Play framework 主页,有这样一句话:

    The High Velocity Web Framework For Java and Scala

    翻译过来就是:适用于 Java 和 Scala 的高速 Web 框架

    简洁,干脆,清晰。

    简介

    • Play Framework makes it easy to build web applications with Java & Scala.
    • Play is based on a lightweight, stateless, web-friendly architecture.
    • Built on Akka, Play provides predictable and minimal resource consumption (CPU, memory, threads) for highly-scalable applications.

    机翻一下:

    • Play Framework 可以使用 Java 和 Scala 轻松构建 Web 应用程序。
    • Play 基于轻量级,无状态,网络友好型架构。
    • Play 基于 Akka 构建,为高度可扩展的应用程序提供可预测的最小资源消耗(CPU,内存,线程)。

    很好,虽然不知道在讲什么,但是感觉很高大上的样子,用起来不亏,不亏。

    特性

    • Developer friendly.
      只需要准备 Oracle JDK 1.8,以及一个【文本编辑器】(Atom 或者 Sublime Text)和一个【浏览器】,就能够胜任 Play 的开发工作。当然它也支持在 EclipseIntelliJ IDEA 中愉快地敲打键盘。

    • Scale predictably.
      从上到下是完全异步的模型,非阻塞 IO,并且具有高度可扩展的特性。

    • Modern web & mobile.
      是现代网络和移动应用的接口开发神器。

    • Solid & fast.
      相信 Java 的品质,相信 JVM 的速度。

    • Massive ecosystem.
      基于 Java 则天生立于不败之地——庞大的 Maven 库。

    • Proven in production.
      Play 经过实际证明,它很可靠,具体有多可靠?有图为证。

    官方文档

    Play 官方文档 是最合适的入门文档,当然它会有一些吐槽点,但相对来说,它是最权威的指南。

    文档结构

    起初作为萌新,并不了解这部分的情况,因此造成了许多误会,此次回头来看,其实 Play 文档相对于 Google 的 【Android 开发者文档】,真的好太多有木有!

    • 文档选项


    在右侧可以选择【文档版本】、【开发语言】、【文档语言】三个选项,可惜的是,并没有中文语言。

    • 文档目录


    这里是文档目录,以这里为起点,会让你拨开很多云雾,直达问题本质。

    • Play 简介


    这部分在主页中有介绍,可以跳过它。

    • 最新发布


    讲到了当前版本的新特性,从低版本迁移的指南,还有其他发布的版本列表。

    • 新手入门


    从安装到使用,Play 的简单超乎你的想象,并且只使用文本编辑器的话,配合控制台会有奇效,而选择一个好的 IDE,则可以帮助提升开发效率,再通过解析 Play 应用的结构,你会更懂得 Play 的美妙之处,至于教程则是提供了一个功能预览,以及第三方博客的一些经典教学。

    • 使用 Play


    这边有三个主题,一个是对于 Java 开发者,一个是对于 Scala 开发者,剩下的是公共主题。对于开发者而言,分别阐述了主要概念和高级主题;对于公共主题来说,涵盖了构建、配置、资源、HTTP 过滤、模块扩展、数据库、服务器后端、部署、调度任务的方方面面,非常详细且实用。

    • 贡献 Play


    作为萌新来说,唯一的贡献就是学习、探索、应用。

    • 关于 Play


    从 Play 的诞生以及发展历程,娓娓道来一部波澜壮阔的史诗,额,这个有点夸张,不过这里就像一本书的序,如果你不花点时间了解一下,可能你对这本书的理解并没有到位。至于 Play 的用户组,没有中国的话,根本不需要关心,你说是不是?

    • Play 发布版本


    对于萌新来说,从一开始就是 2.6.x,因此也不必过多关注。但是有一点,如果以前的项目也是 Play 框架,那么最好看看是不是旧版本,如果是,怎么样做到版本迁移,以防止不同版本的冲突。

    • 模块


    Play 把大部分工具作为一个模块贡献在 Maven 上,比如认证授权、数据存储、定位、页面渲染等。

    • 相关书籍


    如果你觉得实在需要一本手头上的文档,你就应该购置上面的书籍,生啃下来。当然,恐怕很难有中文翻译本,要有也不会针对最新版本的 Play,还须慎之又慎啊。

    萌新入门体验

    本文内容基于以下开发环境,若因环境不同而产生困惑,请参考相应替代方案。

    学习一段时间发现,毕竟 Play framework 需要部署到服务器上,而大多数服务器是 Linux 系统,在 Windows 上的开发即便再顺风顺水,到了 Linux 上还是有各种各样的坑,所以为了统一开发环境,这里将提供一个神奇的折中方案,那便是无敌的 WSL

    WSL 是在 Windows 10 中安装一个 Linux 子系统,有需要的同学请移步:【笔记】Windows Subsystem for Linux

    需要注意的是,Windows 10 中安装的 JDK 并不能在 WSL 中作为环境变量,尽管可以通过 java.exe 命令来调用,但最好还是安装一下 Linux 的 JDK 来运行 Play 应用程序。

    回归正题,官方推荐的 Play framework 开发环境为:

    Oracle JDK 属于开发必备环境,选择 JDK 1.8 是为了提升开发效率,当然,如果你使用更高的 JDK 版本,那是再好不过的事情。在 Play 的一些样例中,有 JDK 1.8 的新特性实例,比如 StreamCompletionStage 等等,学习它们使用方法,了解并熟悉之后,你才会感觉到后台开发的快乐。

    IDEA 属于开发神器,你所能想到的效(tou)率(lan)方式,它已经浓缩为快捷键,所以当你不再需要鼠标来进行编写代码,我想你会感激 IDEA 的。

    激活 IDEA Ultimate Edition 版本

    对于 IDEA 来说,首先请确认已经执行以下步骤:

    • 进入 IntelliJ IDEA 官网
    • 点击 DOWNLOAD 跳转到下载页面
    • 选择 Ultimate 下载并安装

    目前最新的 IDEA 版本是:

    Version: 2018.1.1
    Build: 181.4445.78
    Released: April 10, 2018

    温馨提示:若经济允许,请购买授权。

    需要简单许可的同学,可以尝试在 IntelliJ IDEA License Activation 对话框的 License server 选项下,填写:

    http://idea.randall.top
    

    进行授权,或通过 lanyu 注册 IDEA 获取相关授权方式。

    下载样例运行

    Play 下载页面 获取 入门样例,然后通过 SBTOracle JDK 1.8 环境下,快速构建并启动。

    你不需要提前安装 SBT,因为所有的一切,都只需要双击一个文件就搞定。

    将下载下来的 play-java-starter-example.zip 文件解压,然后进入解压出来的工程目录,找到 sbt.bat 文件并双击它,就已经开始构建一个 Play 项目。

    需要注意的是,这里选择的是 Java 工程,这是因为做 Android 的时候也是用 Java,自然选择看得懂的代码进行学习。当然,下载 Scala 工程也没有问题,照样可以跑起来。

    冗长的时间之后,构建完成的情况是:

    由于 SBT 将相关依赖缓存了,所以这里的显示有些简单。通常来说,第一次要耐心等上一段时间。

    直接在命令中输入 run 并按下回车键:

    这里可以看到有很多下载成功的信息,最后一行的提示表示服务已经启动,可以通过在浏览器中输入:

    localhost:9000
    

    来访问刚刚建立的网站:

    (最开始写这篇文章的时候,Play 的版本是 2.6.10,所以图中显示可能不太一样。)

    很吃惊是吧?几乎什么事也没做,就跑出来一个这么漂亮的网站?

    Play 果然如它的名字一样,玩,就能玩出来花样。

    项目结构

    基本的项目结构如下:

    • root:项目的根目录,默认为 root 别名

      • app:应用主体,通常是后台相关的源码

        • controllers:控制器,接口逻辑相关
        • views:视图,网页内容相关
        • models:模型,数据相关
      • conf:配置目录

        • application.conf:应用配置,可以覆盖子模块中的默认配置 reference.conf
        • routes:路由器,配置所有接口的地方
      • project:工程目录,具体作用不明确,新手不关心

        • plugins.sbt:插件配置文件,可以用来增强安全性等功能
      • public:公共资源

        • images:图片
        • javascripts:JS 脚本
        • stylesheets:CSS 样式
      • test:测试目录

      • build.sbt:项目构建文件

    其中最为重要的是 build.sbtplugins.sbtapplication.confroutes 这四个文件,由它们决定了整个项目的体系。

    在 IDEA 中打开 Play 样例

    首先确认已经关闭运行 Play 的命令行,这一点很重要,因为 SBT 构建时,采用的是单任务模式,其他任务没有退出,将不能进行下一次任务。

    运行 IDEA,在欢迎页面点击 Open,选择下载下来的 入门样例

    继续展开,选择项目目录下的 build.sbt 文件,点击 OK 按钮:

    这是作为 SBT 项目来打开,那么我们选择 Open as Project

    所有选项都保持默认状态,点击 OK 按钮,这就在 IDEA 中打开了这个项目。

    需要注意的是,你有可能会看到 IDEA 提示需要安装 Scala 插件:

    点击 Install plugins,等待所有安装完成后,重启一下 IDEA,然后再下载一些依赖,比如 scala-sbt,这样就可以在 IDEA 中玩耍 Play 样例了。比较舒服的是,一般这样的步骤只需要进行一次,以后即便 IDEA 版本更新,也不用对此重复劳动。当然,Scala 插件相关的更新,另当别论。

    建立新的接口

    Play framework 项目基于 MVC 的程序设计结构,所以开发起来特别顺手。要创建一个新的 HTTP 接口,只需要先在 routes 文件中输入:

    GET        /custom              controllers.HomeController.custom
    

    然后打开 controllers 包中的 HomeController.java 文件:

    需要注意的是,你在 routes 中提供的路径,必须要有真实的 Java 类和方法对应,否则将不能编译通过。

    回归正题,我们加上签名名字为 custom 的方法:

    public Result custom() {
        return TODO;
    }
    

    差不多就是这个样子:

    Result 在 Play 中就是 HTTP 的 Response,包含很多内容,作为新手,暂不关心这些。而 TODO 是 Play 内置的预定义 Result 对象,和 ok(index.render(...)) 一样,位于 Results 这个静态工厂类中,所以你也随意选择其他的预定义 Result 对象,比如 notFound()

    这些由你自己决定,反正 Play 就是给你玩的。

    如果你还记得前面的内容,那你应该会去找 sbt.bat 文件,尝试 run 起来并在浏览器中访问新的接口。

    更厉害的萌新会对【Developer friendly】这个特性充满好奇,然后继续创建一些接口,在不停止 Play 项目的情况下,直接访问新接口,试一下 Hit refresh workflow 是否可行。

    事实上确实是可以的,你无需在编写代码之后重启 Play 项目,因此你可以用记事本装一装大神。

    通过 IDEA 启动项目

    首先,点击图片中被红色椭圆圈中的地方(二选一):

    选择 Edit Configurations... 选项,在弹出的窗口中,按照图片中的内容操作:

    Play 2 Appsbt Task 也是二选一,通常推荐 Play 2 App

    如果你选择了 sbt Task,那么你需要做如下的处理:

    Play 2 App 只需要给定一个别名:

    当然,如果 localhost:9000 不可用(比如启动多个 Play 项目的情况下),你可以在此选择其他端口。

    完成以上配置后,你可以选择 SBT 或者 APP,然后点击 Run 按钮。

    经过一段时间等待后,在 Play 2 App 下,会自动打开浏览器弹出主页。

    而在 sbt Task 下,你需要手动去访问接口:

    localhost:9000/custom
    

    到此就结束了萌新的体验之旅,感觉还是蛮神奇的,全程就是在 Play 嘛。

    总结

    Play 像玩具一样,三岁小孩都可以轻松上手,只要你有 Java 语言基础,并对 HTTP 有一定了解,那么你就可以胜任后台开发任务。

    所以到这里你可以,Play!玩后台去吧!

    相关文章

      网友评论

        本文标题:【Play framework 学习笔记】、新手入门

        本文链接:https://www.haomeiwen.com/subject/egyhnxtx.html