Es wird mehrfach implementiert.
Das letzte Mal habe ich die folgenden zwei Dinge getan, um Hello World anzuzeigen.
@ Controller
anDas Projekt verwendet weiterhin das zuletzt erstellte.
Im Einzelnen werden wir Folgendes tun.
Es gibt zwei Hauptwege, um dies zu erreichen.
Beginnen wir mit @ RequestParam
.
Schreiben Sie den
-Teil von index.html wie folgt um.index.html
<body>
<form action="/hello" method="get">
Name:
<input type="text" name="username">
<input type="submit" value="Senden">
</form>
</body>
Etikett | Elementname | Inhalt |
---|---|---|
form | action | Geben Sie die URL an, an die die Anfrage gesendet werden soll. |
method | Wählen Sie die Übertragungsmethode aus GET und POST aus und geben Sie sie an. | |
input | type="text" | Textfeld. |
name | Der Name des Parameters. Wird verwendet, wenn Sie auf die Java-Seite kommen. | |
type="submit" | Schaltfläche zum Senden von Parametern. | |
value | Geben Sie die Zeichenfolge an, die im Inhalt angezeigt werden soll (Textfeld, Schaltfläche usw.). |
Fügen Sie als Nächstes den folgenden Code zu "DemoController.java" hinzu.
DemoController.java
package com.example.demo;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class DemoController {
//Es ist dasselbe wie die zuletzt erstellte Hallo-Methode. (Wechseln Sie zum Index, da der Methodenname abgedeckt ist.)
@RequestMapping(value="/",method=RequestMethod.GET)
public ModelAndView index() {
ModelAndView mav=new ModelAndView();
mav.setViewName("/index");
return mav;
}
//Dies ist die Methode, um diese Zeit hinzuzufügen.
@GetMapping("/hello")
public ModelAndView hello(@RequestParam String username,ModelAndView mav) {
mav.addObject("username",username);
mav.setViewName("/hello");
return mav;
}
}
Informationen zur Funktion von ModelAndView finden Sie im vorherigen Artikel!
@RequestParam
Beschrieben am Anfang des Arguments. Durch Hinzufügen wird der Wert des Anforderungsparameters automatisch in der Variablen gespeichert. Darüber hinaus gibt es verschiedene Möglichkeiten zu schreiben, so dass ich sie alle zusammen vorstellen werde.
Der Name des gesendeten Parameters lautet beispielsweise "Benutzername".
@RequestParam
String usernameBeschreibungsbeispiel
@RequestParam String username //OK
@RequestParam String name //NG
@RequestParam("username")
String usernameBeschreibungsbeispiel
@RequestParam("username") String username //OK
@RequestParam("username") String name //OK
@RequestParam("name") String username //NG
@RequestParam(value="username",required=false)
String usernameBeschreibungsbeispiel
@RequestParam(value="username",required=false) String username //OK
@RequestParam(value="name",required=false) String name //OK, kann aber nicht geliefert werden
@RequestParam(value="name",required=true) String name //NG
Erstellen Sie dann eine HTML-Datei, die die Parameter empfängt. Erstellen Sie eine HTML-Datei mit dem Namen "hello.html" im selben Ordner wie "index.html" und schreiben Sie den Inhalt wie folgt neu.
hello.html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<span th:text="${username}"></span>, Hallo Welt!
</body>
</html>
<html xmlns:th="http://www.thymeleaf.org">
th: text =" $ {Parametername} "
** ModelAndView
gespeicherten Parameter ab und zeigt sie im Inhalt an. Es wird für die Tags "" verwendet.
th: value =" $ {Parametername} "
** <input type =" text ">
usw. verwendet.Andere Tags werden jedes Mal erklärt, wenn sie angezeigt werden.
Greifen wir jetzt auf "http: // localhost: 8080" zu.
Geben Sie einen geeigneten Namen ein und klicken Sie auf die Schaltfläche "Senden".
Der eingegebene Name kann auf der nächsten Seite angezeigt werden!
Das Obige ist die Übergabe von Parametern durch @ RequestParam
.
Das Bild ist wie folgt.
Als nächstes folgt die Parameterübergabemethode, die nur mit der GET-Methode möglich ist. Mit dieser Methode können Sie die in der URL enthaltene Zeichenfolge unverändert abrufen. (Wenn Sie beispielsweise auf "http: // localhost: 8080 / hello / xxx" zugreifen, können Sie "xxx" als Parameter erhalten.)
Schreiben Sie die "Hallo" -Methode von "DemoController.java" neu.
DemoController.java
@GetMapping("/hello/{username}")
public ModelAndView hello(@PathVariable String username,ModelAndView mav) {
mav.addObject("username",username);
mav.setViewName("/hello");
return mav;
}
@GetMapping
Ich habe das letzte Mal gemacht, aber das Problem ist das Argument.
Fügen Sie den Teil, den Sie von der URL erhalten möchten, in "{}" ein und geben Sie den Namen für den Aufruf mit "@ PathVariable" ein, der später beschrieben wird.
@PathVariable
Beschrieben am Anfang des Arguments. Es gibt mehrere Möglichkeiten, dies zu schreiben, aber es ist dasselbe wie "@ RequestParam", daher werde ich es weglassen.
Zusätzlich können mehrere Parameter erfasst werden.
Wenn Sie beispielsweise beim Zugriff auf http: // localhost: 8080 / hello / hatopo / 24`` hatopo
und 24
erhalten möchten, schreiben Sie wie folgt.
Beschreibungsbeispiel
@GetMapping("/hello/{username}/{age}")
public ModelAndView hello(@PathVariable String username,@PathVariable int age,ModelAndView mav) {
//Der Inhalt wird weggelassen
return mav;
}
Greifen wir jetzt auf "http: // localhost: 8080 / hello / xxx" zu.
(Geben Sie eine beliebige Zeichenfolge für xxx ein.)
Ich konnte die Parameter nach / hello
anzeigen!
index.html
<body>
Name:<input type="text" id="name">
<input type="submit" value="Senden" onclick="send()">
<script>
function send(){
var name = document.getElementById("name").value;
if(name == "")name = "default_name";
location.href = "http://localhost:8080/hello/" + name;
}
</script>
</body>
Sie können den Eingabewert anzeigen, indem Sie auf "http: // localhost: 8080 /" zugreifen, den Namen eingeben und auf die Schaltfläche "Senden" klicken!
Das Obige ist die Übergabe von Parametern. Lassen Sie uns die Objekte weiter übergeben.
Für diejenigen, die nichts über Objekte wissen, ist es in Ordnung, es vorerst als "Box (Klasse) mit Parametern" zu verstehen.
Erstellen Sie zunächst eine Klasse mit dem Namen "User" im selben Ordner wie "DemoController" und fügen Sie den folgenden Code hinzu.
User.java
package com.example.demo;
public class User {
private String name;
private int age;
}
Fügen Sie als Nächstes die Methoden "getter" und "setter" hinzu, die Java zum Abrufen / Festlegen von Parametern benötigt. Sie können es manuell schreiben. Wenn Sie es jedoch automatisch hinzufügen möchten, platzieren Sie den Cursor an einer geeigneten Stelle in der Benutzerklasse und klicken Sie auf "Quelle" >> "Getter- und Setter-Generierung". Klicken Sie auf "Alles auswählen" >> "Generieren". Es ist in Ordnung, wenn der gesamte Code so aussieht:
User.java
package com.example.demo;
public class User {
private String name;
private int age;
//↓ Code durch automatische Generierung hinzugefügt
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
//↑ Code durch automatische Generierung hinzugefügt
}
Dann schreiben Sie index.html
wie folgt um.
index.html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="/hello" method="get" th:object="${user}">
Name:<input type="text" name="name"><br>
Alter:<input type="text" name="age"><br>
<input type="submit" value="Senden">
</form>
</body>
</html>
th: object =" $ {Objektname} "
** Lassen Sie uns auch die "Hallo" -Methode von "DemoController.java" umschreiben.
DemoController.java
@GetMapping("/hello")
public ModelAndView hello(@ModelAttribute User user,ModelAndView mav) {
mav.addObject("user",user);
mav.setViewName("/hello");
return mav;
}
@ModelAttribute
Beschrieben am Anfang des Arguments. Speichern Sie das vom Formular gesendete Objekt in einer Variablen.
Zu diesem Zeitpunkt wird Spring hinter den Kulissen Folgendes tun.
Interne Verarbeitung
User user = new User();
user.setName(name);
user.setAge(age);
Daher funktioniert es nicht richtig, wenn die Feldvariable name
nicht in der Klasse User
definiert ist oder die Methode setAge
nicht definiert ist.
Sie können diese Anmerkung auch in eine Methode schreiben, sie wird jedoch sehr unterschiedlich verwendet, sodass ich sie in diesem Artikel weglassen werde ...
Zum Schluss schreiben wir hello.html
wie folgt um.
hello.html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<div th:object="${user}">
<span th:text="*{name}"></span>Ist
<span th:text="*{age}"></span>Ich bin alt!
</div>
</body>
</html>
th: text =" * {Parametername} "
** th: text =" $ {Objektname.Parametername} "
. th: object = {}
beschreibt, kann es wie oben abgekürzt werden.Greifen wir jetzt auf "http: // localhost: 8080" zu. Geben Sie Ihren Namen und Ihr Alter ein und klicken Sie auf "Senden" ...
Ich konnte meinen Namen und mein Alter anzeigen!
--Passing-Parameter mit @ RequestParam
@ PathVariable
@ ModelAttribute
übergebenDas ist alles für diese Zeit. Danke für deine harte Arbeit. Ab dem nächsten Mal werde ich auf ernstere Funktionen eingehen.
Recommended Posts