亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

[翻譯]Play框架1.2.7版本教程(1)

solocoder / 2270人閱讀

摘要:確保你的文本編輯器已經(jīng)做了相應(yīng)的配置。第一個,會自動監(jiān)測源代碼的改變并在運(yùn)行時自動重載。檢查下面的一行是否出現(xiàn)在應(yīng)用日志中使用版本控制系統(tǒng)來追蹤變化當(dāng)你開發(fā)一個項(xiàng)目時,最好使用版本控制系統(tǒng)來存儲你的源代碼。

Play是一個Java Web敏捷開發(fā)的框架
http://www.playframework.com/documentation/1.2.7/home

之所以要翻譯這個教程,是因?yàn)閷?shí)訓(xùn)的時候敲定用這個作為框架,于是我把相關(guān)教程翻譯給小伙伴學(xué)習(xí)學(xué)習(xí)?,F(xiàn)在就干脆放上來給大家分享分享

開始項(xiàng)目 介紹

在這個教程中,你將通過從頭到尾開發(fā)一個真正的Web應(yīng)用來學(xué)習(xí)Play框架,在這個應(yīng)用中,我們將嘗試用上你將在真實(shí)項(xiàng)目中需要的每樣技術(shù),同時介紹Play應(yīng)用開發(fā)的最佳實(shí)踐。

我們把教程分割成相互獨(dú)立的各部分。每個部分將介紹更為復(fù)雜的特性,并提供真實(shí)項(xiàng)目需要的每樣?xùn)|西:驗(yàn)證,錯誤處理,框架安全,自動化測試組件,一個高大上的用戶界面,一個管理面板,等等。

在本教程中的所有代碼都能被用于你的項(xiàng)目。我們鼓勵你復(fù)制粘貼代碼片段,整份搬去用也沒所謂。

項(xiàng)目

我們將開發(fā)(又一個)博客引擎。這不是一個非常有想象力的選擇,但是它將允許我們探索開發(fā)一個現(xiàn)代Web應(yīng)用的大多數(shù)技術(shù)。

為了讓過程更加燃一點(diǎn),我們將對不同的角色(編輯者,管理員)設(shè)置不同的權(quán)限。

這個博客引擎將以yabe為名。

  

這個教程也已作為范例隨下載包贈送。你可以在samples-and-tests/yabe/文件夾下找到成品代碼。

前提

首先,確保你已經(jīng)安裝了Java平臺。Play需要Java 5或以上的版本。

由于我們將需要頻繁使用命令行,最好還是使用類Unix的操作系統(tǒng)。如果你用的是Windows,那也沒問題;就是打命令的時候需要打多一點(diǎn)。

我們將假定你已經(jīng)有Java和Web開發(fā)(特別是HTML,CSS和Javascript)經(jīng)驗(yàn)。不過,你不需要熟悉JavaEE所有組件。Play是一個全棧Java框架,它提供了或者封裝了你將需要的全部Java API。沒用必要知道如何配置JPA實(shí)體管理器或部署一個JavaEE組件。

你將需要一個文本編輯器。如果更喜歡使用大而全的Java IDE,比如Eclipse或NetBeans,你當(dāng)然可以用它。不過即使使用簡單的文本編輯器,比如Textmate,Emacs或Vim,你也可以玩轉(zhuǎn)Play。因?yàn)榭蚣鼙旧頃幚砗镁幾g和部署的過程。我們很快就會看到這一點(diǎn)了……

在教程的后面,我們將使用Lighttpd和MySQL來展示如何在生產(chǎn)環(huán)境部署一個Play應(yīng)用。但即使你沒用安裝這些,play也可以運(yùn)行,這不是個問題。

安裝Play

安裝過程如絲般順滑。從下載頁面下載最新的二進(jìn)制包,然后在你喜歡的地方解壓它。

  

如果你用的是Windows,最好避免在路徑中混入空格。比如c:play就是個比c:Documents And Settingsuserplay更好的選擇。

為了方便操作,你需要添加Play文件夾到你的系統(tǒng)路徑中。這樣你就不需要在play命令前面敲一大通路徑名了。要想檢查安裝是否成功,打開一個新的命令行窗口,敲下play;應(yīng)該會出來play的基本使用幫助。

創(chuàng)建項(xiàng)目

現(xiàn)在Play已經(jīng)安好了,是時候開始寫博客應(yīng)用。創(chuàng)建一個Play應(yīng)用非常簡單,僅需要play命令行工具。之后會生成Play應(yīng)用的基本架構(gòu)。

打開一個新的命令行并敲入:

~$ play new yabe

