已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
2012年最新整理的Play framework框架學習文檔Play framework框架學習文檔1一、什么是Playframework3二、playframework框架的優(yōu)點4三、Play FrameWork開發(fā)入門51、準備工作52、新建項目53、環(huán)境變量配置74、MVC模型8app/controllers9app/models9app/views95、應用程序布局9app目錄9.class文件在哪兒?9public目錄10conf目錄10lib目錄106、創(chuàng)建簡單的helloworld程序10運行應用11創(chuàng)建FORM15提供更好的URL18自定義布局19添加驗證19自動化測試21一、什么是Playframework Play Framework是一個功能完整的Java Web開發(fā)框架。采用RESTful架構設計,簡便靈活。Play Framework使用MVC模式作為Web層,集成Hibernate管理持久層,Play Framework還使用一個基于Groovy的模板引擎。 Play Framework讓開發(fā)者無須重新編譯打包發(fā)布應用,即可看到修改后的效果,方便開發(fā)人員調試應用。 Play Framework采用了無狀態(tài)模型,是一個真正意義上的“無共享”系統,能夠在多個服務器上部署多個Play Framework的實例,所有實例都不會互相干擾。 Play Framework采用了Groovy作為模板引擎,讓表示層真正做到了開發(fā)高效簡潔 Play Framework擁有精確的錯誤定位機制,當錯誤發(fā)生的時候,可以精確的定位到錯誤代碼的位置。 Play Framework的速度很快,啟動快,運行的速度也十分快。注:RESTful架構:REST (REpresentation State Transfer) 描述了一個架構樣式的網絡系統,比如 web 應用程序。它首次出現在 2000 年 Roy Fielding 的博士論文中,他是 HTTP 規(guī)范的主要編寫者之一。REST 指的是一組架構約束條件和原則。滿足這些約束條件和原則的應用程序或設計就是 RESTfulWeb 應用程序最重要的 REST 原則是,客戶端和服務器之間的交互在請求之間是無狀態(tài)的。從客戶端到服務器的每個請求都必須包含理解請求所必需的信息。如果服務器在請求之間的任何時間點重啟,客戶端不會得到通知。此外,無狀態(tài)請求可以由任何可用服務器回答,這十分適合云計算之類的環(huán)境??蛻舳丝梢跃彺鏀祿愿倪M性能。另一個重要的 REST 原則是分層系統,這表示組件無法了解它與之交互的中間層以外的組件。通過將系統知識限制在單個層,可以限制整個系統的復雜性,促進了底層的獨立性。 當 REST 架構的約束條件作為一個整體應用時,將生成一個可以擴展到大量客戶端的應用程序。它還降低了客戶端和服務器之間的交互延遲。統一界面簡化了整個系統架構,改進了子系統之間交互的可見性。REST 簡化了客戶端和服務器的實現。詳細介紹:/view/5798116.htmGroovy模塊引擎:Groovy是一種新興的 Java 2 平臺語言。Groovy 代碼能夠與 Java 代碼很好地結合,也能用于擴展現有代碼。目前的 Groovy 版本是 1.6.3,在 Java 1.4 和 Java 5 平臺上都能使用,也能在 Java 6 上使用。 Groovy 是 JVM 的一個替代語言 替代 是指可以用 Groovy 在 Java 平臺上進行 Java 編程,使用方式基本與使用 Java 代碼的方式相同。注意:不是指Groovy替代java,而是指Groovy和java很好的結合編程 是一個基于 Java虛擬機的敏捷 動態(tài)語言。 構建在強大的Java語言之上 并 添加了從Python,Ruby和Smalltalk等語言中學到的 諸多特征。 為Java開發(fā)者提供了 現代最流行的編程語言特性,而且學習成本很低(幾乎為零)。 支持DSL(Domain Specific Languages領域定義語言)和其它簡潔的語法,讓你的代碼變得易于閱讀和維護。 Groovy擁有處理原生類型,面向對象以及一個Ant DSL,使得創(chuàng)建Shell Scripts變的非常簡單。 在開發(fā)Web,GUI,數據庫或控制臺程序時 通過 減少框架性代碼 大大提高了開發(fā)者的效率。 支持單元測試和模擬(對象),可以 簡化測試。 無縫集成 所有已經存在的 Java對象和類庫。 直接編譯成Java字節(jié)碼,這樣可以在任何使用Java的地方 使用Groovy。 Groovy 的一個好處是,它的語法與 Java 語言的語法很相似。雖然 Groovy 的語法源于 Smalltalk 和 Ruby 這類語言的理念,但是可以將它想像成 Java 語言的一種更加簡單、表達能力更強的變體。(在這點上,Ruby 與 Groovy 不同,因為它的語法與 Java 語法差異很大。) 許多 Java 開發(fā)人員非常喜歡 Groovy 代碼和 Java 代碼的相似性。從學習的角度看,如果知道如何編寫 Java 代碼,那就已經了解 Groovy 了。Groovy 和 Java 語言的主要區(qū)別是:完成同樣的任務所需的 Groovy 代碼比 Java 代碼更少。(有時候會少很多?。┒layframework框架的優(yōu)點1) 修改代碼及時生效!編輯java文件,保存,刷新瀏覽器,即可看到效果!無須編譯,部署,重啟服務器。2) 全棧式集成Hibernate,OpenID,Memcached還有強大的插件系統,提供了創(chuàng)建一個酷炫的web應用所需要的一切。3) 無狀態(tài)模式4) Play是一個真正的“Share nothing”的系統。適合REST,通過在多臺服務器運行同一個應用的多個實例,可以很容易地實現容量擴展。5) 快速的解決錯誤當發(fā)生錯誤時,Play會向你準確展示源代碼中產生問題的那一行代碼,即使是發(fā)生在模板中。6) 高校的模塊系統一個簡單的基于Groovy作為表達式語言的模塊系統。它提供了模塊的繼承,包含和標簽的功能。7) 有趣&高校幫助你節(jié)省等待java應用重啟的時間,提高生產效率,更快地完成工程。8) 異步基于非阻塞IO模型,允許創(chuàng)建基于長輪詢和WebSockets的現代WebSockets的現代Web應用。9) 純粹的Java使用Java進行編碼,可以使用任何的Java庫,可以使用你喜歡的IDE,可以與eclipse或者netbeans優(yōu)雅地結合。三、Play FrameWork開發(fā)入門1、準備工作官方網站:下載最新版本的play-1.2.3.zip開發(fā)包。將下載的包解壓,解壓后的路徑最好不要包括空格、中文之類的,好像會有問題。2、新建項目將下載的play-1.2.3.zip開發(fā)包解壓并進行環(huán)境變量的配置(也可不需要配置環(huán)境變量,但要在運行時要完整絕對路徑)打開cmd命令窗口,鍵入cd play壓縮目錄,接著輸入play new 新建項目名稱,運行項目輸入play run 項目名稱。如果沒有報錯證明項目可以運行,接著輸入 play eclipsify 項目名稱,才可導入項目到eclipsify,打開eclipse,導入剛才新建的項目即可。3、環(huán)境變量配置Path: C:Program FilesJavajdk1.6.0_21bin;CLASSPATH: .;%JAVA_HOME%libdt.jar;%JAVA_HOME%libtools.jar;JAVA_HOME: C:JDK(jdk安裝路徑)4、MVC模型Play應用遵循Web架構使用的MVC架構模式。它將應用分離到不同的層中:表現層(Presentation)和模型層(Model)。表現層進一步分為視圖(View)和控制器(Controller)。 Model 是應用所處理信息的領域表述(Domain-Specific Representation)。絕大多數應用使用持久化機制如數據庫存儲數據。但是MVC并沒有特別提到數據訪問層,因為它屬于下層,由模型封裝。 View 將模型渲染成適合交互的表單,通常是用戶界面。一個模型可有多個不同目的視圖。Web應用中,View通常以HTML,XML或JSON形式呈現,也可能是二進制的Chart。 Controller處理事件(通常是用戶動作),并對模型做相應改變。Web應用中,事件通常是HTTP請求:Controller監(jiān)聽HTTP請求,從其中提取數據,如查詢字符串參數,請求頭,然后改變下層模型對象。 Play將此三層分在app目錄下的不同package中。app/controllers一個Controller就是一個Java 類,它的靜態(tài)公共方法則是動作(Action)。動作是接收HTTP請求后的Java處理入口點。Controller類實際是面向過程的,非OO。Action從HTTP請求中提取數據,讀或更新Model對象,然后返回一個包裝成HTTP響應(HTTP Response)的結果。app/modelsModel是一組具有所有OO特性的Java類。包含數據結構和應用可使用的操作。(譯注:即充血模型)。支持通過JPA持久化。app/views應用的視圖由Play的模板系統生成。Controller從Model獲取數據,然后使用模板呈現它。此package包含HTML,XML等模板文件,用作動態(tài)生成模型的表述(Representation)。5、應用程序布局app目錄包含所有可執(zhí)行的工件:Java源代碼和視圖模板。其下有三個標準package,每個代表MVC的一層。你也能添加你自己的包,如示例的utils包。View pacakge可以在分子packages: tags 存儲應用的ta。如可重用的模板片段。 一個Controller一個view目錄,按慣例,每個Controller的相關模板存儲在自己的子目錄中。 .class文件在哪兒?Play在運行時編譯Java源代碼,并將編譯的類緩存在tmpbytecode目錄下。Play應用的可執(zhí)行工件時.java源文件,不是已編譯的.class(譯注:包括jar文件)。public目錄存儲靜態(tài)的、由Web服務器直接處理的資源。分為三個子目錄:images,stylesheets和javascripts,分別放圖片,css和js。conf目錄包含應用的所有配置文件。兩個必須文件為: application.conf: 應用主配置文件,包含所有標準的配置選項。 routes:url路由規(guī)則定義文件。 此目錄包含在Java ClassPath中。lib目錄存放應用依賴的標準Java類庫。此目錄自動添加到Java classpath中。6、創(chuàng)建簡單的helloworld程序打開CMD,執(zhí)行:play new helloworld Play new 命令在當前路徑下創(chuàng)建了一個helloworld目錄,其中包含一系列文件和目錄,重要的如下:app/ 包含應用核心,分為models,controllers和views目錄。.java生活的地方_conf/包含應用的所有配置。application.conf應用主配置.routes定義url路由規(guī)則,messages國際化用。lib/ 包含應用依賴的標準.jar文件。public/包含所有外部可訪問的資源:js,css和image。test/包含所有應用的測試程序。測試程序基于JUnit或Selenium。注:Play要求所有文件必須是UTF-8編碼。等等應用的.class文件在哪兒。恩,Play不使用class文件而是直接讀取Java源文件,并使用Eclipse compiler編譯他們。這導致兩件重要的事情。首先運行時Play會檢查你對源文件所作的變更并自動加載它們。其次,當發(fā)生異常時,Play將創(chuàng)建更好的錯誤報告并附加相關運行應用在cmd中鍵入play run helloworld,play啟動Web Server并監(jiān)聽9000端口打開瀏覽器鍵入http:/localhost:9000/,應用顯示了一個缺省的歡迎頁現在,看下此頁是如何顯示的。應用的主入口點配置在conf/routes文件中。它定義了應用所有可訪問的URL。打開routes文件,會看到第一個route:GET / Application.index它告訴Play,當/路徑收到GET請求后調用Application.indexJava方法。它是controllers.Application.index的縮寫,因為controllers包是隱式的附加的。創(chuàng)建標準Java應用時,通常使用一個入口點即main方法。Play應用則有多個,一個URL一個。這些方法稱為action方法。定義action方法的類稱為controller。打開helloworld/app/controllers/Application.java:package controllers;import play.*;import play.mvc.*;import java.util.*;import models.*;public class Application extends Controller public static void index() render(); 看到Application擴展了play.mvcController類。它提供了所有Controller需要使用的方法,如index動作中使用的render方法。index方法定義成public static void,因為Controller永遠無需實例化和返回值。(譯注:為了防止被使用者引入狀態(tài),并讓Controller自然、干凈而如此設計。但副作用是render只能通過throw扔出結果,用異常當GOTO,可謂兵行詭道)。缺省的index動作調用render方法,通知Play渲染一個模板。模板是app/views目錄下一個簡單的text文件。此處使用Application/index.html打開helloworld/app/views/Application/index.html文件:#extends main.html /#set title:Home /#welcome /其中的內容是Play tag,類似JSP taglib.#welcome/tag生成了之前看到的歡迎消息。#extends/tags告訴Play此模板集成另一個main.html的模板.模板繼承可用來創(chuàng)建復雜的web也并重用公共部分。打開helloworld/app/views/main.html模板 #get title / #get moreStyles / #get moreScripts / #doLayout / 看到#doLayout/tag嗎?是Application/index.html插入的位置。創(chuàng)建FORM編輯helloworld/app/views/Application/index.html模板#extends main.html /#set title:Home / 我們使用符號請求Play自動產生調用Application.sayHello動作的方法。刷新瀏覽器。Oops,出錯了。因為引用了一個不存在的動作。需要在helloworld/app/controllers/Application.java中創(chuàng)建:package controllers;import play.mvc.*;public class Application extends Controller public static void index() render(); public static void sayHello(String myName) render(myName); 我們聲明了myName參數,它會自動映射到form提交的HTTP請求的myName參數。刷新瀏覽器。輸入name提交,出現另一個錯誤.因為Play渲染此動作的缺省模板時,沒有找到它。我們創(chuàng)建文件helloworld/app/views/Application/sayHello.html#extends main.html /#set title:Home /Hello $myName ?: guest! Back to form然后刷新:提供更好的URL看下提交的url:http:/localhost:9000/application/sayhello?myName=chaos它不夠RESTful。因為Play通過缺省規(guī)則捕獲了此URL* /controller/action controller.action可以編輯helloworld/conf/routes文件在缺省規(guī)則前添加一條規(guī)則,提供更自然的hello urlGET /hello Application.sayHello自定義布局可以修改模板更改布局。編輯helloworld/app/views/main.html文件:添加驗證給form添加一個驗證,要求name字段必填。我們通過Play validation實現。編輯helloworld/app/controllers/Application.java,在sayHello action處:public static void sayHello(Required String myName) if (validation.hasErrors() flash.error(Oops, please enter your name!); index(); render(myName); 并import play.data.validation.*。Required告訴Play自動檢查myName字段是否填寫。如果驗證失敗,我們加入一條消息到flash scope中并重定向到index動作。flash scope允許在重定向時保持消息。編輯helloworld/app/views/Application/index.html顯示錯誤消息#extends main.html /#set title:Home / #if flash.error $flash.error #/if 輸入空參數并提交,OK起作用了。自動化測試Selenium Test在測試模式下運行應用。在cmd中輸入play test helloworld。打開瀏覽器,輸入http:/localhost:9000/tests啟動測試器。執(zhí)行測試Selenium測試用例通常寫成一個html文件。Play使用Play模板引擎生成這些文件。helloworld/test/Application.test.html文件:* You can use plain selenium command using the selenium tag *#selenium / Open the home page, and check that no error occured open(/) assertNotTitle(Application error)#/selenium此測試打開
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 課程設計三層電梯
- 道勘課程設計范文
- 2025年度合同履行違約賠償合同4篇
- 二零二五年度門窗安裝與室外照明系統合同4篇
- 幼兒園墻面介紹課程設計
- 年度液壓件液力件市場分析及競爭策略分析報告
- 2025年度食堂環(huán)境衛(wèi)生管理承包服務合同4篇
- 2025年度企業(yè)間財務信息保密協議范本模板2篇
- 2025年度食堂承包商服務品質提升協議4篇
- 2025年度農業(yè)機械設備采購合同范本:農機購置合作協議3篇
- 細胞庫建設與標準制定-洞察分析
- 2024年國家公務員錄用考試公共基礎知識復習題庫2500題及答案
- DB3309T 98-2023 登步黃金瓜生產技術規(guī)程
- 2024年萍鄉(xiāng)衛(wèi)生職業(yè)學院單招職業(yè)技能測試題庫標準卷
- DBJ41-T 108-2011 鋼絲網架水泥膨脹珍珠巖夾芯板隔墻應用技術規(guī)程
- 2025年學長引領的讀書會定期活動合同
- 表內乘除法口算l練習題1200道a4打印
- 《EICC培訓講義》課件
- 2025年四川省政府直屬事業(yè)單位招聘管理單位筆試遴選500模擬題附帶答案詳解
- 2024年物業(yè)公司服務質量保證合同條款
- 文言文閱讀之理解實詞含義(講義)-2025年中考語文專項復習
評論
0/150
提交評論