Introduksjon til å spille i Java

1. Oversikt

Hensikten med denne introveiledningen er å utforske Play Framework og finne ut hvordan vi kan lage en webapplikasjon med den.

Play er et høyproduktivt rammeverk for webapplikasjon for programmeringsspråk hvis kode blir samlet og kjørt på JVM, hovedsakelig Java og Scala. Den integrerer komponentene og API-ene vi trenger for moderne utvikling av webapplikasjoner.

2. Spill rammeverkoppsett

La oss gå over til Play-rammeverkets offisielle side og laste ned den nyeste versjonen av distribusjonen. På tidspunktet for denne veiledningen er den siste versjonen 2.7.

Vi laster ned Play Java Hello World-opplærings zip-mappen og pakker ut filen til et praktisk sted. På roten av denne mappen finner vi en sbt kjørbar som vi kan bruke til å kjøre applikasjonen. Alternativt kan vi installere sbt fra deres offisielle side.

Å bruke sbt fra den nedlastede mappen, la oss gjøre følgende:

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

Merk at vi kjører et skript i den gjeldende katalogen, derav bruk av ./ syntaks.

Hvis vi installerer sbt, så kan vi bruke den i stedet:

cd / sti / til / mappe / sbt kjøre

Etter å ha kjørt denne kommandoen, ser vi en uttalelse som sier "(Server startet, bruk Enter for å stoppe og gå tilbake til konsollen ...)". Dette betyr at søknaden vår er klar, derfor kan vi nå gå videre til // lokal vert: 9000 hvor vi får presentert en velkomstside for Play:

3. Anatomi av spillapplikasjoner

I denne delen får vi bedre forståelse av hvordan et Play-program er strukturert og hva hver fil og katalog i den strukturen brukes til.

Hvis du vil utfordre deg selv til et enkelt eksempel med en gang, så hopp til neste avsnitt.

Dette er filene og mappene vi finner i et typisk Play Framework-program:

├── app → Applikasjonskilder │ ├── eiendeler → Sammensatte aktivakilder │ │ ├── javascript → Vanligvis Coffee Script-kilder │ │ └── stylesheets → Typisk MINDRE CSS-kilder │ ├── kontrollere → Applikasjonskontrollere │ ├── modeller → Application business lag │ └── visninger → Maler ├── build.sbt → Application build script ├── conf → Konfigurasjonsfiler og andre ikke-kompilerte ressurser (på klassesti) │ ├── application.conf → Hovedkonfigurasjonsfil │ └── ruter → Rutedefinisjon ├── dist → Vilkårlige filer som skal inkluderes i prosjektdistribusjonen din ├── lib → Uavhengige bibliotekavhengigheter ├── logger → Loggmappe │ └── application.log → Standard loggfil ├─ ─ prosjekt → sbt-konfigurasjonsfiler │ ├── build.properties → Markør for sbt-prosjekt │ └── plugins.sbt → sbt-plugins inkludert erklæringen for Play selv ├── offentlig → Offentlige eiendeler │ ├── bilder → Bildefiler │ ├── javascript → Javascript files │ └── stylesheets → CSS files ├── target → Generated f iles │ ├── oppløsningsbuffer → Informasjon om avhengigheter │ ├── scala-2.11 │ │ ├── api → Genererte API-dokumenter │ │ ├── klasser → Kompilerte klassefiler │ │ ├── ruter → Kilder generert fra ruter │ │ └── twirl → Kilder generert fra maler │ ├── universal → Applikasjonsemballasje │ └── web → Kompilert webaktiva └── test → kildemappe for enhets- eller funksjonstester 

3.1. De app Katalog

Denne katalogen inneholder Java-kildekode, webmaler og kompilerte ressurskilder - i utgangspunktet alle kilder og alle kjørbare ressurser.

De app katalog inneholder noen viktige underkataloger, som hver pakker en del av MVC arkitektoniske mønster:

  • modeller - dette er applikasjonsvirksomhetslaget, filene i denne pakken vil sannsynligvis modellere databasetabellene våre og gi oss tilgang til utholdenhetslaget
  • utsikt - alle HTML-maler som kan gjengis til nettleseren inneholder denne mappen
  • kontrollere - en underkatalog der vi har våre kontrollere. Kontrollere er Java-kildefiler som inneholder handlinger som skal utføres for hver API-samtale. Handlinger er offentlige metoder som behandler HTTP-forespørsler og returnerer resultater av det samme som HTTP-svar
  • eiendeler- en underkatalog som inneholder kompilerte eiendeler som CSS og javascript. Ovennevnte navnekonvensjoner er fleksible, vi kan lage våre pakker f.eks. en app / verktøy pakke. Vi kan også tilpasse navnene på pakken app / com / baeldung / kontrollere

