[JAVA] [Einführung in Spring Boot] Senden Sie ein Formular mit thymeleaf

Zweck

Für diejenigen, die mit der Arbeit an Spring Quickstart Guide fertig sind, diejenigen, die angefangen haben, Spring Boot zu lernen, und diejenigen, die eine Überprüfung durchführen möchten

Teilen Sie mit, was Sie gelernt haben, indem Sie tatsächlich am offiziellen Leitfaden Übermittlung von Formularen gearbeitet haben.

Das ausgefüllte Formular finden Sie hier.

Wir werden den Prozess der Anzeige des auf dem Formularbildschirm eingegebenen Werts auf dem Ergebnisbildschirm implementieren.

スクリーンショット 2020-07-08 13.44.23.png

スクリーンショット 2020-07-08 13.44.30.png

Die Entwicklungsumgebung und die Überprüfung sind wie folgt.

Entwicklungsumgebung


Betriebssystem: macOS Mojave Version 10.14.6
Texteditor: Visual Studio Code (im Folgenden VSCode)
Java: 11.0.2

Klicken Sie hier, um eine Übersicht über die Kurzanleitung zu erhalten. Klicken Sie hier, um eine Übersicht über das Erstellen eines RESTful-Webdiensts zu erhalten. Klicken Sie hier, um eine Übersicht über den Verbrauch eines RESTful-Webdienstes zu erhalten. Klicken Sie hier, um eine Übersicht über den Zugriff auf Daten mit JPA zu erhalten.

1. Starten Sie das Spring Boot Projekt!

Greifen Sie zunächst auf spring initial izr zu.

  1. Klicken Sie auf die Schaltfläche ADD DEPENDENCIES und fügen Sie "Spring Web" und "Thymeleaf" hinzu. 2.Artifact, Name geändert in "Handling-Form-Submission".
  2. Ändern Sie Java in 11.

Klicken Sie dann auf die Schaltfläche "GENERATE", um die Zip-Datei herunterzuladen.

スクリーンショット 2020-07-08 9.35.18.png

Extrahieren Sie die heruntergeladene Zip-Datei und Sie können loslegen.

2. Code hinzufügen!

Öffnen Sie den vorherigen Ordner mit VS Code. Wir empfehlen, das Java Extension Pack für Erweiterungen zu installieren. Es wird gesagt, dass Sie es installieren sollten.

スクリーンショット 2020-06-30 10.08.25.png

Lassen Sie uns GreetingController.java erstellen!

Erstellen Sie eine GreetingController.java-Datei in src / main / java / com / example / handleformsubmission /.

スクリーンショット 2020-07-08 9.55.33.png

Fügen Sie den Code hinzu, der sich auf die Formel bezieht.

GreetingController.java


package com.example.handlingformsubmission;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;

@Controller
public class GreetingController {

  @GetMapping("/greeting")
  public String greetingForm(Model model) {
    model.addAttribute("greeting", new Greeting());
    return "greeting";
  }

  @PostMapping("/greeting")
  public String greetingSubmit(@ModelAttribute Greeting greeting) {
    return "result";
  }

}

Wir werden uns eingehender mit dem hinzugefügten Code befassen.

@Controller

GreetingController.java


@Controller
public class GreetingController {
  //Kürzung
}

SpringBoot behandelt diese Klasse als Controller, indem es sie mit "@ Controller" kommentiert. Da der Übergang zu Ansicht und HTML erstellt wird, muss Ansicht als Rückgabewert der später beschriebenen Methode angegeben werden.

Obwohl es diesmal nicht angezeigt wird, wird die Annotation "@ RestController" ebenfalls als Controller behandelt, aber der Rückgabewert der Methode ist der Inhalt der Antwort, ohne zu "View" zu wechseln.

② greetingForm-Methode

GreetingController.java


@GetMapping("/greeting")
public String greetingForm(Model model) {
  model.addAttribute("greeting", new Greeting());
  return "greeting";
}

1.@GetMapping Durch Hinzufügen dieser Anmerkung wird die Methode aufgerufen, die angegeben wird, wenn eine GET-Anforderung mit der in () beschriebenen URL vorliegt. Diesmal ist es "@GetMapping (" / greeting ")". Wenn daher unter http: // localhost8080 / greeting eine GET-Anforderung vorliegt, wird die` greetingForm-Methode aufgerufen. ``

