Send HTML fra Java
Indtil nu har vi sendt almindelig tekst tilbage fra vores Javalin-server.
Nu skal serveren sende noget tilbage, som browseren kan genkende som HTML.
Lav en route:
config.routes.get("/hellohtml", ctx ->
ctx.html("""
<h1>Hello fra Java!</h1>
<p>Denne tekst er sendt fra vores Javalin-server.</p>
"""));
(læg evt koden ned i en metode, så din routing ikke bliver for rodet)
Start serveren og gå til:
http://localhost:7070/hellohtml
Hvad sker der?
Sammenlign med en route, hvor du bruger:
ctx.result(...)
Hvad er forskellen?
Ret HTML’en, så siden indeholder:
- en overskrift
- mindst ét afsnit
- en liste med mindst tre punkter
- et link
Du kan fx tage udgangspunkt i:
<h1>Min side</h1>
<p>Her er noget tekst.</p>
<ul>
<li>Java</li>
<li>Javalin</li>
<li>HTTP</li>
</ul>
<a href="https://example.com">Et link</a>
Prøv også at bruge nogle af de HTML-tags, du kender, fx:
<strong>
<em>
<hr>
Genindlæs siden.
Kan du se, at browseren fortolker HTML’en?
I den tidligere opgave undersøgte du requests og responses.
Nu skal du bruge Developer Tools igen.
Åbn Network, genindlæs siden og find requesten til:
/hello
Klik på requesten og find Response.
Kan du finde den HTML, som du lige har skrevet i Java-koden?
Sammenlign response med den HTML, du sendte fra Javalin.
Er det den samme?
Find Content-Type under response headers.
Hvad står der?
Hvorfor tror du, serveren fortæller browseren, hvilken type indhold den sender?
Prøv nu at ændre:
ctx.html(...)
til:
ctx.result(...)
uden at ændre selve HTML’en.
Genindlæs siden.
Hvad er forskellen?
Prøv med dine egne ord at forklare denne kæde:
Java
↓
Javalin
↓
HTTP response
↓
HTML
↓
Browser
↓
Webside
Hvor i kæden bliver HTML’en lavet?
Hvor i kæden bliver HTML’en fortolket?