Den inneholder også valgfrie filer og kataloger etter behov for det aktuelle programmet.

3.2. De offentlig Katalog

Ressurser lagret i offentlig katalog er statiske eiendeler som serveres direkte av webserveren.

Denne katalogen har vanligvis tre underkataloger for bilder, CSS og JavaScript-filer. Det anbefales at vi organiserer aktivafilene slik for konsistens i alle Play-applikasjoner.

3.3. De konf Katalog

De konf katalog inneholder programkonfigurasjonsfiler. De application.conf er der vi legger de fleste konfigurasjonsegenskapene for Play-applikasjonen. Vi definerer sluttpunkter for appen i ruter.

Hvis applikasjonen trenger ekstra konfigurasjonsfiler, bør de plasseres i denne katalogen.

3.4. De lib Katalog

De lib katalogen er valgfri og inneholder ikke-administrerte bibliotekavhengigheter. Hvis vi har noen krukker som ikke er spesifisert i byggesystemet, legger vi dem i denne katalogen. De legges til automatisk i programklassen.

3.5. De build.sbt Fil

De build.sbt filen er applikasjonsbyggingsskriptet. Det er her vi viser avhengigheter som er nødvendige for å kjøre applikasjonen, for eksempel test- og utholdenhetsbiblioteker.

3.6. De prosjekt Katalog

Alle filene som konfigurerer byggeprosessen basert på SBT, finnes i prosjekt katalog.

3.7. De mål Katalog

Denne katalogen inneholder alle filer generert av byggesystemet - for eksempel alle .klasse filer.

Etter å ha sett og utforsket katalogstrukturen for Play Framework Hello World-eksemplet vi nettopp lastet ned, kan vi nå gå gjennom fundamentene i rammeverket ved hjelp av et eksempel.

4. Enkelt eksempel

I denne delen lager vi et veldig grunnleggende eksempel på en webapplikasjon. Vi bruker dette programmet og gjør oss kjent med det grunnleggende i Play-rammeverket.

I stedet for å laste ned et eksempelprosjekt og bygge opp fra det, la oss se en annen måte vi kan lage et Play Framework-program med sbt ny kommando.

La oss åpne en ledetekst, navigere til vårt valgte sted og utføre følgende kommando:

sbt ny playframework / play-java-seed.g8

For denne må vi ha installert sbt allerede som forklart i avsnitt 2.

Ovennevnte kommando vil først be oss om et navn på prosjektet. Deretter vil den be om domenet (i motsatt retning, som er navnet på pakkenavn i Java) som skal brukes til pakkene. Vi trykker Tast inn uten å skrive et navn hvis vi ønsker å beholde standardverdiene som er gitt i parentes.

Applikasjonen generert med denne kommandoen har samme struktur som den som ble generert tidligere. Vi kan derfor fortsette å kjøre applikasjonen som vi gjorde tidligere:

cd / sti / til / mappe / sbt kjøre

Ovennevnte kommando, etter fullføring av utførelse, vil gyte en server på portnummer 9000 for å avsløre API-en vår, som vi kan få tilgang til gjennom // lokal vert: 9000. Vi bør se meldingen "Welcome to Play" i nettleseren.

Vår nye API har to sluttpunkter som vi nå kan prøve ut i tur og orden fra nettleseren. Den første - som vi nettopp har lastet inn - er rotendepunktet, som laster en indeksside med "Velkommen til spill!" beskjed.

Den andre, kl // localhost: 9000 / eiendeler, er ment for nedlasting av filer fra serveren ved å legge til et filnavn i banen. Vi kan teste dette endepunktet ved å få favicon.png filen, som ble lastet ned med applikasjonen, på //localhost:9000/assets/images/favicon.png.

5. Handlinger og kontrollere

En Java-metode i en kontrollerklasse som behandler forespørselsparametere og produserer et resultat som skal sendes til klienten, kalles en handling.