2.model.addAttribute Es erhält das Argument "Modellklasse" als Argument der Methode. Hiermit legen Sie die Daten fest, die an die Ansichtsseite übergeben werden sollen. Daten werden mit der Methode "addAttribute (erstes Argument, zweites Argument)" an die Ansichtsseite übergeben. Sie können Daten im zweiten Argument festlegen und diese Daten auf der Ansichtsseite mit dem Namen des ersten Arguments verwenden.

Dieses Mal übergebe ich das "instanziierte Begrüßungsobjekt" an die Ansicht mit dem Namen "Begrüßung". Die Begrüßung wird später implementiert.

** 3. Methodenrückgabewert ** View wird als Rückgabewert der Methode angegeben. Diesmal kehren wir zur Begrüßung zurück. Das heißt, Sie benötigen greeting.html. Es wird später implementiert.

② greetingSubmit-Methode

GreetingController.java


@PostMapping("/greeting")
public String greetingSubmit(@ModelAttribute Greeting greeting) {
  return "result";
}

1.@PostMapping Durch Hinzufügen dieser Anmerkung wird die Methode aufgerufen, die angegeben wird, wenn eine POST-Anforderung mit der in () beschriebenen URL vorliegt. Diesmal ist es "@PostMapping (" / greeting ")". Wenn daher eine POST-Anforderung unter "http: // localhost8080 / greeting" vorliegt, wird die Methode "greetingSubmit" aufgerufen. ``

2.@ModelAttribute Diese Anmerkung im Argument der Methode dient zum Festlegen des von POST an die angegebene Klasse gesendeten Werts. Dieses Mal wird der an die Variable "Begrüßung" gesendete Wert gespeichert und der Wert für jede Variable der Klasse "Begrüßung" festgelegt.

** 3. Methodenrückgabewert ** View wird als Rückgabewert der Methode angegeben. Diesmal geben wir "Ergebnis" zurück. Das heißt, Sie benötigen result.html. Es wird später implementiert.

Lassen Sie uns Greeting.java erstellen!

Erstellen Sie eine Greeting.java-Datei in src / main / java / com / example / handleformsubmission /.

スクリーンショット 2020-07-08 13.23.40.png

Fügen Sie den Code hinzu, der sich auf die Formel bezieht.

Greeting.java


package com.example.handlingformsubmission;

public class Greeting {

  private long id;
  private String content;

  public long getId() {
    return id;
  }
  public void setId(long id) {
    this.id = id;
  }

  public String getContent() {
    return content;
  }
  public void setContent(String content) {
    this.content = content;
  }

}

Wir werden uns eingehender mit dem hinzugefügten Code befassen.

** 1. Deklaration von Variablen **

Greeting.java


private long id;
private String content;

Es werden zwei Variablen deklariert: long type id und String type content. Da der Zugriffsmodifikator "privat" ist, kann nur innerhalb derselben Klasse auf ihn zugegriffen werden.

** 2. Definition von Getter- und Setter-Methoden **

Greeting.java


public long getId() {
  return id;
}
public void setId(long id) {
  this.id = id;
}

public String getContent() {
  return content;
}
public void setContent(String content) {
  this.content = content;
}

Bereiten Sie eine Getter- und Setter-Methode zum Speichern und Abrufen des im Formular gesendeten Werts vor.

Lassen Sie uns greeting.html erstellen!

Erstellen Sie eine Datei greeting.html in src / main / resources / templates /. Diese HTML-Datei dient zur Anzeige des Formularbildschirms.

スクリーンショット 2020-07-08 13.52.37.png

Fügen Sie den Code hinzu, der sich auf die Formel bezieht.

greeting.html


<!DOCTYPE HTML>
<html xmlns:th="https://www.thymeleaf.org">
<head>
    <title>Getting Started: Handling Form Submission</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
    <h1>Form</h1>
    <form action="#" th:action="@{/greeting}" th:object="${greeting}" method="post">
      <p>Id: <input type="text" th:field="*{id}" /></p>
      <p>Message: <input type="text" th:field="*{content}" /></p>
      <p><input type="submit" value="Submit" /> <input type="reset" value="Reset" /></p>
    </form>
