Bevezetés a Java játékra

1. Áttekintés

Ennek a bemutatónak az a célja, hogy feltárja a Play keretrendszert, és kitalálja, hogyan hozhatunk létre vele webalkalmazást.

A Play egy nagy termelékenységű webalkalmazás-keretrendszer programozási nyelvekhez, amelyek kódját a JVM-en fordítják és futtatják, főleg Java és Scala. Integrálja azokat a komponenseket és API-kat, amelyekre szükségünk van a modern webalkalmazások fejlesztéséhez.

2. Játssza le a Framework Setup alkalmazást

Térjünk át a Play keretrendszer hivatalos oldalára, és töltsük le a terjesztés legújabb verzióját. Az oktatóanyag készítésekor a legújabb verzió a 2.7.

Letöltjük a Play Java Hello World oktatóanyag ZIP-mappáját, és kibontjuk a fájlt egy kényelmes helyre. A mappa gyökerében találunk egy sbt futtatható fájl, amelyet az alkalmazás futtatásához használhatunk. Alternatív megoldásként telepíthetjük sbt hivatalos oldalukról.

Használni sbt a letöltött mappából tegyük a következőket:

cd / elérési út / mappába / ./sbt fut

Vegye figyelembe, hogy egy szkriptet futtatunk az aktuális könyvtárban, ezért a ./ szintaxis.

Ha telepítjük sbt, akkor használhatjuk helyette:

cd / path / to / mappa / sbt fut

A parancs futtatása után megjelenik egy kijelentés, amely a következőket mondja: (A szerver elindult, az Enter használatával álljon meg és térjen vissza a konzolhoz ...). Ez azt jelenti, hogy alkalmazásunk készen áll, ezért most áttérhetünk erre // localhost: 9000 ahol egy Play üdvözlő oldalt mutatunk be nekünk:

3. A játékalkalmazások anatómiája

Ebben a szakaszban jobban megismerjük, hogyan épül fel egy Play alkalmazás, és mire használják az adott fájlban található fájlokat és könyvtárakat.

Ha rögtön egy egyszerű példát szeretne felkérni magáról, ugorjon a következő szakaszra.

Ezeket a fájlokat és mappákat találjuk egy tipikus Play Framework alkalmazásban:

├── alkalmazás → Alkalmazásforrások │ ├── eszközök → Összeállított eszközforrások │ │ ├── javascripts → Általában Coffee Script források sources │ └── stíluslapok → Jellemzően KEVESEBB CSS források │ ├── vezérlők → Alkalmazásvezérlők │ ├── modellek → Alkalmazás üzleti réteg │ └── nézetek → Sablonok ├── build.sbt → Alkalmazás-összeállítási szkript ├── conf → Konfigurációs fájlok és egyéb nem lefordított erőforrások (az osztályúton) │ ├── application.conf → Fő konfigurációs fájl │ └── útvonalak → Útvonalak meghatározása ├── dist → Önkényes fájlok, amelyeket fel kell venni a projektek terjesztésébe ├── lib → Nem kezelt könyvtárak függőségei ├── naplók → Naplók mappa │ └── application.log → Alapértelmezett naplófájl ├─ ─ projekt → sbt konfigurációs fájlok │ ├── build.properties → jelölő az sbt projekthez │ └── plugins.sbt → sbt beépülő modulok, beleértve a Play-re vonatkozó nyilatkozatot ── public → közvagyon │ ├── képek → képfájlok │ ├── javascripts → Javascript fájlok │ └── stíluslapok → CSS fájlok ├── cél → Generált f iles │ ├── resolution-cache → Információ a függőségekről │ ├── scala-2.11 │ │ ├── api → Generált API dokumentumok │ │ ├── osztályok → Összeállított osztályfájlok │ │ ├── útvonalak → Útvonalakból generált források │ │ └── forgatás → Források sablonokból │ ├── univerzális → Alkalmazáscsomagolás │ └── web → Összeállított webes eszközök └── teszt → Forrás mappa egység vagy funkcionális tesztekhez 

3.1. A kb Könyvtár

Ez a könyvtár Java forráskódot, websablonokat és összeállított eszközök forrásait tartalmazza - alapvetően az összes forrást és az összes futtatható erőforrást.

A kb a könyvtár néhány fontos alkönyvtárat tartalmaz, amelyek mindegyike az MVC építészeti minta egy részét csomagolja:

  • modellek - ez az alkalmazás üzleti rétege, a csomagban lévő fájlok valószínűleg modellezik az adatbázis-tábláinkat, és lehetővé teszik a perzisztencia réteg elérését
  • nézetek - a HTML-sablonok, amelyek a böngészőnek megjeleníthetők, tartalmazzák ezt a mappát
  • vezérlők - egy alkönyvtár, amelyben vannak vezérlőink. Vezérlők Java forrásfájlok, amelyek az egyes API hívásokhoz végrehajtandó műveleteket tartalmazzák. Műveletek nyilvános módszerek, amelyek feldolgozzák a HTTP kéréseket, és a HTTP válaszokkal megegyező eredményeket adnak vissza
  • eszközök- egy alkönyvtár, amely olyan fordított eszközöket tartalmaz, mint a CSS és a javascript. A fenti elnevezési konvenciók rugalmasak, létrehozhatjuk csomagjainkat pl. an app / utils csomag. Testreszabhatjuk a csomagok elnevezését is app / com / baeldung / vezérlők

