Javalin tutorial
I denne tutorial skal du oprette et Java-projekt med Maven og Javalin.
Når du er færdig, vil du have en lille webserver, som kan modtage HTTP-requests og sende svar tilbage.
Vi bygger videre på projektet senere på semesteret.
Opret et nyt projekt i IntelliJ.
Vælg:
- Java (selvfølgelig..)
- Build system: Maven
- JDK 17 eller nyere
Giv projektet et passende navn.
Når projektet er oprettet, har IntelliJ blandt andet oprettet:
src
└── main
└── java
└── resources
test
└── java
Bemærk at main og java ikke er pakker, som I kender dem, men standardmapper som Maven opretter. Maven betragter java som vores root for kildekode.
Du skulle også gerne have en pom.xml-fil, som vi skal konfigurere nu.
Maven hjælper os med at bygge vores Java-projekt og holde styr på de biblioteker, som projektet bruger.
I pom.xml beskriver vi blandt andet projektets dependencies.
Vi skal bruge Javalin, så tilføj følgende dependency til <dependencies>:
<dependencies>
<dependency>
<groupId>io.javalin</groupId>
<artifactId>javalin</artifactId>
<version>7.0.0</version>
</dependency>
</dependencies>
Maven henter derefter Javalin og de biblioteker, Javalin selv er afhængig af. Du skal muligvis lige opdatere Maven ved at klikke på det lille m øverst i højre hjørne af filen.
Du behøver ikke kunne forstå hele pom.xml endnu. Lige nu er det vigtigste, at du ved, at Maven bruger filen til at beskrive projektet og dets dependencies.
Opret en klasse Main
Skriv:
import io.javalin.Javalin;
public class Main {
public static void main(String[] args) {
var app = Javalin.create(config -> {
config.routes.get("/", ctx -> ctx.result("Hej verden"));
}).start(7070);
}
}
Start programmet.
Hvis alt er gået godt, kan du se i konsollen, at Javalin er startet.
Åbn en browser og gå til:
http://localhost:7070/
Du skulle gerne se:
Hej verden
Tillykke. Du har nu en Java-webserver, der kan modtage en HTTP-request og sende et svar tilbage.
Det er ikke så meget kode, vel?
Men der foregår faktisk en del.
Browser
│
│ GET /
▼
Javalin
│
│ kør denne kode
▼
ctx.result("Hej verden")
│
│ HTTP response
▼
Browser
Vi kommer til at undersøge, hvad der foregår her, når vi arbejder videre med Javalin.
Lav nu nogle flere endpoints.
Start med at tilføje:
config.routes.get("/hello", ctx -> ctx.result("Hello!"));
inde i create().
Prøv derefter:
http://localhost:7070/hello
Lav selv mindst to endpoints mere.
For eksempel:
/about
/contact
/test
Hvert endpoint skal returnere en tekst, som du selv vælger.
Prøv også at ændre teksten i et endpoint.
Hvad sker der, hvis du skriver:
config.routes.get("/", ctx -> ctx.result("Dette er min webserver"));
Hvad skal du gøre for at se ændringen i browseren?
Og hvad sker der hvis du skriver localhost:7070/somepage (eller en anden URL, som du ikke har oprettet et endpoint til) i browseren?
Når du er færdig, skal du stoppe programmet i IntelliJ.
Serveren kører kun, mens dit Java-program kører.
Når programmet stoppes, lytter der ikke længere en Javalin-server på port 7070.
Du har:
- oprettet et Maven-projekt
- tilføjet Javalin som dependency
- startet en webserver på port
7070 - oprettet endpoints
- modtaget GET-requests
- sendt responses tilbage til browseren