它會提醒輸入應(yīng)用的全名。輸入Yet Another Blog Engine。

play new命令創(chuàng)建了一個新的文件夾yabe/外加一系列文件和文件夾。其中包括下面各部分:

app/ 包括應(yīng)用的核心,劃分為models,controllers和views文件夾。它也可以包括其他Java的包。這是.java源代碼文件所在之處。

conf/ 包括所有的應(yīng)用配置文件,特別是主application.conf文件,路由定義文件和用于國際化的信息文件。

lib/ 包括所有可選的Java庫,比如標(biāo)準(zhǔn)的.jar

public/ 包括所有可以公開的資源,比如Javascript文件,樣式表和圖片。

test/ 包括所有的應(yīng)用測試。測試可以是Java的JUnit測試或者Selenium測試。

  

因?yàn)镻lay只使用UTF-8編碼,故所有的文本文件都需要使用UTF-8編碼。確保你的文本編輯器已經(jīng)做了相應(yīng)的配置。

如果你開發(fā)過Java應(yīng)用,你可能會奇怪.class文件到哪兒去了。答案是……沒有.class文件了:Play并不使用任何class文件;相反它直接處理Java源代碼。實(shí)際上我們使用Eclipse的編譯器來即時編譯Java源代碼。

這導(dǎo)致了開發(fā)過程中的兩點(diǎn)重要的改進(jìn)。第一個,Play會自動監(jiān)測Java源代碼的改變并在運(yùn)行時自動重載。第二個,當(dāng)一個Java異常發(fā)生時,Play能向你展示更好的錯誤報(bào)告 - 帶對應(yīng)的源代碼的哦~

  

事實(shí)上Play在應(yīng)用的tmp/文件夾下有字節(jié)碼的緩存,但只用于加速重新啟動項(xiàng)目的過程。如果需要,你可以用play clean清空緩存。

運(yùn)行應(yīng)用

現(xiàn)在看一下新創(chuàng)建的應(yīng)用?;氐矫钚校袚Q到新創(chuàng)建的yabe/文件夾并輸入play run。Play將加載應(yīng)用,并在localhost:9000啟動一個服務(wù)器。

用瀏覽器打開http://localhost:9000,你將看到新的應(yīng)用。一個新的應(yīng)用用一個標(biāo)準(zhǔn)的歡迎頁面,告訴你一切安好。

下面看看一個新應(yīng)用是如何展示這個頁面的。

你的應(yīng)用的主入口是conf/routes文件。這個文件定義了應(yīng)用中所有合法的URL。如果你打開這個文件,就會看到第一個"route":

GET     /           Application.index

這里簡單地告訴Play,當(dāng)服務(wù)器收到對/路徑的一個GET請求,它要調(diào)用Java方法Application.index。在這個例子中,Application.indexcontrollers.Application.index的縮寫,因?yàn)?b>controllers包是默認(rèn)在內(nèi)的。

當(dāng)你創(chuàng)建單個Java應(yīng)用時,你通常用main方法定義一個單一入口:

public static void main(String[] args) {
  ... 
}

Play應(yīng)用有多個入口,每個URL對應(yīng)一個。我們稱之為action方法。action方法定義于被稱為controllers的類中。

讓我們看一下controllers.Application控制器長什么樣子。打開yabe/app/controllers/Application.java:

package controllers;

import play.mvc.*;

public class Application extends Controller {

    public static void index() {
        render();
    }

}

注意控制器類拓展了play.mvc.Controller。這個類提供了許多對控制器有用的方法,比如我們在index action用到的render()。

這個index action被定義為public static void方法。action方法都需要這樣定義。你可以看到這些方法都是static的,因?yàn)榭刂破黝愑肋h(yuǎn)不會實(shí)例化。它們同時也是public的,這樣框架才能調(diào)用它們來響應(yīng)URL請求。它們總是返回void。

這個index action很簡單:它調(diào)用render()方法來渲染模板。使用模板是大多數(shù)情況下生成HTTP響應(yīng)的方式。(但不是唯一的方式)

模板是位于/app/views的文本文件。因?yàn)槲覀儧]有指定一個模板,這個action就會使用默認(rèn)的Application/index.html

打開/yabe/app/views/Application/index.html看看模板長啥樣:

#{extends "main.html" /}
#{set title:"Home" /}

#{welcome /}

模板的內(nèi)容簡單明了。事實(shí)上,你看到的全部是Play標(biāo)簽。Play標(biāo)簽就像是JSP標(biāo)簽。#{welcome /}標(biāo)簽生成了你看到的歡迎信息。