Tartalmaz továbbá opcionális fájlokat és könyvtárakat, ha az adott alkalmazásnak szüksége van rá.

3.2. A nyilvános Könyvtár

A programban tárolt források nyilvános könyvtár olyan statikus eszközök, amelyeket közvetlenül a webkiszolgáló szolgál ki.

Ez a könyvtár általában három alkönyvtárral rendelkezik a képek, a CSS és a JavaScript fájlok számára. Az összes Play-alkalmazás konzisztenciája érdekében javasoljuk az ilyen fájlok rendezését.

3.3. A konf Könyvtár

A konf könyvtár tartalmazza az alkalmazás konfigurációs fájljait. A application.conf itt helyezzük el a Play alkalmazás konfigurációs tulajdonságainak nagy részét. Az alkalmazás végpontjait itt határozzuk meg: útvonalak.

Ha az alkalmazásnak további konfigurációs fájlokra van szüksége, akkor azokat ebbe a könyvtárba kell tenni.

3.4. A lib Könyvtár

A lib a könyvtár opcionális és nem felügyelt könyvtárfüggőségeket tartalmaz. Ha vannak olyan edényeink, amelyek nincsenek megadva a build rendszerben, akkor ebbe a könyvtárba tesszük őket. Automatikusan hozzáadódnak az alkalmazás osztályához.

3.5. A build.sbt File

A build.sbt fájl az alkalmazás build szkript. Itt soroljuk fel az alkalmazás futtatásához szükséges függőségeket, például teszt- és perzisztencia könyvtárakat.

3.6. A projekt Könyvtár

Az összes fájl, amely az összeállítási folyamatot az SBT alapján konfigurálja, megtalálható a projekt Könyvtár.

3.7. A cél Könyvtár

Ez a könyvtár tartalmazza a build rendszer által létrehozott összes fájlt - például az összeset .osztály fájlokat.

Miután megláttuk és felfedeztük az imént letöltött Play Framework Hello World példa könyvtárstruktúráját, most egy példa segítségével áttekinthetjük a keretrendszer alapjait.

4. Egyszerű példa

Ebben a részben létrehozunk egy nagyon egyszerű példát egy webalkalmazásra. Ezt az alkalmazást fogjuk használni, hogy megismerkedjünk a Play keretrendszer alapjaival.

Ahelyett, hogy letöltene egy példaprojektet és építene belőle, nézzük meg, hogyan hozhatunk létre egy Play Framework alkalmazást a sbt új parancs.

Nyissunk meg egy parancssort, keressük meg a kívánt helyet, és hajtsuk végre a következő parancsot:

sbt új playframework / play-java-seed.g8

Ehhez telepítenünk kell sbt már a 2. szakaszban kifejtettek szerint.

A fenti parancs először a projekt nevét kéri. Ezután meg fogja kérni azt a tartományt (fordítva, csakúgy, mint a Java csomagnevezési konvencióját), amelyet a csomagokhoz használnak. Nyomunk Belép név beírása nélkül, ha meg akarjuk tartani a szögletes zárójelben megadott alapértelmezéseket.

Az ezzel a paranccsal létrehozott alkalmazás felépítése megegyezik a korábban létrehozottal. Ezért folytathatjuk az alkalmazás futtatását, ahogy korábban tettük:

cd / path / to / mappa / sbt fut

A fenti parancs a végrehajtás befejezése után kiszolgálót fog létrehozni a portszámra 9000 hogy lássuk az API-t, amelyen keresztül hozzáférhetünk // localhost: 9000. A böngészőben látnunk kell az „Welcome to Play” üzenetet.

Új API-junknak két végpontja van, amelyeket most sorra kipróbálhatunk a böngészőből. Az első - amelyet most töltöttünk be - a gyökér végpont, amely egy indexoldalt tölt be a „Welcome to Play!” üzenet.

A második, a // localhost: 9000 / vagyon, fájlok letöltésére szolgál a szerverről, fájlnév hozzáadásával az elérési útvonalhoz. Tesztelhetjük ezt a végpontot a favicon.png fájl, amelyet az alkalmazással együtt letöltöttek, a //localhost:9000/assets/images/favicon.png.

5. Műveletek és vezérlők