</body>
</html>

Wir werden uns eingehender mit der Beschreibung von Thymeleaf im hinzugefügten Code befassen.

thymeleaf ist eine Template-Engine, die von springboot verarbeitet werden kann. Th: Beschreibe als 〇〇. [Thymeleaf-Tutorial] in japanischer Sprache (https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf_ja.html#thymeleaf%E3%81%AE%E7%B4%B9%E4%BB%) Es gibt auch 8B)!

th:action

Ersetzt den Inhalt des Aktionsattributs des Formular-Tags. Die Beschreibungsmethode lautet th: action =" @ {} ". Da method = "post" ist, wird die greetingSubmit-Methode von GreetingController aufgerufen, wenn die Submit-Taste gedrückt wird.

th:object

Das Objekt wird durch th: object angegeben. Auf diese Weise können Sie auf Variablen in Objekten wie * {id} anstatt auf greeting.id verweisen.

th:field

Schreiben Sie th: field =" * {Variablenname} ", um die Variablen in dem durch th: object angegebenen Objekt anzuzeigen. Dieses Mal ist es, da die Begrüßungsklasse ID und Inhalt enthält, "th: field =" * {id} "", "th: field =" * {content} "". Außerdem ist der in th: field =" * {Variablenname} " beschriebene Variablenname das ID-Attribut und das Namensattribut der Eingabe.

Lassen Sie uns result.html erstellen!

Erstellen Sie eine result.html-Datei in src / main / resources / templates /. Diese HTML-Datei dient zur Anzeige des vom Formularbildschirm gesendeten Ergebnisses.

スクリーンショット 2020-07-08 14.57.32.png

Fügen Sie den Code hinzu, der sich auf die Formel bezieht.

result.html


<!DOCTYPE HTML>
<html xmlns:th="https://www.thymeleaf.org">
<head>
    <title>Getting Started: Handling Form Submission</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
	<h1>Result</h1>
    <p th:text="'id: ' + ${greeting.id}" />
    <p th:text="'content: ' + ${greeting.content}" />
    <a href="/greeting">Submit another message</a>
</body>
</html>

Wir werden uns eingehender mit der Beschreibung von Thymeleaf im hinzugefügten Code befassen.

th:text

Variablen können als Text angezeigt werden, indem th: text =" {Variablenname} " gesetzt wird. Wenn Sie eine Mischung aus Zeichenketten anzeigen, können Sie die Zeichenketten und Variablen kombinieren, indem Sie die Zeichenketten mit "" einschließen und mit "+" verketten.

Dieses Mal werden die ID und der Inhalt der im Formular gesendeten Begrüßungsklasse angezeigt th: text =" 'id:' + $ {greeting.id} ", th: text =" 'content:' + $ {greeting.content} ".

3. Lass es uns laufen!

Nachdem die Anwendung nun ausgeführt werden kann, überprüfen wir sie.

Geben Sie den folgenden Befehl in das Terminal ein und drücken Sie die Eingabetaste.

Terminal


$ ./mvnw spring-boot:run

Wenn Sie dann auf "http: // localhost: 8080 / greeting" zugreifen, sollte der folgende Formularbildschirm angezeigt werden. (Greeting.html wird angezeigt)

スクリーンショット 2020-07-08 15.23.43.png

Geben Sie einen beliebigen Wert für ID und Nachricht ein und klicken Sie auf die Schaltfläche Senden. Sie sollten den Ergebnisbildschirm sehen. (Result.html wird angezeigt)

スクリーンショット 2020-07-08 15.25.36.png

erledigt! Danke für deine harte Arbeit.

Referenzseite

** Use @ModelAttribute ** ** Verwendung von Thymeleaf ** ** Hinweise zur Verwendung von Thymeleaf mit Spring Boot **

Recommended Posts

[Einführung in Spring Boot] Senden Sie ein Formular mit thymeleaf
[Einführung in Spring Boot] Überprüfung der Formularvalidierung
Einführung in Spring Boot ~ ~ DI ~
Einführung in Spring Boot ② ~ AOP ~
Einführung in Spring Boot Teil 1
So erstellen Sie mit SPRING INITIALIZR einen Hinadan für ein Spring Boot-Projekt
Spring Boot Form
Java-Anfänger haben versucht, mit Spring Boot eine einfache Webanwendung zu erstellen
Schritte zum Erstellen einer einfachen Kamel-App mit Apache Camel Spring Boot-Startern
Erstellen Sie eine Spring Boot-Anwendung mit IntelliJ IDEA
So fügen Sie in Spring Boot einen Klassenpfad hinzu
Einführung in Spring Boot + In-Memory Data Grid
Wenden Sie Twitter Bootstrap 4 mithilfe von Webjars auf Spring Boot 2 an
[Einführung in Spring Boot] Authentifizierungsfunktion mit Spring Security
Einführung in Ratpack (9) - Thymeleaf
So erstellen Sie ein Excel-Formular mithilfe einer Vorlagendatei mit Spring MVC
So schreiben Sie einen Komponententest für Spring Boot 2
Wenn Sie die Spring Boot + Thymeleaf-Verarbeitung trennen möchten
Ein Memorandum über die Sucht nach Spring Boot2 x Doma2
[JUnit 5-kompatibel] Schreiben Sie einen Test mit JUnit 5 mit Spring Boot 2.2, 2.3
[Spring Boot] So erstellen Sie ein Projekt (für Anfänger)
Versuchen Sie Spring Boot von 0 bis 100.
[Java] Thymeleaf Basic (Spring Boot)
Versuchen Sie es mit Spring Boot Security
Stellen Sie Spring Boot-Anwendungen für Heroku bereit, ohne die Heroku-CLI zu verwenden
Bis INSERT und SELECT für Postgres mit Spring Boot und Thymianblatt
Ich habe versucht, mit Swagger mit Spring Boot zu beginnen
8 Dinge, die mit Spring Boot und JPA in die DB eingefügt werden müssen
Ich habe mit Spring Boot ein einfaches MVC-Beispielsystem erstellt
So steuern Sie Transaktionen in Spring Boot ohne Verwendung von @Transactional
Einführung in Spring Boot x Offene API ~ Offene API, erstellt mit Generationslückenmuster ~
Spring Boot Tutorial Verwenden der Spring Security-Authentifizierung
[Rails 6] So erstellen Sie mit cocoon einen dynamischen Formular-Eingabebildschirm
So stellen Sie Spring Boot + PostgreSQL ein
Wird in Spring Boot mithilfe einer Bean-Definitionsdatei mit dem Namen application.xml angepasst
Dinge, die beim Ausführen eines bestimmten Jobs mit Spring Batch zu beachten sind
Ich habe ein einfaches Suchformular mit Spring Boot + GitHub Search API erstellt.
Beispielcode zum Testen eines Spring Boot-Controllers mit MockMvc
Verwendung von ModelMapper (Spring Boot)
Rüsten Sie den Federstiefel von der 1.5-Serie auf die 2.0-Serie auf
Ein Memo, das Spring Boot berührte
Verwendung von Thymeleaf mit Spring Boot
Anzeigen der in Spring Boot eingegebenen Zeichen im Browser und Referenzlinks [Einführung in Spring Boot / Für Anfänger]
So sortieren Sie eine Liste mit Comparator
Was ist eine Spring Boot-Originaldatei?
Punkt 87: Erwägen Sie die Verwendung eines benutzerdefinierten serialisierten Formulars
[Einführung in Java] So schreiben Sie ein Java-Programm
Einführung in Ratpack (Extra Edition) - Mit Sentry
Versuchen Sie es mit Spring Boot mit VS-Code
Die Geschichte des Übergangs von Spring Boot 1.5 zu 2.1
Änderungen bei der Migration von Spring Boot 1.5 auf Spring Boot 2.0
Änderungen bei der Migration von Spring Boot 2.0 zu Spring Boot 2.2
[Einführung in JSP + Servlet] Eine kleine Animation ♬
Implementieren Sie CRUD mit Spring Boot + Thymeleaf + MySQL
Asynchrone Verarbeitung mit Spring Boot unter Verwendung von @Async
Implementieren Sie die Paging-Funktion mit Spring Boot + Thymeleaf
Memo zur Installationsmethode von Spring Boot + Thymeleaf Boot Strap
So teilen Sie eine Spring Boot-Nachrichtendatei
Formularklassenvalidierungstest mit Spring Boot