Uvod za igranje na Javi

1. Pregled

Svrha ovog uvodnog vodiča je istražiti Play Framework i shvatiti kako pomoću njega možemo stvoriti web aplikaciju.

Play je visokoproduktivni okvir web aplikacija za programske jezike čiji se kôd sastavlja i izvodi na JVM-u, uglavnom Java i Scala. Integrira komponente i API-je potrebne za moderni razvoj web aplikacija.

2. Reprodukujte Framework Setup

Idemo na službenu stranicu Play okvira i preuzmite najnoviju verziju distribucije. U vrijeme ovog vodiča, najnovija je verzija 2.7.

Preuzet ćemo zip mapu Play Java Hello World tutorial i raspakirati datoteku na prikladno mjesto. U korijenu ove mape pronaći ćemo sbt izvršnu datoteku koju možemo koristiti za pokretanje aplikacije. Alternativno, možemo instalirati sbt sa njihove službene stranice.

Koristiti sbt iz preuzete mape učinimo sljedeće:

cd / path / to / folder / ./sbt run

Imajte na umu da izvodimo skriptu u trenutnom direktoriju, pa stoga i upotreba ./ sintaksa.

Ako instaliramo sbt, onda ga možemo koristiti umjesto njega:

cd / path / to / folder / sbt run

Nakon pokretanja ove naredbe vidjet ćemo izjavu koja kaže „(poslužitelj pokrenut, koristite Enter za zaustavljanje i povratak na konzolu ...)“. To znači da je naša aplikacija spremna, stoga sada možemo prijeći na // localhost: 9000 gdje će nam biti predstavljena stranica dobrodošlice za Play:

3. Anatomija aplikacija za reprodukciju

U ovom ćemo odjeljku bolje razumjeti kako je Play aplikacija strukturirana i za što se koristi svaka datoteka i direktorij u toj strukturi.

Ako se želite odmah osvrnuti na jednostavan primjer, prijeđite na sljedeći odjeljak.

Ovo su datoteke i mape koje nalazimo u tipičnoj aplikaciji Play Framework:

├── aplikacija → Izvori aplikacija │ ├── sredstva → Sastavljeni izvori sredstava │ │ ├── javascripti → Tipično izvori skripte kave │ │ └── tabele stilova → Tipično MANJE CSS izvora │ ├── kontrolori → Kontroleri aplikacija │ ├── modeli → Poslovni sloj aplikacija │ └── prikazi → Predlošci ├── build.sbt → Skripta za izgradnju aplikacije ├── conf → Konfiguracijske datoteke i drugi nekompilirani resursi (na putu puta)) │── application.conf → Glavna konfiguracijska datoteka │ └── rute → Definicija rute ├── dist → proizvoljne datoteke koje će biti uključene u distribuciju vaših projekata ├── lib → Neupravljane ovisnosti knjižnica ├── zapisnici → Mapa dnevnika │ └── application.log → zadana datoteka dnevnika ├─ ─ projekt → sbt konfiguracijske datoteke │ ├── build.properties → Oznaka za sbt projekt │ └── plugins.sbt → sbt dodaci uključujući deklaraciju za samu reprodukciju ├── javno → Javna imovina │ ├── slike → slikovne datoteke │ ├── javascripts → Javascript datoteke │ └── tablice stilova → CSS datoteke ├── target → Generirano f iles │ ├── predmemorija razlučivosti → Informacije o ovisnostima │ ├── scala-2.11 │ │ ├── api → Generirani API dokumenti │ │ ├── klase → Sastavljene datoteke klasa │ │ ├── rute → Izvori generirani iz ruta │ │ └── twirl → Izvori generirani iz predložaka │ ├── univerzalni → Pakiranje aplikacija │ └── web → Sastavljena web imovina └── test → izvorna mapa za jedinice ili funkcionalne testove 

3.1. The app Imenik

Ovaj direktorij sadrži Java izvorni kod, web predloške i izvore sastavljene imovine - u osnovi, sve izvore i sve izvršne resurse.

The app direktorij sadrži neke važne poddirektorijume, od kojih svaki pakira jedan dio MVC arhitektonskog uzorka:

  • modeli - ovo je aplikativni poslovni sloj, datoteke u ovom paketu vjerojatno će modelirati naše tablice baze podataka i omogućiti nam pristup sloju postojanosti
  • pogleda - svi HTML predlošci koji se mogu prikazati u pregledniku sadrže ovu mapu
  • kontroleri - poddirektorij u kojem imamo svoje kontrolere. Kontroleri su Java izvorne datoteke koje sadrže radnje koje treba izvršiti za svaki API poziv. Akcije su javne metode koje obrađuju HTTP zahtjeve i vraćaju rezultate iste kao i HTTP odgovori
  • imovina- poddirektorij koji sadrži prevedena sredstva kao što su CSS i javascript. Gore navedene konvencije imenovanja su fleksibilne, možemo stvoriti svoje pakete, na pr. an app / utils paket. Također možemo prilagoditi imenovanje paketa app / com / baeldung / kontroleri