En kontroller er en Java-klasse som utvides play.mvc.Controller som logisk sett grupperer sammen handlinger som kan være relatert til resultater de gir for klienten.

La oss nå gå over til app-foreldre-dir / app / kontrollere og ta hensyn til HomeController.java.

De HomeControllerSin indekshandling returnerer en webside med en enkel velkomstmelding:

offentlig resultatindeks () {return ok (views.html.index.render ()); }

Denne websiden er standard indeks mal i visningspakken:

@main ("Velkommen til Play") {}

Som vist ovenfor, indeks siden kaller hoved- mal. Hovedmalen håndterer deretter gjengivelse av sidehode og hovedkoder. Det tar to argumenter: a String for tittelen på siden og en Html objekt som skal settes inn i siden av siden.

@ (tittel: String) (innhold: Html) @ * Her gjengir vi sidetittelen `String`. * @ @title @ * Og her gjengir vi 'Html' -objektet som inneholder * sideinnholdet. *@ @innhold 

La oss endre teksten i indeks arkiv litt:

@main ("Velkommen til Baeldung") {}

Å laste nettleseren på nytt vil gi oss en fet overskrift:

Velkommen til Play Framework Tutorial på Baeldung!

Vi kan fjerne malen helt ved å fjerne gjengi direktivet i indeks () metoden for HomeController slik at vi kan returnere ren tekst eller HTML-tekst direkte:

offentlig resultatindeks () {return ok ("REST API med spill av Baeldung"); }

Etter å ha redigert koden, som vist ovenfor, har vi bare teksten i nettleseren. Dette vil bare være ren tekst uten HTML eller styling:

REST API med Play av Baeldung

Vi kan like godt sende HTML ved å pakke inn teksten i overskriften og deretter sende HTML-teksten til Html. Bruk metode. Lek deg gjerne med den.

La oss legge til en / baeldung / html endepunkt i ruter:

GET / baeldung / html-kontrollere.HomeController.applyHtml

La oss nå opprette kontrolleren som håndterer forespørsler på dette endepunktet:

offentlig resultat applyHtml () {return ok (Html.apply ("")); }

Når vi besøker // localhost: 9000 / baeldung / html vi får se teksten ovenfor formatert i HTML.

Vi har manipulert svaret vårt ved å tilpasse svarstypen. Vi vil se nærmere på denne funksjonen i et senere avsnitt.

Vi har også sett to andre viktige trekk ved Play Framework.

For det første gjenspeiler den nyeste versjonen av koden vår på nytt å laste nettleseren. det er fordi vår kodeendringer blir samlet på farten.

For det andre gir Play oss hjelpemetoder for standard HTTP-svar i play.mvc.Resultater klasse. Et eksempel er ok () metoden, som returnerer et OK HTTP 200-svar ved siden av svarteksten vi sender til den som en parameter. Vi har allerede brukt metoden som viser tekst i nettleseren.

Det er flere hjelpermetoder som ikke funnet() og dårlig forespørsel() i Resultater klasse.

6. Manipulere resultater

Vi har vært drar nytte av Play innholdsforhandlingsfunksjon uten å engang vite det. Spill viser automatisk innholdstype for svar fra svarorganet. Dette er grunnen til at vi har klart å returnere teksten i ok metode:

returner ok ("tekst å vise");

Og så vil Play automatisk stille inn Innholdstype topptekst til tekst / vanlig. Selv om dette fungerer i de fleste tilfeller, kan vi ta over kontrollen og tilpasse innholdstypeoverskriften.

La oss tilpasse svaret for HomeController.customContentType handling til tekst / html:

offentlig resultat customContentType () {return ok ("Dette er noe tekstinnhold"). som ("text / html"); }

Dette mønsteret skjærer over alle slags innholdstyper. Avhengig av formatet på dataene vi overfører til ok hjelpermetoden, kan vi erstatte tekst / html av tekst / vanlig eller søknad / json.

Vi kan gjøre noe som angir topptekster:

public Result setHeaders () {return ok ("Dette er noe tekstinnhold") .as ("text / html") .withHeader ("Header-Key", "Some value"); }

7. Konklusjon

I denne artikkelen har vi utforsket det grunnleggende i Play Framework. Vi har også vært i stand til å lage en grunnleggende Java-webapplikasjon ved hjelp av Play.

Som vanlig er kildekoden for denne opplæringen tilgjengelig på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found