A vezérlőosztályon belüli Java-metódust, amely feldolgozza a kérési paramétereket és eredményt hoz létre az ügyfélnek elküldésre, műveletnek nevezzük.

A vezérlő egy kiterjeszthető Java osztály play.mvc.Controller logikusan csoportosítja azokat a műveleteket, amelyek kapcsolatban lehetnek az ügyfél által előállított eredményekkel.

Most térjünk át app-parent-dir / app / controllerek és figyeljen rá HomeController.java.

A HomeControllerAz index művelet egy egyszerű üdvözlő üzenettel rendelkező weboldalt ad vissza:

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

Ez a weboldal az alapértelmezett index sablon a nézetek csomagban:

@main ("Welcome to Play") {}

Amint fentebb látható, a index oldal hívja a fő- sablon. Ezután a fő sablon kezeli az oldalfejléc és törzscímkék renderelését. Két érvre van szükség: a Húr az oldal címére és egy Html objektumot beilleszteni az oldal törzsébe.

@ (title: String) (content: Html) @ * Itt ábrázoljuk az oldal címét a „String” kifejezéssel. * @ @title @ * És itt ábrázoljuk az oldal tartalmát tartalmazó * Html objektumot. *@ @tartalom 

Változtassuk meg a index reszelj egy kicsit:

@main ("Üdvözöljük a Baeldungnál") {}

A böngésző újratöltése félkövér fejlécet ad:

Üdvözöljük a Baeldung oldalán található Play Framework bemutatón!

A sablont teljesen megszüntethetjük a Vakol irányelv index() módszere HomeController hogy a sima vagy a HTML szöveget közvetlenül visszaadhassuk:

public Result index () {return ok ("REST API a Baeldung játékával"); }

A kód szerkesztése után, a fentiek szerint, csak a szöveg lesz a böngészőben. Ez csak sima szöveg lesz HTML és stílus nélkül:

REST API a Baeldung játékával

Ugyanolyan jól tudnánk kimenni a HTML-t is, ha a szöveget a fejlécbe csomagoljuk címkéket, majd továbbítja a HTML szöveget a Html.apply módszer. Játsszon nyugodtan vele.

Tegyük hozzá a / baeldung / html végpont in útvonalak:

GET / baeldung / html vezérlők. HomeController.applyHtml

Most hozzuk létre a vezérlőt, amely kezeli a végpont kéréseit:

public Eredmény ApplyHtml () {return ok (Html.apply ("")); }

Amikor meglátogatjuk // localhost: 9000 / baeldung / html a fenti szöveget HTML formátumban fogjuk látni.

A válasz típusát testreszabva módosítottuk a válaszunkat. Ezt a funkciót egy későbbi szakaszban vizsgáljuk meg részletesebben.

A Play Framework két másik fontos jellemzőjét is láthattuk.

Először is, a böngésző újratöltése a kódunk legújabb verzióját tükrözi; mert a miénk a kódváltozásokat menet közben állítják össze.

Másodszor, a Play segítő módszereket biztosít számunkra a szabványos HTTP válaszokhoz a play.mvc.Eredmények osztály. Példa erre a rendben() metódus, amely egy OK HTTP 200 választ ad vissza az általunk paraméterként átadott válasz törzs mellett. Már használtuk a szöveg megjelenítésének módszerét a böngészőben.

Vannak több segítő módszerek, mint pl nem található() és rossz kérés() ban,-ben Eredmények osztály.

6. Az eredmények manipulálása

Voltunk a Play tartalmi egyeztetési funkciójának előnyei anélkül, hogy észrevenné. A Play automatikusan megállapítja a válasz tartalmi típusát a válasz testéből. Ezért tudtuk visszaadni a szöveget a rendben módszer:

return ok ("megjelenítendő szöveg");

És akkor a Play automatikusan beállítja a Tartalom típus fejléc szöveg / sima. Bár ez a legtöbb esetben működik, átvehetjük az irányítást és testreszabhatjuk a tartalomtípus fejlécét.

Nézzük testreszabhatja a választ a HomeController.customContentType akció a szöveg / html:

public Result customContentType () {return ok ("Ez néhány szöveges tartalom"). as ("text / html"); }

Ez a minta mindenféle tartalomtípusra kiterjed. Az adatok formátumától függően átadjuk a rendben segítő módszer, pótolhatjuk szöveg / html által szöveg / sima vagy alkalmazás / json.

Valami hasonlót tehetünk a beállított fejlécekhez:

public Result setHeaders () {return ok ("Ez néhány szöveges tartalom") .as ("text / html") .withHeader ("Fejléc-kulcs", "Néhány érték"); }

7. Következtetés

Ebben a cikkben a Play Framework alapjait tártuk fel. A Play használatával létrehozhattunk egy alapvető Java webalkalmazást is.

Szokás szerint az oktatóanyag forráskódja elérhető a GitHubon.