Dieses Repository ist ein Mini‑Lernprojekt für Schüler:
Du übst, wie man mit Spring Boot (MVC) eine Webseite mit einem Formular baut und die Eingaben mit @PostMapping serverseitig verarbeitet.
Kurz gesagt: Browser → Formular absenden → Spring Controller → Antwort anzeigen.
Nach diesem Projekt kannst du erklären und umsetzen:
- Was passiert bei einem HTTP GET und HTTP POST
- Wozu
@GetMappingund@PostMappingdienen - Wie Spring Formulardaten an Controller‑Methoden übergibt
- Wie man Daten mit dem
Modelan eine HTML‑Seite (Thymeleaf) übergibt - Warum Templates im Ordner
templates/liegen
- Java 17 (im Projekt so konfiguriert)
- Spring Boot 4.0.1
- Spring Web MVC
- Thymeleaf
Abhängigkeiten sind in der
pom.xmlenthalten.
Aktuell sindpom.xmlundapplication.propertiesim Repo als eine Zeile gespeichert – das ist technisch nicht ideal, aber für das Lernen okay. (Tipp: später formatieren.)
./mvnw spring-boot:run
# oder
mvn spring-boot:runDas Projekt läuft auf Port 8081:
http://localhost:8081
(Port steht in src/main/resources/application.properties.)
src/main/java/...
DemoApplication.java → Startpunkt der Anwendung
src/main/resources/
templates/index.html → Thymeleaf-Template (Seite)
application.properties → Einstellungen (z. B. Port)
Du baust eine Seite mit:
- GET → zeigt Formular an
- POST → verarbeitet Eingaben und gibt „Hallo “ aus
So sieht der typische Ablauf aus:
- Browser ruft
/auf → Spring zeigtindex.html - Benutzer tippt Namen ein → klickt „Say Hello“
- Browser sendet POST (Formulardaten)
- Spring verarbeitet die Daten und rendert wieder
index.htmlmit Ergebnis
GET /→ Formular anzeigenPOST /hello→ Name auslesen, ins Model packen, Seite erneut anzeigen
Wichtig: Thymeleaf‑Templates sind normales HTML mit th:*‑Attributen.
- Erkläre den Unterschied zwischen GET und POST.
- Warum nimmt man für Formulare oft POST?
- Lege eine Klasse
HelloControlleran. - Implementiere:
@GetMapping("/")@PostMapping("/hello")
- Mache aus dem Template ein valide HTML‑Datei.
- Baue ein Formular mit:
method="post"th:action="@{/hello}"
- Zeige die Ausgabe
Hallo, <Name>!an, wenn ein Name vorhanden ist.
- Wenn das Eingabefeld leer ist: zeige eine Fehlermeldung („Bitte Namen eingeben“).
- Füge einen Button „Zurücksetzen“ hinzu.
- Dieses Projekt ist absichtlich klein.
- Es geht um das Prinzip Formular → POST → Verarbeitung.
- Sicherheit, Datenbank und Styling sind hier nicht das Ziel.
- Validierung mit
@NotBlank+BindingResult - DTO/Modelklasse statt einzelner Parameter
- Mehr Felder (z. B. E-Mail, Alter)
- Mehrere Seiten (z. B.
/about)
Viel Erfolg beim Lernen! 🚀