Play framework | 新手入门

前言

最开始接触 Play Framework 是从 Android 开发转型为 Java 后端开发,公司有现成的项目可以模仿,再加上本身对新技术的追求,便义无反顾地拥抱了它。之后花费不少时间打磨钻研,对比以前了解过的 JavaEE 开发,深觉 Play 真是太方便了。

我不想复制 Play 官网上的介绍,我觉得找到这篇新手入门文章的同学,都是对 Play 有一定的兴趣,或者也像我一样,有现成的项目需要快速了解它。

不管怎样,你需要知道的就是,Play 也是排行前五的 Java Web 开发框架,通过 环信-本周头条 你可以找到它的身影,里面有一些比较中立的观点。

另外,从开发者角度来看,Play 也是一个全栈式开发框架,使用简单的前端技术(HTML、CSS 和 JavaScript)加上内置的模板引擎,就可以渲染出绚丽多彩的网页,并且它从上到下都是纯异步的,基于线程池对每个请求都分配处理线程,构建于 Java8 之上的 Play 天生就支持并发编程,可以更合理地分配资源。

正文

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

现在 Play Framework 官方发布的稳定版本是:2.8.0

而 Github 上的 Play 仓库已经在着手准备 2.9.0-SNAPSHOT 版本。

由此可见,Play 的社区也很活跃,至少他们在积极开发新功能和修复缺陷。

一、快速启动

按照惯例,我们通过启动一个 Hello World 项目,来观察 Play Framework 到底有多简单。

1.1 准备环境

查看 Play Requirements 得知运行 Play 程序需要:

  1. Java SE 1.8 或更高版本
  2. 构建工具:推荐是最新版本的 SBT。

我不准备介绍如何搭建开发环境,因为这是 Java 开发的基本功,即便你现在不会搭建,通过百度/谷歌等搜索引擎,你也可以轻松学会这一点。

对于构建工具,其实只要你使用 IntelliJ IDEA 旗舰版,那就不用额外下载,IDEA 已经内置好了。另外,在所有 Play 的样例中,也是自带了构建工具,所以暂时可以跳过它们。

1.2 下载运行

包含 Hello World 的示例项目已经打包成 zip 压缩文件,并且拥有两个不同的开发语言版本:

  • Play Java Starter Example
  • Play Scala Starter Example

这里我们下载 Java 版本,并解压出来:

Play framework | 新手入门_第1张图片

在 Windows 10 上,按住 Shift 键点击目录中的空白部分,选择 在此处打开 Powershell 窗口(S),然后输入命令 ./sbt run 即可运行。

你也可以通过其他命令行跳转到这个目录,然后运行 ./sbt run 命令。

经过漫长的等待后,Play 程序终于运行成功:

Play framework | 新手入门_第2张图片

通过在浏览器中访问 http://localhost:9000 可以看到 Play 呈现在用户面前的样子:

Play framework | 新手入门_第3张图片

提示:Play 在开发模式下内置了热部署插件,因此每当访问 Play 应用时,如果检测到未编译字节码(或源代码已被修改),则会自动触发一次编译(需要等待一会儿),以便展现最新样式。

二、基本开发

Play 2.8.0 版本的主页完全变了模样,不过不用担心,所谓万变不离其宗,只要知晓其中的关键开发流程,它再怎么变也不怕。

2.1 路由表

首先用记事本打开示例项目中的 confg/routes 文件:

Play framework | 新手入门_第4张图片

路由表提供所有接口的相关信息,我们可以试着添加以下内容到文件尾行并保存:

GET  /hello  controllers.HomeController.hello

然后我们刷新浏览器,查看 Play 是否重新编译代码,以及在编译过程中出错,是如何反馈的:

Play framework | 新手入门_第5张图片

非常清晰的错误反馈,它告诉我们,在哪个文件的哪一行代码出了问题,具体是在 controllers.HomeController 中没有找到 hello 成员。

2.2 控制器

现在让我们打开 app/controllers/HomeController,添加一个 hello 方法:

    public Result hello() {
        return ok("hello Play!");
    }

访问 http://localhost:9000/hello,看看 Play 会带给我们什么样的信息:

Play framework | 新手入门_第6张图片

2.3 视图渲染

接下来,我们复制 app/views/index.scala.htmlapp/views/hello.scala.html,修改并保存:

Play framework | 新手入门_第7张图片

做完这一步,我们还需要引用这个新文件,现在进入 app/controlles/HomeControllerhello 方法,修改为以下内容:

    public Result hello() {
        return ok(views.html.hello.render());
    }

现在让我们刷新浏览器,看看发生了什么变化:

Play framework | 新手入门_第8张图片

Play 的视图由 Twirl 引擎负责渲染,它通过一些模板语法将各个页面模块化,开发者只需要关心 里面的细节,而不用每次都添加 HTML 的重复内容。

本节内容基本参考 http://localhost:9000/tutorial 教程,有兴趣的同学可以深入探索一下。

三、官方文档

我希望简单介绍一下官方文档,以便大家遇到问题,可以第一时间找到解决方案。

Play 官方网站分为三大部分:1.开始入门;2.阅读文档;3.加入讨论。

第一部分的开始入门,我们已经在前面简单学习过,想要深入了解的话,可以点击传送门进去看看。

第三部分的加入讨论,不是本文的重点,因此将略过不提,有兴趣的同学可以去一探究竟。

所以主要讲解的是第二部分:阅读文档。

3.1 文档侧边栏

在文档侧边栏的顶部位置,可以选择文档版本开发语言文档语言,可惜没有中文。

Play framework | 新手入门_第9张图片

接下来是文档主目录,列举了一些文档章节,比如:最新发布、开始入门、Hello World 教程等等。

Play framework | 新手入门_第10张图片

最后是一些相关书籍,有兴趣的同学可以看看。

3.2 文档核心

整个文档的核心部分是 Working with Play 章节,大概看一下它的结构:

Play framework | 新手入门_第11张图片

它分为 Java 开发者和 Scala 开发者需要了解的内容,以及公共的主题。

这里以 Java 开发者的主要内容为例,列举需要重点了解的内容:

Play framework | 新手入门_第12张图片

还有公共主题里面的重点了解内容:

Play framework | 新手入门_第13张图片

文档的其他内容也非常重要,只是对于初级开发者来说,除非项目需要,否则只是看看即可。

四、在 IntelliJ IDEA 中开发 Play

这部分内容是以前写的,可能与最新版本的 Play 有一点点出入,仅供参考。

4.1 打开 Play 项目

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

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

Play framework | 新手入门_第14张图片

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

Play framework | 新手入门_第15张图片

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

Play framework | 新手入门_第16张图片

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

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

Play framework | 新手入门_第17张图片

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

Play framework | 新手入门_第18张图片

4.2 启动 Play 项目

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

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

Play framework | 新手入门_第19张图片

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

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

Play framework | 新手入门_第20张图片

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

Play framework | 新手入门_第21张图片

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

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

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

而在 sbt Task 下,你需要打开浏览器去访问:

localhost:9000

随后你将看到【快速启动】那一节,你所看到的页面。

总结

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

你可能感兴趣的:(Play framework | 新手入门)