[Java] Wirf eine Anfrage und zeige den Bildschirm an (GET / POST)
Bildschirmübergang zu hello.html mit der GET-Methode
- Geben Sie die URL in den Browser ein und drücken Sie die Eingabetaste, um die GET-Methode aufzurufen und die HTML-Seite im Browser abzurufen
- Verwenden Sie die getHello-Methode, um GET-Anforderungen an localhost zu verarbeiten: 8080 / hello.
- Geben Sie den HTML-Dateinamen ohne Erweiterung als Rückgabewert der Methode an
- Geben Sie für die HTML-Datei den Pfad aus dem Ordner resources / templates an
- Zeigen Sie hello.html an, wenn eine GET-Anfrage an localhost kommt: 8080 / hello
@Controller
- Controller-Klasse
- Kann in DI durch Hinzufügen einer @ Controller-Anmerkung verwendet werden
@GetMapping
- Hängen Sie @GetMapping an eine Methode an, um die GET-Methode von HTTP-Anforderungen zu verarbeiten.
- Verwenden Sie GetMapping, wenn Sie die Web-Benutzeroberfläche zurückgeben
HelloController.java
package com.example.demo.trySpring;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class HelloController{
@GetMapping("/hello")
public String getHello(){
return"hello"; //hello.Bildschirmübergang zu HTML
}
}
hello.html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org"> <!--Beschrieben, Thymeleaf zu verwenden-->
<head>
<meta charset="UTF8"></meta>
<title>Hello World</title>
</head>
<body>
<h1>Hello World</h1>
<body>
</html>
Greifen Sie auf die URL zu und überprüfen Sie!
- URL:http://localhost:8080/hello
Übergeben Sie den Wert mit der POST-Methode vom Bildschirm
Namespace
- Der Namensraum dient zur sicheren Identifizierung und Identifizierung des Zielobjekts mit einem bestimmten Namen.
- Verwenden Sie für HTML / XML Klammern, um Tags und Titel zu schreiben (
<h1> <TITLE>
usw.)
- Thymeleaf hat einen eigenen Namespace wie unten,
- Wenn Sie ein Schema definieren (das die Struktur eines Systems darstellt), das in einem Namespace enthalten ist, können Sie einen Thymeleaf-spezifischen Namespace verwenden **
- Sie können einen Wert vom Bildschirm an die Controller-Klasse übergeben, indem Sie das Attribut th: value verwenden.
//Xmlns:th = “URL” //Definitionsziel
<input type="text" name="text1" th:value="${text1_value}"/>
- Formular-Tag zu hello.html hinzugefügt
hello.html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF8"></meta>
<title>Hello World</title>
</head>
<body>
<h1>Hello World</h1>
<form method="post" action="/hello">
Geben Sie Ihre Lieblingsfiguren ein:
<input type="text" name="text1" th:value="${text1_value}"/>
<input type="submit" value="klicken"/>
</form>
<body>
</html>
Geben Sie die Methode an, die mit dem Methodenattribut des Formular-Tags verwendet werden soll
- Verarbeitung für POST-Methode zur HelloController-Klasse hinzugefügt
@PostMapping
- Führt die Verarbeitung durch, wenn sie von der POST-Methode gesendet wird
@RequestParam
- Erhalten Sie Eingaben vom Bildschirm, indem Sie dem Argument der Methode die Annotation @RequestParam hinzufügen
- Geben Sie den Wert des HTML-Namensattributs im Argument der Anmerkung an.
model.addAttribute
- Legen Sie den Schlüssel und den Wert in model.addAttribute fest
- Sie können den angegebenen Schlüsselwert vom Bildschirm erhalten (HTML)
- Informationen zum Modell in diesem Fall finden Sie im Folgenden (Hinweis).
- Es ist nicht erforderlich, eine bestimmte Klasse im Voraus zu erstellen, indem Daten mit dem Schlüsselwert = hohe Vielseitigkeit übergeben werden
Im folgenden Beispiel
- Klicken Sie auf Formular, um POST (postRequest) zu fliegen.
- Durch Annotieren von @RequestParam kann "text1" von der angegebenen "str" empfangen werden.
- Setze
str
mit dem Attributnamen" sample "
HelloController.java
package com.example.demo.trySpring;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
public class HelloController{
@GetMapping("/hello")
public String getHello(){
return"hello";
}
@PostMapping("/hello")
public String postRequest(@RequestParam("text1")String str, Model model){
model.addAttribute("sample",str); //Registrieren Sie die vom Bildschirm empfangene Zeichenfolge in Model
return "helloResponse"; //helloResponse.Bildschirmübergang zu HTML
}
}
Erhält einen Wert von der Controller-Klasse
- Erstellen Sie "helloResponse.html" unter "src / main / resources / templates"
- Geben Sie den in
model.addAttribute
registrierten Schlüssel im Attribut th: text
an.
- ** Fügen Sie in der Regel von Spring Boot die Daten, die auf dem Bildschirm angezeigt werden sollen, in Form eines Attributs in der gemeinsamen Modellklasse hinzu und ändern Sie die Vorlage **
- ** Gibt das Ergebnis der Zusammenführung von Vorlage und Modell zurück **
helloResponse.html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF8"></meta>
<title>Response Sample</title>
</head>
<body>
<h1>Hello Response</h1>
<!--Erhält den Wert vom Modell und zeigt die empfangenen Zeichen an-->
<p th:text="${sample}"></p><body>
</html>
Greifen Sie auf die URL zu und überprüfen Sie!
- URL:http://localhost:8080/hello
(Hinweis) Was ist Schema?
- Das Schema befindet sich im Namespace
- ** Datenstruktur **
- Im Allgemeinen Kombination aus DB-Name und Größe
* bigint userId
* Varchar[50] username
- HTML selbst ist ebenfalls ein Schema
- Die Standard-Tag-Struktur heißt HTML-Schema
- Beispiel: Ein Tag erstellt einen externen Link / Div-Universalbereich usw.
- Sie können dem XML-Standardnamespace ein Schema hinzufügen
- Das Schema kann erweitert werden, indem der Namespace mit th: labe usw. erweitert wird. (So etwas wie metaDB)
(Hinweis) Was ist das Thymeleaf-Modell?
- Modell ist ein Datenübertragungsobjekt (nur Daten werden wie folgt übergeben = Datenobjekt)
- Zugreifen auf Daten mit Java-Code / Wenn Sie eine Klasse, die Java-Daten darstellt, in eine HTML-Vorlage einbetten möchten, ist es die Aufgabe von Model, ein Jaba-Objekt zu erstellen und zu übergeben, das nur Daten enthält.