#{extends /}標(biāo)簽告訴Play,這個模板是繼承自另一個叫main.html的模板。模板繼承是強(qiáng)大的特性,它允許你通過重用組件來創(chuàng)建復(fù)雜的Web頁面。

打開/yabe/app/views/main.html:



  
    #{get "title" /}
    
    
    #{get "moreStyles" /}
    
    
    #{get "moreScripts" /}
  
  
    #{doLayout /}
  

你看到靠近底部的#{doLayout /}標(biāo)簽了嗎?這是插入Application/index.html的內(nèi)容的地方。

我們來看看Play如何自動重新加載控制器文件。打開yabe/app/controllers/Application.java,刪掉render()后面的分號(來制造一個錯誤)

public static void index() {
    render()
}

在瀏覽器刷新頁面。你可以看到Play監(jiān)測到文件的變化,并重載了應(yīng)用控制器。但因?yàn)橹圃炝隋e誤,你將看到一個編譯錯誤。

Ok,現(xiàn)在更正錯誤,做一個真正的修改:

public static void index() {
    System.out.println("Yop");
    render();
}

這次,Play正確地重載了控制器,替換掉JVM中的舊代碼。每次請求/都會在控制臺輸出"Yop"信息。

你可以移開那行輸出代碼,現(xiàn)在修改yabe/app/views/Application/index.html模板,替換掉歡迎信息:

#{extends "main.html" /}
#{set title:"Home" /}

A blog will be here

如果Java代碼改變了,只需刷新頁面,就能看到修改結(jié)果。

  

我們還沒有開始寫博客應(yīng)用呢。你可以選擇使用文本編輯器或者IDE,比如Eclipse或NetBeans。如果你想使用IDE,參閱配置你喜歡的IDE。

配置數(shù)據(jù)庫

在開始碼代碼之前還要做多一件事。作為博客引擎,我們需要一個數(shù)據(jù)庫。為了便于開發(fā),Play內(nèi)置了一個叫H2的數(shù)據(jù)庫。當(dāng)然如果需要,我們也可以切換到一個更加健壯的數(shù)據(jù)庫。你可以選擇設(shè)置數(shù)據(jù)是存儲在內(nèi)存中,還是在文件系統(tǒng)中(這樣即使應(yīng)用重新啟動,你的數(shù)據(jù)也會保留)。

在一開始,我們將對應(yīng)用模型做許多測試和改動。因此,最好選擇存儲在內(nèi)存中,這樣每次啟動,都不會跟舊數(shù)據(jù)有任何牽連。

打開yabe/conf/application.conf,解除這一行的注釋:

db=mem

正如你在注釋中看到的一樣,你可以容易地配置任何JDBC數(shù)據(jù)庫,甚至配置連接池。

  

這個教程是按照純內(nèi)存數(shù)據(jù)庫撰寫的;如何在其他數(shù)據(jù)庫使用JPA的內(nèi)容超出了本教程的范疇。

現(xiàn)在,回到瀏覽器并刷新歡迎頁面。Play將自動啟動數(shù)據(jù)庫。檢查下面的一行是否出現(xiàn)在應(yīng)用日志中:

INFO  ~ Connected to jdbc:h2:mem:play
使用版本控制系統(tǒng)來追蹤變化

當(dāng)你開發(fā)一個項(xiàng)目時,最好使用版本控制系統(tǒng)(VCS)來存儲你的源代碼。如果發(fā)生什么問題,它允許你還原到上一個版本。同時它使得多人協(xié)作變得更方便,并且允許簽出應(yīng)用的各個版本。

當(dāng)在VCS中存儲Play應(yīng)用代碼時,記住把tmp/modules/,lib/test-result/logs文件夾排除在外。

如果你正在使用Eclipse,和play eclipsify命令,那么你也應(yīng)該把.classpatheclipse/排除在外。

Bazaar

這里我們將用Bazaar作為例子。Bazaar是一個分布式版本控制系統(tǒng)。

如何安裝Bazaar超出了本教程的范疇,但無論是何種系統(tǒng),安裝都很簡單。一旦你安裝好了,切到博客文件夾,并輸入命令初始化應(yīng)用版本:

$ bzr init
$ bzr ignore tmp
$ bzr ignore modules
$ bzr ignore lib
$ bzr ignore test-result
$ bzr ignore logs

現(xiàn)在我們可以提交我們的博客引擎的第一個版本:

$ bzr add
$ bzr commit -m "YABE initial version"
Git

Git是另一個分布式版本控制系統(tǒng),查看它的文檔來獲取更多信息。

在應(yīng)用的根目錄下創(chuàng)建一個git版本庫:

$ git init

