前言
最開始接觸 Play Framework 是從 Android 開發(fā)轉(zhuǎn)型為 Java 后端開發(fā)猿诸,公司有現(xiàn)成的項(xiàng)目可以模仿,再加上本身對(duì)新技術(shù)的追求事秀,便義無(wú)反顧地?fù)肀Я怂布选V蠡ㄙM(fèi)不少時(shí)間打磨鉆研导俘,對(duì)比以前了解過的 JavaEE 開發(fā),深覺 Play 真是太方便了驳概。
我不想復(fù)制 Play 官網(wǎng)上的介紹赤嚼,我覺得找到這篇新手入門文章的同學(xué),都是對(duì) Play 有一定的興趣顺又,或者也像我一樣更卒,有現(xiàn)成的項(xiàng)目需要快速了解它。
不管怎樣稚照,你需要知道的就是蹂空,Play 也是排行前五的 Java Web 開發(fā)框架俯萌,通過 環(huán)信-本周頭條 你可以找到它的身影,里面有一些比較中立的觀點(diǎn)上枕。
另外咐熙,從開發(fā)者角度來(lái)看,Play 也是一個(gè)全棧式開發(fā)框架辨萍,使用簡(jiǎn)單的前端技術(shù)(HTML棋恼、CSS 和 JavaScript)加上內(nèi)置的模板引擎,就可以渲染出絢麗多彩的網(wǎng)頁(yè)锈玉,并且它從上到下都是純異步的爪飘,基于線程池對(duì)每個(gè)請(qǐng)求都分配處理線程,構(gòu)建于 Java8 之上的 Play 天生就支持并發(fā)編程拉背,可以更合理地分配資源师崎。
正文
更新這篇新手入門時(shí),Play 的版本是 2.6.15
去团,所以接下來(lái)的內(nèi)容抡诞,都是基于這個(gè)版本的吐槽。
現(xiàn)在 Play Framework 官方發(fā)布的穩(wěn)定版本是:2.8.0
土陪。
而 Github 上的 Play 倉(cāng)庫(kù)已經(jīng)在著手準(zhǔn)備 2.9.0-SNAPSHOT 版本昼汗。
由此可見,Play 的社區(qū)也很活躍鬼雀,至少他們?cè)诜e極開發(fā)新功能和修復(fù)缺陷顷窒。
一、快速啟動(dòng)
按照慣例源哩,我們通過啟動(dòng)一個(gè) Hello World
項(xiàng)目鞋吉,來(lái)觀察 Play Framework 到底有多簡(jiǎn)單。
1.1 準(zhǔn)備環(huán)境
查看 Play Requirements 得知運(yùn)行 Play 程序需要:
- Java SE 1.8 或更高版本
- 構(gòu)建工具:推薦是最新版本的 SBT励烦。
我不準(zhǔn)備介紹如何搭建開發(fā)環(huán)境谓着,因?yàn)檫@是 Java 開發(fā)的基本功,即便你現(xiàn)在不會(huì)搭建坛掠,通過百度/谷歌等搜索引擎赊锚,你也可以輕松學(xué)會(huì)這一點(diǎn)。
對(duì)于構(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ā)語(yǔ)言版本:
這里我們下載 Java 版本,并解壓出來(lái):
在 Windows 10 上藐窄,按住 Shift 鍵點(diǎn)擊目錄中的空白部分资昧,選擇 在此處打開 Powershell 窗口(S)
,然后輸入命令 ./sbt run
即可運(yùn)行荆忍。
你也可以通過其他命令行跳轉(zhuǎn)到這個(gè)目錄格带,然后運(yùn)行 ./sbt run
命令。
經(jīng)過漫長(zhǎng)的等待后刹枉,Play 程序終于運(yùn)行成功:
通過在瀏覽器中訪問 http://localhost:9000
可以看到 Play 呈現(xiàn)在用戶面前的樣子:
提示:Play 在開發(fā)模式下內(nèi)置了熱部署插件叽唱,因此每當(dāng)訪問 Play 應(yīng)用時(shí),如果檢測(cè)到未編譯字節(jié)碼(或源代碼已被修改)微宝,則會(huì)自動(dòng)觸發(fā)一次編譯(需要等待一會(huì)兒)棺亭,以便展現(xiàn)最新樣式。
二蟋软、基本開發(fā)
Play 2.8.0
版本的主頁(yè)完全變了模樣镶摘,不過不用擔(dān)心,所謂萬(wà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 會(huì)帶給我們什么樣的信息:
2.3 視圖渲染
接下來(lái)玩徊,我們復(fù)制 app/views/index.scala.html
為 app/views/hello.scala.html
,修改并保存:
做完這一步邑遏,我們還需要引用這個(gè)新文件,現(xiàn)在進(jìn)入 app/controlles/HomeController
的 hello
方法恰矩,修改為以下內(nèi)容:
public Result hello() {
return ok(views.html.hello.render());
}
現(xiàn)在讓我們刷新瀏覽器记盒,看看發(fā)生了什么變化:
Play 的視圖由 Twirl 引擎負(fù)責(zé)渲染,它通過一些模板語(yǔ)法將各個(gè)頁(yè)面模塊化外傅,開發(fā)者只需要關(guān)心 <body>
里面的細(xì)節(jié)纪吮,而不用每次都添加 HTML 的重復(fù)內(nèi)容俩檬。
本節(jié)內(nèi)容基本參考 http://localhost:9000/tutorial
教程,有興趣的同學(xué)可以深入探索一下碾盟。
三棚辽、官方文檔
我希望簡(jiǎn)單介紹一下官方文檔,以便大家遇到問題冰肴,可以第一時(shí)間找到解決方案屈藐。
Play 官方網(wǎng)站分為三大部分:1.開始入門;2.閱讀文檔熙尉;3.加入討論联逻。
第一部分的開始入門,我們已經(jīng)在前面簡(jiǎn)單學(xué)習(xí)過检痰,想要深入了解的話包归,可以點(diǎn)擊傳送門進(jìn)去看看。
第三部分的加入討論铅歼,不是本文的重點(diǎn)公壤,因此將略過不提,有興趣的同學(xué)可以去一探究竟椎椰。
所以主要講解的是第二部分:閱讀文檔厦幅。
3.1 文檔側(cè)邊欄
在文檔側(cè)邊欄的頂部位置,可以選擇文檔版本俭识、開發(fā)語(yǔ)言慨削、文檔語(yǔ)言,可惜沒有中文套媚。
接下來(lái)是文檔主目錄缚态,列舉了一些文檔章節(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)容也非常重要茫多,只是對(duì)于初級(jí)開發(fā)者來(lái)說(shuō)祈匙,除非項(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聘裁,在歡迎頁(yè)面點(diǎn)擊 Open
,選擇下載下來(lái)的 [入門樣例]:
繼續(xù)展開弓千,選擇項(xiàng)目目錄下的 build.sbt
文件衡便,點(diǎn)擊 OK
按鈕:
這是作為 [SBT] 項(xiàng)目來(lái)打開,那么我們選擇 Open as Project
:
所有選項(xiàng)都保持默認(rèn)狀態(tài)洋访,點(diǎn)擊 OK
按鈕镣陕,這就在 IDEA 中打開了這個(gè)項(xiàng)目。
需要注意的是姻政,你有可能會(huì)看到 IDEA 提示需要安裝 Scala 插件:
點(diǎn)擊 Install plugins
呆抑,等待所有安裝完成后,重啟一下 IDEA汁展,然后再下載一些依賴鹊碍,比如 scala-sbt
,這樣就可以在 IDEA 中玩耍 Play 樣例了食绿。比較舒服的是侈咕,一般這樣的步驟只需要進(jìn)行一次,以后即便 IDEA 版本更新器紧,也不用對(duì)此重復(fù)勞動(dòng)耀销。當(dāng)然,Scala 插件相關(guān)的更新铲汪,另當(dāng)別論熊尉。
4.2 啟動(dòng) Play 項(xiàng)目
首先,點(diǎn)擊圖片中被紅色橢圓圈中的地方(二選一):
選擇 Edit Configurations...
選項(xiàng)掌腰,在彈出的窗口中狰住,按照?qǐng)D片中的內(nèi)容操作:
Play 2 App
和 sbt Task
也是二選一,通常推薦 Play 2 App
齿梁。
如果你選擇了 sbt Task
催植,那么你需要做如下的處理:
而 Play 2 App
只需要給定一個(gè)別名:
當(dāng)然,如果 localhost:9000
不可用(比如啟動(dòng)多個(gè) Play 項(xiàng)目的情況下),你可以在此選擇其他端口查邢。
完成以上配置后,你可以選擇 SBT
或者 APP
酵幕,然后點(diǎn)擊 Run
按鈕扰藕。
經(jīng)過一段時(shí)間等待后,在 Play 2 App
下芳撒,會(huì)自動(dòng)打開瀏覽器彈出主頁(yè)邓深。
而在 sbt Task
下,你需要打開瀏覽器去訪問:
localhost:9000
隨后你將看到【快速啟動(dòng)】那一節(jié)笔刹,你所看到的頁(yè)面芥备。
總結(jié)
Play 像玩具一樣,三歲小孩都可以輕松上手QAQ舌菜,只要你有 Java 語(yǔ)言基礎(chǔ)萌壳,并對(duì) HTTP 有一定了解,那么你就可以勝任后臺(tái)開發(fā)任務(wù)日月。