Play framework | 新手入門

前言

最開始接觸 Play Framework 是從 Android 開發(fā)轉(zhuǎn)型為 Java 后端開發(fā),公司有現(xiàn)成的項(xiàng)目可以模仿,再加上本身對新技術(shù)的追求,便義無反顧地?fù)肀Я怂V蠡ㄙM(fèi)不少時(shí)間打磨鉆研,對比以前了解過的 JavaEE 開發(fā),深覺 Play 真是太方便了。

我不想復(fù)制 Play 官網(wǎng)上的介紹,我覺得找到這篇新手入門文章的同學(xué),都是對 Play 有一定的興趣,或者也像我一樣,有現(xiàn)成的項(xiàng)目需要快速了解它。

不管怎樣,你需要知道的就是,Play 也是排行前五的 Java Web 開發(fā)框架,通過 環(huán)信-本周頭條 你可以找到它的身影,里面有一些比較中立的觀點(diǎn)。

另外,從開發(fā)者角度來看,Play 也是一個(gè)全棧式開發(fā)框架,使用簡單的前端技術(shù)(HTML、CSS 和 JavaScript)加上內(nèi)置的模板引擎,就可以渲染出絢麗多彩的網(wǎng)頁,并且它從上到下都是純異步的,基于線程池對每個(gè)請求都分配處理線程,構(gòu)建于 Java8 之上的 Play 天生就支持并發(fā)編程,可以更合理地分配資源。

正文

更新這篇新手入門時(shí),Play 的版本是 2.6.15,所以接下來的內(nèi)容,都是基于這個(gè)版本的吐槽。

現(xiàn)在 Play Framework 官方發(fā)布的穩(wěn)定版本是:2.8.0

而 Github 上的 Play 倉庫已經(jīng)在著手準(zhǔn)備 2.9.0-SNAPSHOT 版本。

由此可見,Play 的社區(qū)也很活躍,至少他們在積極開發(fā)新功能和修復(fù)缺陷。

一、快速啟動

按照慣例,我們通過啟動一個(gè) Hello World 項(xiàng)目,來觀察 Play Framework 到底有多簡單。

1.1 準(zhǔn)備環(huán)境

查看 Play Requirements 得知運(yùn)行 Play 程序需要:

  1. Java SE 1.8 或更高版本
  2. 構(gòu)建工具:推薦是最新版本的 SBT。

我不準(zhǔn)備介紹如何搭建開發(fā)環(huán)境,因?yàn)檫@是 Java 開發(fā)的基本功,即便你現(xiàn)在不會搭建,通過百度/谷歌等搜索引擎,你也可以輕松學(xué)會這一點(diǎn)。

對于構(gòu)建工具,其實(shí)只要你使用 IntelliJ IDEA 旗艦版,那就不用額外下載,IDEA 已經(jīng)內(nèi)置好了。另外,在所有 Play 的樣例中,也是自帶了構(gòu)建工具,所以暫時(shí)可以跳過它們。

1.2 下載運(yùn)行

包含 Hello World 的示例項(xiàng)目已經(jīng)打包成 zip 壓縮文件,并且擁有兩個(gè)不同的開發(fā)語言版本:

這里我們下載 Java 版本,并解壓出來:

在 Windows 10 上,按住 Shift 鍵點(diǎn)擊目錄中的空白部分,選擇 在此處打開 Powershell 窗口(S),然后輸入命令 ./sbt run 即可運(yùn)行。

你也可以通過其他命令行跳轉(zhuǎn)到這個(gè)目錄,然后運(yùn)行 ./sbt run 命令。

經(jīng)過漫長的等待后,Play 程序終于運(yùn)行成功:

通過在瀏覽器中訪問 http://localhost:9000 可以看到 Play 呈現(xiàn)在用戶面前的樣子:

提示:Play 在開發(fā)模式下內(nèi)置了熱部署插件,因此每當(dāng)訪問 Play 應(yīng)用時(shí),如果檢測到未編譯字節(jié)碼(或源代碼已被修改),則會自動觸發(fā)一次編譯(需要等待一會兒),以便展現(xiàn)最新樣式。

二、基本開發(fā)

Play 2.8.0 版本的主頁完全變了模樣,不過不用擔(dān)心,所謂萬變不離其宗,只要知曉其中的關(guān)鍵開發(fā)流程,它再怎么變也不怕。

2.1 路由表

首先用記事本打開示例項(xiàng)目中的 confg/routes 文件:

路由表提供所有接口的相關(guān)信息,我們可以試著添加以下內(nèi)容到文件尾行并保存:

GET  /hello  controllers.HomeController.hello

然后我們刷新瀏覽器,查看 Play 是否重新編譯代碼,以及在編譯過程中出錯(cuò),是如何反饋的:

非常清晰的錯(cuò)誤反饋,它告訴我們,在哪個(gè)文件的哪一行代碼出了問題,具體是在 controllers.HomeController 中沒有找到 hello 成員。

2.2 控制器

現(xiàn)在讓我們打開 app/controllers/HomeController,添加一個(gè) hello 方法:

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

訪問 http://localhost:9000/hello,看看 Play 會帶給我們什么樣的信息:

2.3 視圖渲染

接下來,我們復(fù)制 app/views/index.scala.htmlapp/views/hello.scala.html,修改并保存:

做完這一步,我們還需要引用這個(gè)新文件,現(xiàn)在進(jìn)入 app/controlles/HomeControllerhello 方法,修改為以下內(nèi)容:

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

現(xiàn)在讓我們刷新瀏覽器,看看發(fā)生了什么變化:

Play 的視圖由 Twirl 引擎負(fù)責(zé)渲染,它通過一些模板語法將各個(gè)頁面模塊化,開發(fā)者只需要關(guān)心 <body> 里面的細(xì)節(jié),而不用每次都添加 HTML 的重復(fù)內(nèi)容。

本節(jié)內(nèi)容基本參考 http://localhost:9000/tutorial 教程,有興趣的同學(xué)可以深入探索一下。

三、官方文檔

我希望簡單介紹一下官方文檔,以便大家遇到問題,可以第一時(shí)間找到解決方案。

Play 官方網(wǎng)站分為三大部分:1.開始入門;2.閱讀文檔;3.加入討論。

第一部分的開始入門,我們已經(jīng)在前面簡單學(xué)習(xí)過,想要深入了解的話,可以點(diǎn)擊傳送門進(jìn)去看看。

第三部分的加入討論,不是本文的重點(diǎn),因此將略過不提,有興趣的同學(xué)可以去一探究竟。

所以主要講解的是第二部分:閱讀文檔。

3.1 文檔側(cè)邊欄

在文檔側(cè)邊欄的頂部位置,可以選擇文檔版本、開發(fā)語言文檔語言,可惜沒有中文。

接下來是文檔主目錄,列舉了一些文檔章節(jié),比如:最新發(fā)布、開始入門、Hello World 教程等等。

最后是一些相關(guān)書籍,有興趣的同學(xué)可以看看。

3.2 文檔核心

整個(gè)文檔的核心部分是 Working with Play 章節(jié),大概看一下它的結(jié)構(gòu):

它分為 Java 開發(fā)者和 Scala 開發(fā)者需要了解的內(nèi)容,以及公共的主題。

這里以 Java 開發(fā)者的主要內(nèi)容為例,列舉需要重點(diǎn)了解的內(nèi)容:

還有公共主題里面的重點(diǎn)了解內(nèi)容:

文檔的其他內(nèi)容也非常重要,只是對于初級開發(fā)者來說,除非項(xiàng)目需要,否則只是看看即可。

四、在 IntelliJ IDEA 中開發(fā) Play

這部分內(nèi)容是以前寫的,可能與最新版本的 Play 有一點(diǎn)點(diǎn)出入,僅供參考。

4.1 打開 Play 項(xiàng)目

首先確認(rèn)已經(jīng)關(guān)閉運(yùn)行 Play 的命令行,這一點(diǎn)很重要,因?yàn)?[SBT] 構(gòu)建時(shí),采用的是單任務(wù)模式,其他任務(wù)沒有退出,將不能進(jìn)行下一次任務(wù)。

運(yùn)行 IDEA,在歡迎頁面點(diǎn)擊 Open,選擇下載下來的 [入門樣例]:

繼續(xù)展開,選擇項(xiàng)目目錄下的 build.sbt 文件,點(diǎn)擊 OK 按鈕:

這是作為 [SBT] 項(xiàng)目來打開,那么我們選擇 Open as Project

所有選項(xiàng)都保持默認(rèn)狀態(tài),點(diǎn)擊 OK 按鈕,這就在 IDEA 中打開了這個(gè)項(xiàng)目。

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

點(diǎn)擊 Install plugins,等待所有安裝完成后,重啟一下 IDEA,然后再下載一些依賴,比如 scala-sbt,這樣就可以在 IDEA 中玩耍 Play 樣例了。比較舒服的是,一般這樣的步驟只需要進(jìn)行一次,以后即便 IDEA 版本更新,也不用對此重復(fù)勞動。當(dāng)然,Scala 插件相關(guān)的更新,另當(dāng)別論。

4.2 啟動 Play 項(xiàng)目

首先,點(diǎn)擊圖片中被紅色橢圓圈中的地方(二選一):

選擇 Edit Configurations... 選項(xiàng),在彈出的窗口中,按照圖片中的內(nèi)容操作:

Play 2 Appsbt Task 也是二選一,通常推薦 Play 2 App。

如果你選擇了 sbt Task,那么你需要做如下的處理:

Play 2 App 只需要給定一個(gè)別名:

當(dāng)然,如果 localhost:9000 不可用(比如啟動多個(gè) Play 項(xiàng)目的情況下),你可以在此選擇其他端口。

完成以上配置后,你可以選擇 SBT 或者 APP,然后點(diǎn)擊 Run 按鈕。

經(jīng)過一段時(shí)間等待后,在 Play 2 App 下,會自動打開瀏覽器彈出主頁。

而在 sbt Task 下,你需要打開瀏覽器去訪問:

localhost:9000

隨后你將看到【快速啟動】那一節(jié),你所看到的頁面。

總結(jié)

Play 像玩具一樣,三歲小孩都可以輕松上手QAQ,只要你有 Java 語言基礎(chǔ),并對 HTTP 有一定了解,那么你就可以勝任后臺開發(fā)任務(wù)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,781評論 25 709
  • 文丨劉子睿 丨 第18篇原創(chuàng) 丨 1000字 編者按: 個(gè)人品牌影響力對一個(gè)人的事業(yè)發(fā)展尤為重要。 01 個(gè)人品牌...
    子睿自媒體閱讀 555評論 0 0
  • 今天早上的課程分享: [愛心]聚焦:潛意識。 今早潘總的課程講了三個(gè)秘訣: 1、意念場 2、能量...
    兩面純真閱讀 280評論 0 0
  • 孟孟和騎士先生從小一起長大,孟孟最喜歡的便是騎士先生帶她到處玩耍,騎士先生會滿足她所有的要求,會背她飛高高,替她受...
    兔子孟孟閱讀 685評論 0 0

友情鏈接更多精彩內(nèi)容