創(chuàng)建包括下面各項(xiàng)的.gitignore

/tmp
/modules
/lib
/test-result
/logs

加入應(yīng)用的代碼,然后提交:

$ git add .
$ git commit -m "YABE initial version"

版本1已經(jīng)提交上去,現(xiàn)在我們的應(yīng)用已經(jīng)有了個堅(jiān)實(shí)的基礎(chǔ)。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/64078.html

相關(guān)文章

  • [翻譯]Play框架1.2.7版本教程(11) - 部署應(yīng)用

    摘要:對的詳細(xì)配置已經(jīng)超出了本教程的范圍,但大體上看上去像這樣然后在中加入下面一行,讓本地的反向代理能夠連接上你的應(yīng)用這才只是個開始如果一路上你一直跟著本教程,你應(yīng)該已經(jīng)懂得如何開發(fā)一個應(yīng)用了。 部署應(yīng)用 如今我們已經(jīng)完成了博客引擎了。讓我們來看一下一些部署Play應(yīng)用的步驟。 定義一個框架ID 一般,你需要部署你的應(yīng)用到一臺跟開發(fā)時不一樣的電腦。這臺電腦(很有可能是臺服務(wù)器)上面的P...

    Binguner 評論0 收藏0
  • [翻譯]Play框架1.2.7版本教程(5) - 設(shè)置驗(yàn)證碼

    摘要:設(shè)置驗(yàn)證碼任何人都可以在我們的博客下發(fā)布評論,所以我們需要避免非人類用戶來擾亂秩序。一個簡單的防范方法是設(shè)置驗(yàn)證碼。然后我們修改表單來顯示驗(yàn)證碼,并把寫入隱藏的域里面。檢查驗(yàn)證碼功能是否完成了。 設(shè)置驗(yàn)證碼 任何人都可以在我們的博客下發(fā)布評論,所以我們需要避免非人類用戶來擾亂秩序。一個簡單的防范方法是設(shè)置驗(yàn)證碼。 生成驗(yàn)證碼 如何利用Play框架來生成驗(yàn)證碼?簡單來說,我們需要增...

    姘存按 評論0 收藏0
  • [翻譯]Play框架1.2.7版本教程(4) - 瀏覽和提交評論

    摘要:瀏覽和提交評論博客主頁現(xiàn)在已經(jīng)完成,接下來要完成博客正文頁面。整個頁面將展示當(dāng)前文章的所有評論,還包括一個用于提交新的評論的表單。刷新瀏覽器,檢查這次是否使用了正確的。給模板添加表單在后面試下提交新的評論。 瀏覽和提交評論 博客主頁現(xiàn)在已經(jīng)完成,接下來要完成博客正文頁面。整個頁面將展示當(dāng)前文章的所有評論,還包括一個用于提交新的評論的表單。 創(chuàng)建show action 要顯示文章內(nèi)...

    AWang 評論0 收藏0
  • [翻譯]Play框架1.2.7版本教程(7) - 通過CRUD來實(shí)現(xiàn)一個基本的管理面板

    摘要:通過來實(shí)現(xiàn)一個基本的管理面板目前,我們還沒法使用博客的來寫新的文章,或修改評論。提供了一個即開即用的模塊,可以快速生成一個基本的管理面板。這是因?yàn)槟J(rèn)是以的輸出來得到一個模型對象的表示。在本教程的最后一章,你會學(xué)到關(guān)于本地化信息的更多東西。 通過CRUD來實(shí)現(xiàn)一個基本的管理面板 目前,我們還沒法使用博客的UI來寫新的文章,或修改評論。Play提供了一個即開即用的CRUD模塊,可以快速...

    騫諱護(hù) 評論0 收藏0
  • [翻譯]Play框架1.2.7版本教程(10) - 完成應(yīng)用測試

    摘要:完成應(yīng)用測試我們已經(jīng)完成了我們想要創(chuàng)建的博客引擎。當(dāng)然我們已經(jīng)完成了測試所有模型層的功能。評估代碼覆蓋率當(dāng)然我們還沒有完成應(yīng)用所需的所有測試用例。如你所見,我們遠(yuǎn)遠(yuǎn)沒有完成對應(yīng)用的全面測試。 完成應(yīng)用測試 我們已經(jīng)完成了我們想要創(chuàng)建的博客引擎。不過這個項(xiàng)目尚未完全結(jié)束。為了保證代碼的質(zhì)量,我們需要添加更多的測試。 當(dāng)然我們已經(jīng)完成了測試所有模型層的功能。所以博客引擎的核心功能已經(jīng)被...

    _Dreams 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<