<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # Play 框架簡介 原文:http://zetcode.com/java/play/ 這是 Play 框架的入門教程。 我們使用 Play 創建簡單的 Web 應用。 本教程使用 Play 版本 2.5。 Play 是一個用 Scala 和 Java 編寫的開源 Web 應用框架。 Play 由 Guillaume Bort 于 2007 年創建。Play 受 ASP.NET MVC,Ruby on Rails 和 Django 的極大啟發。 Play 與 Dropwizard,Ninja 框架或 Jodd 等其他框架一起屬于下一代 Java Web 框架。 使用模型視圖控制器(MVC)架構模式構建播放。 傳統的 MVC 模式將應用分為三個部分:模型,視圖和控制器。 該模型表示應用中的數據。 視圖是數據的視覺表示。 最后,控制器處理并響應事件(通常是用戶操作),并可以調用模型上的更改。 這個想法是通過引入一個中間組件:控制器,將數據訪問和業務邏輯與數據表示和用戶交互分開。 為了優化開發者的生產力,它使用約定而非配置和熱代碼重載。 優于配置的約定是一種軟件設計范式,軟件框架使用它來減少設置項目所需的工作。 諸如 Ruby on Rails 或 Play 之類的框架將合理的默認值用于項目結構,將對象屬性與表列相關聯或為視圖命名。 該范式也稱為約定編碼。 ## Play 的主要功能 以下是 Play 的主要功能列表: * Play 默認情況下將 JBoss Netty 用于 Web 服務器。 * 它使用 Scala SBT 構建工具來構建應用。 * 這是一個 RESTful 框架。 * 它具有基于 JPA 的持久層。 * 它使用 Scala 作為模板引擎。 * 它是一個完整的棧框架,其中包含許多常見開發任務的庫,例如 JSON 解析,驗證,持久性或認證。 Play 放棄了 Java Web 開發中使用的許多傳統方法。 它不使用 servlet,也不會將項目打包到 WAR 檔案中。 它不使用巨大的整體 Web 應用服務器(JBoss,Glassfish)和 XML 配置文件。 ## 安裝 Play Play 是 Maven 倉庫中可用的一系列庫。 可以使用任何構建工具來創建 Play 應用。 默認情況下,Play 使用 Sbt 構建工具(默認的 Scala 構建工具)創建 Play 應用。 要創建 Play 應用,我們使用稱為激活器的工具。 激活器包括一個 Sbt 構建工具,一組和項目模板以及一個用于管理項目的 Web 界面。 兩個重要的種子模板是 Scala 開發者使用的`play-scals`和 Java 開發者使用的`play-java`。 從 Play 框架的[項目頁面](https://www.playframework.com/download)中,我們下載了激活器。 我們建議下載整個脫機發行版。 下載發行版后,我們將包解壓縮到所選目錄。 我們將其放入主目錄的`bin`子目錄中。 ```java $ export PATH=$PATH:~/bin/activator-dist-1.3.10/bin/ ``` 我們將激活器的`bin`目錄添加到`PATH`變量中。 ## 創建 Play 應用 現在,我們將創建一個新的 Play 應用。 ```java $ activator new first play-java ``` 該命令創建一個名為`first`的新 Play Java 應用。 ```java $ cd first $ tree . ├── app │ ├── controllers │ │ ├── AsyncController.java │ │ ├── CountController.java │ │ └── HomeController.java │ ├── filters │ │ └── ExampleFilter.java │ ├── Filters.java │ ├── Module.java │ ├── services │ │ ├── ApplicationTimer.java │ │ ├── AtomicCounter.java │ │ └── Counter.java │ └── views │ ├── index.scala.html │ └── main.scala.html ├── bin │ ├── activator │ └── activator.bat ├── build.sbt ├── conf │ ├── application.conf │ ├── logback.xml │ └── routes ├── libexec │ └── activator-launch-1.3.10.jar ├── LICENSE ├── project │ ├── build.properties │ └── plugins.sbt ├── public │ ├── images │ │ └── favicon.png │ ├── javascripts │ │ └── hello.js │ └── stylesheets │ └── main.css ├── README └── test ├── ApplicationTest.java └── IntegrationTest.java ``` 應用的源代碼位于`app`目錄中。 `bin`目錄包含激活器工具。 `build.sbt`是應用構建腳本。 `conf`目錄包含配置文件和其他未編譯的資源。 `project`目錄具有 sbt 配置文件。 `public`目錄包含公共資產,例如靜態 HTML 文件,JavaScript 文件,圖像或 CSS 文件。 `test`目錄是用于單元測試或功能測試的源文件夾。 在構建應用時,將生成新目錄。 例如,`target`目錄包含框架生成的文件。 ```java $ activator run ``` 在項目目錄中,我們使用`activator run`命令運行該應用。 該應用中已經包含一些簡單的代碼。 ![First Play application](https://img.kancloud.cn/86/50/8650a98c1f8e046505faddb1801f479a_317x216.jpg) 圖:第一個 Play 應用 默認情況下,應用在端口 9000 上進行監聽。 請注意,由于應用是動態編譯的,因此存在一些延遲。 現在,我們將對應用進行一些修改。 `routes` ```java # Routes # This file defines all application routes (Higher priority routes first) # ~~~~ # An example controller showing a sample home page GET / controllers.HomeController.index # An example controller showing how to use dependency injection GET /count controllers.CountController.count # An example controller showing how to write asynchronous code GET /message controllers.AsyncController.message # Map static resources from the /public folder to the /assets URL path GET /assets/*file controllers.Assets.versioned(path="/public", file: Asset) ``` 在`conf/routes`文件中,我們定義了應用的所有路由。 路由器是將每個傳入 HTTP 請求轉換為操作調用的組件,該操作調用是控制器類中的公共方法。 我們可以看到根路由`/`調用了`HomeController`的`index()`方法。 `HomeController.java` ```java package controllers; import play.mvc.Controller; import play.mvc.Result; import views.html.index; /** * This controller contains an action to handle HTTP requests * to the application's home page. */ public class HomeController extends Controller { public Result index() { return ok(index.render("First application")); } } ``` 我們修改`HomeController`類。 `index()`方法返回`ok()`,生成 HTTP 200 OK 結果。 索引操作調用`render()`方法,該方法告訴 Play 渲染模板。 使用模板是生成 HTTP 響應的最常見方法。 我們沒有明確指定應選擇哪個模板,因此 Play 選擇默認模板:`views/index.scala.html`。 `index.scala.html` ```java @(message: String) @main("Welcome to Play") { @message } ``` 我們修改文件以包含上面的代碼。 該模板也稱為主模板。 `main.scala.html` ```java @(title: String)(content: Html) <!DOCTYPE html> <html lang="en"> <head> <title>@title</title> </head> <body> @content </body> </html> ``` 這是主模板,從索引模板調用。 它用字符串數據填充標題和內容。 ![First Play application 2](https://img.kancloud.cn/50/21/50217dd50b540a635696fb0964661e06_532x286.jpg) 圖:第一個 Play 應用 2 現在,文檔已刪除,僅顯示該消息。 ## 簡單的表單 我們創建一個可以使用 HTML 表單的應用。 ```java $ activator new myform play-java ``` 創建一個新的 Play 應用。 ```java $ tree app app ├── controllers │ └── Application.java ├── filters ├── services └── views ├── greet.scala.html ├── index.scala.html └── main.scala.html 4 directories, 4 files ``` 我們刪除`app`子目錄中的所有現有文件。 我們創建一個 Java 文件和三個 HTML 文件。 `routes` ```java # Routes GET / controllers.Application.index GET /greet controllers.Application.greet ``` 在`routes`文件中,我們有兩個 GET 請求。 `Application.java` ```java package controllers; import play.data.FormFactory; import play.mvc.Controller; import play.mvc.Result; import views.html.index; import javax.inject.Inject; public class Application extends Controller { @Inject FormFactory formFactory; public Result index() { return ok(index.render("Enter your name:")); } public Result greet() { String name = formFactory.form().bindFromRequest().get("name"); StringBuilder sb = new StringBuilder("Hello "); sb.append(name); return ok(sb.toString()); } } ``` 我們有一個`Application`控制器。 ```java @Inject FormFactory formFactory; ``` 我們注入`FormFactory`,它是用于創建表單的幫助程序類。 ```java public Result index() { return ok(index.render("Enter your name:")); } ``` `index()`操作將呈現一個頁面,告訴用戶輸入其名稱。 ```java String name = formFactory.form().bindFromRequest().get("name"); ``` 我們將名稱請求參數綁定到`name`變量。 ```java StringBuilder sb = new StringBuilder("Hello "); sb.append(name); return ok(sb.toString()); ``` 我們構建并返回一條消息。 `index.scala.html` ```java @(message: String) @main("My form") { @message <form action="@routes.Application.greet", method="get"> <input type="text" name="name" /> <button>Submit</button> </form> } ``` 在`index.scala.html`文件中,我們有一個 HTML 表單,用于發送 GET 請求。 `greet.scala.html` ```java @(message: String) @main("My form") { @message } ``` `greet.scala.html`文件顯示生成的消息。 `main.scala.html` ```java @(title: String)(content: Html) <!DOCTYPE html> <html lang="en"> <head> <title>@title</title> </head> <body> @content </body> </html> ``` `main.scala.html`文件是主模板文件,它與其他兩個模板文件合并。 這是 Play 框架的簡介。 您可能還需要查看相關的教程:[Stripes 教程](/java/stripes/), [Java MVC 教程](/java/mvc/), [Spark Java 入門](/java/spark/), [Jtwig 教程](/java/jtwig/), [Java 教程](/lang/java/)或 [SQL 查詢標簽教程](/java/sqlquerytag/)。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看