----------------------------------- BenutzerlisteApplication.java ----------------------------------- package de.drapatz.benutzerliste; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class BenutzerlisteApplication { public static void main(String[] args) { SpringApplication.run(BenutzerlisteApplication.class, args); } } ----------------------------------- MainController.java ----------------------------------- package de.drapatz.benutzerliste.controller; import java.util.ArrayList; import java.util.List; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import de.drapatz.benutzerliste.form.PersonForm; import de.drapatz.benutzerliste.model.Person; // @Controller markiert eine Klasse als Controller (bzw. Servlet). Diese Klasse wird automatisch nach @RequestMapping Annotationen durchsucht. @Controller public class MainController { //- Daten ------------------------- private static List persons = new ArrayList(); static { persons.add(new Person("Bill", "Gates")); persons.add(new Person("Steve", "Jobs")); } //--------------------------------- // Aus Application.properties abspritzen (inject). @Value("${welcome.message}") private String message; @Value("${error.message}") private String errorMessage; @RequestMapping(value = { "/", "/index" }, method = RequestMethod.GET) // Unterhalb der Root-URL ("/") public String index(Model model) { model.addAttribute("message", message); return "index"; // HTML-Seite : Benötigt "${message}" } // GET // Mit der GET-Methode können Sie eine Ressource (zum Beispiel eine Datei) vom Server anfordern. // Dabei wird ein Parameter (z.B. übertragene Formulardaten), getrennt durch ein Fragezeichen, zum URI hinzugefügt. //Beispiel: GET /index.php?suche=anfragemethoden+formular @RequestMapping(value = { "/personList" }, method = RequestMethod.GET) public String personList(Model model) { model.addAttribute("persons", persons); return "personList"; // HTML-Seite : Benötigt "${persons}" } @RequestMapping(value = { "/addPerson" }, method = RequestMethod.GET) public String showAddPersonPage(Model model) { PersonForm personForm = new PersonForm(); model.addAttribute("personForm", personForm); return "addPerson"; // HTML-Seite : Benötigt "${personForm}" } // POST // Mit der POST-Methode können Sie große Datenmengen (wie Bilder oder HTML-Formular-Daten) // zur weiteren Verarbeitung zum Server senden. @RequestMapping(value = { "/addPerson" }, method = RequestMethod.POST) public String savePerson(Model model, @ModelAttribute("personForm") PersonForm personForm) { String firstName = personForm.getFirstName(); String lastName = personForm.getLastName(); if (firstName != null && firstName.length() > 0 && lastName != null && lastName.length() > 0) { Person newPerson = new Person(firstName, lastName); persons.add(newPerson); return "redirect:/personList"; // HTML-Seite (Aktualisieren) } model.addAttribute("errorMessage", errorMessage); return "addPerson"; // HTML-Seite } } ----------------------------------- PersonForm.java (Kommunikationsdaten für die Form) ----------------------------------- package de.drapatz.benutzerliste.form; public class PersonForm { private String firstName; private String lastName; public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } } ----------------------------------- Person.java (Model) ----------------------------------- package de.drapatz.benutzerliste.model; public class Person { private String firstName; private String lastName; public Person() { } public Person(String firstName, String lastName) { this.firstName = firstName; this.lastName = lastName; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } } ----------------------------------- resources / static / css / style.css ----------------------------------- h1 { color:#0000FF; } h2 { color:#FF0000; } table { border-collapse: collapse; } table th, table td { padding: 5px; } ----------------------------------- resources / templates / index.html ----------------------------------- Welcome

Welcome

..!..

Person List ----------------------------------- resources / templates / addPerson.html ----------------------------------- Add Person

Create a Person:

First Name:
Last Name:

...
----------------------------------- resources / templates / personList.html ----------------------------------- Person List

Person List

Add Person

First Name Last Name
... ...
----------------------------------- application.properties ----------------------------------- spring.thymeleaf.cache=false welcome.message=Hello Thymeleaf error.message=First Name & Last Name is required! ----------------------------------- pom.xml ----------------------------------- 4.0.0 de.drapatz.benutzerliste Benutzerliste 0.0.1-SNAPSHOT jar Benutzerliste Spring Boot and Thymeleaf org.springframework.boot spring-boot-starter-parent 1.5.17.BUILD-SNAPSHOT UTF-8 UTF-8 1.8 org.springframework.boot spring-boot-starter-thymeleaf org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test test org.springframework.boot spring-boot-maven-plugin spring-snapshots Spring Snapshots https://repo.spring.io/snapshot true spring-milestones Spring Milestones https://repo.spring.io/milestone false spring-snapshots Spring Snapshots https://repo.spring.io/snapshot true spring-milestones Spring Milestones https://repo.spring.io/milestone false *********************************** Thymeleaf *********************************** // index.html Server: model.addAttribute("message", message); HTML:

..!..

HTML (Referenz auf eine HTML-Seite): Person List // addPerson.html Server: PersonForm personForm = new PersonForm(); model.addAttribute("personForm", personForm HTML:
First Name:
Last Name:
// personList.html Server: model.addAttribute("persons", persons); HTML:
First Name Last Name
... ...