Sadrži i neobavezne datoteke i direktorije prema potrebi određene aplikacije.

3.2. The javnost Imenik

Resursi pohranjeni u javnost direktorij su statička sredstva koja poslužuje izravno web poslužitelj.

Ovaj direktorij obično ima tri poddirektorijuma za slike, CSS i JavaScript datoteke. Preporučuje se da ovakve datoteke imovine organiziramo radi dosljednosti u svim aplikacijama Play.

3.3. The konf Imenik

The konf direktorij sadrži datoteke za konfiguraciju aplikacije. The prijava.konf tu ćemo smjestiti većinu svojstava konfiguracije za aplikaciju Play. U aplikaciji ćemo definirati krajnje točke za aplikaciju rute.

Ako aplikaciji trebaju dodatne konfiguracijske datoteke, treba ih staviti u ovaj direktorij.

3.4. The lib Imenik

The lib direktorij nije obavezan i sadrži neupravljane knjižnične ovisnosti. Ako imamo staklenke koje nisu navedene u sustavu gradnje, stavit ćemo ih u ovaj direktorij. Automatski će se dodati na put predavanja aplikacije.

3.5. The graditi.sbt Datoteka

The graditi.sbt datoteka je skripta za izgradnju aplikacije. Ovdje navodimo ovisnosti potrebne za pokretanje aplikacije, poput knjižnica za testiranje i postojanost.

3.6. The projekt Imenik

Sve datoteke koje konfiguriraju postupak izrade na temelju SBT-a nalaze se u projekt imenik.

3.7. The cilj Imenik

Ovaj direktorij sadrži sve datoteke generirane sustavom gradnje - na primjer, sve .razred datoteke.

Nakon što smo vidjeli i istražili strukturu direktorija za Play Framework Hello World primjer koji smo upravo preuzeli, sada možemo na primjeru proći kroz osnove okvira.

4. Jednostavan primjer

U ovom ćemo odjeljku stvoriti vrlo osnovni primjer web aplikacije. Ovom ćemo se aplikacijom upoznati s osnovama Play okvira.

Umjesto da preuzmete primjer projekta i gradite se na njemu, pogledajmo još jedan način na koji možemo stvoriti aplikaciju Play Framework pomoću sbt novo naredba.

Otvorimo naredbeni redak, dođite do željenog mjesta i izvršimo sljedeću naredbu:

sbt novi playframework / play-java-seed.g8

Za ovaj ćemo morati imati instaliranu sbt već kako je objašnjeno u odjeljku 2.

Gornja naredba prvo će zatražiti od nas ime projekta. Dalje će tražiti domenu (obrnuto, kao što je konvencija o imenovanju paketa u Javi) koja će se koristiti za pakete. Pritisnemo Unesi bez upisivanja imena ako želimo zadržati zadane vrijednosti dane u uglastim zagradama.

Aplikacija generirana ovom naredbom ima istu strukturu kao i ona ranije generirana. Stoga možemo nastaviti s pokretanjem aplikacije kao i prije:

cd / path / to / folder / sbt run

Gornja naredba, nakon završetka izvršenja, iznjedrit će poslužitelj na broju porta 9000 izložiti naš API, kojem možemo pristupiti // localhost: 9000. U pregledniku bismo trebali vidjeti poruku "Dobrodošli u igru".

Naš novi API ima dvije krajnje točke koje sada možemo redom isprobati u pregledniku. Prva - koju smo upravo učitali - je osnovna krajnja točka, koja učitava indeksnu stranicu s "Dobrodošli u igru!" poruka.

Drugi, u // localhost: 9000 / imovina, namijenjen je preuzimanju datoteka s poslužitelja dodavanjem naziva datoteke u stazu. Ovu krajnju točku možemo testirati dobivanjem favicon.png datoteku koja je preuzeta uz aplikaciju na //localhost:9000/assets/images/favicon.png.

5. Akcije i kontroleri

Java metoda unutar klase kontrolera koja obrađuje parametre zahtjeva i daje rezultat koji se šalje klijentu naziva se radnja.

Kontroler je Java klasa koja se proširuje play.mvc.Controller koji logično grupira akcije koje mogu biti povezane s rezultatima koje daju za klijenta.

Krenimo sada app-parent-dir / app / controllers i obratite pažnju na HomeController.java.

The HomeControllerAkcija indeksa vraća web stranicu s jednostavnom porukom dobrodošlice:

javni indeks rezultata () {return ok (views.html.index.render ()); }

Ova je web stranica zadana indeks predložak u paketu pogleda:

@main ("Dobrodošli u igru") {}

Kao što je gore prikazano, indeks stranica poziva glavni predložak. Glavni predložak zatim obrađuje prikazivanje zaglavlja stranice i oznaka tijela. Potrebna su dva argumenta: a Niz za naslov stranice i an Html objekt za umetanje u tijelo stranice.

@ (naslov: String) (sadržaj: Html) @ * Ovdje prikazujemo naslov stranice `String`. * @ @title @ * I ovdje prikazujemo objekt `Html` koji sadrži * sadržaj stranice. * @ @ sadržaj 

Promijenimo tekst u indeks unesite malo:

@main ("Dobrodošli u Baeldung") {}

Ponovnim učitavanjem preglednika dobit ćemo podebljani naslov:

Dobrodošli u Play Framework Tutorial na Baeldungu!

Predložak možemo potpuno ukloniti uklanjanjem datoteke prikazati direktiva u indeks() metoda HomeController kako bismo mogli izravno vratiti običan tekst ili HTML tekst:

javni indeks rezultata () {return ok ("REST API with Play by Baeldung"); }

Nakon uređivanja koda, kao što je prikazano gore, imat ćemo samo tekst u pregledniku. Ovo će biti samo običan tekst bez ikakvog HTML-a ili stila:

REST API s Playom Baeldunga

Mogli bismo jednako tako izlaziti HTML umotavanjem teksta u zaglavlje i zatim prosljeđivanje HTML teksta na Html.apply metoda. Slobodno se poigrajte s tim.

Dodajmo a / baeldung / html krajnja točka u rute:

GET / baeldung / html kontroleri.HomeController.applyHtml

Sada kreirajmo kontroler koji obrađuje zahtjeve na ovoj krajnjoj točki:

javni rezultat applyHtml () {return ok (Html.apply ("")); }

Kad posjetimo // localhost: 9000 / baeldung / html vidjet ćemo gornji tekst formatiran u HTML-u.

Prilagođavanjem vrste odgovora manipulirali smo svojim odgovorom. Ovu ćemo značajku detaljnije razmotriti u kasnijem odjeljku.

Također smo vidjeli još dvije važne značajke Play Okvira.

Prvo, ponovno učitavanje preglednika odražava najnoviju verziju našeg koda; to je zato što je naša promjene koda sastavljaju se u hodu.

Kao drugo, Play nam pruža pomoćne metode za standardne HTTP odgovore u play.mvc.Rezultati razred. Primjer je u redu() metoda koja vraća OK HTTP 200 odgovor uz tijelo odgovora kojemu prosljeđujemo kao parametar. Već smo koristili metodu prikazivanja teksta u pregledniku.

Postoji više pomoćnih metoda poput nije pronađeno() i loš zahtjev() u Rezultati razred.

6. Manipuliranje rezultatima

Bili smo koristi od Playove značajke pregovaranja o sadržaju a da ni ne sluteći. Reprodukcija automatski izvodi vrstu sadržaja odgovora iz tijela odgovora. Zbog toga smo uspjeli vratiti tekst u u redu metoda:

return ok ("tekst za prikaz");

A tada bi Play automatski postavio Vrsta sadržaja zaglavlje do tekst / običan. Iako to u većini slučajeva djeluje, možemo preuzeti kontrolu i prilagoditi zaglavlje vrste sadržaja.

Idemo prilagodite odgovor za HomeController.customContentType djelovanje na tekst / html:

javni rezultat customContentType () {return ok ("Ovo je tekstualni sadržaj"). as ("text / html"); }

Ovaj obrazac presijeca sve vrste sadržaja. Ovisno o formatu podataka koje prosljeđujemo na u redu pomoćnu metodu, možemo je zamijeniti tekst / html po tekst / običan ili aplikacija / json.

Možemo učiniti nešto slično postavljanju zaglavlja:

javni Rezultat setHeaders () {return ok ("Ovo je tekstualni sadržaj") .as ("text / html") .withHeader ("Header-Key", "Some value"); }

7. Zaključak

U ovom smo članku istražili osnove Play Okvira. Također smo uspjeli stvoriti osnovni Java web program pomoću Playa.

Kao i obično, izvorni kod za ovu lekciju dostupan je na GitHubu.