Ich entschied mich für geschäftliche Zwecke und begann zu studieren. Er ist ein kompletter Amateur und liegt oft falsch. Von Zeit zu Zeit aktualisiert. ]]
・ Ich verwende das MVC-Modell. ・ Implementiert bei STS. -Erstellen Sie ein Spring Starter-Projekt für Package Explorer. -Wählen Sie SpringBootDevTools, springweb und Thymeleaf als Abhängigkeiten
Erster Controller Schreiben Sie @ Controller, da dies ein Controller ist Antworten Sie auf Anforderungen, die eine Verbindung zum Kontextstamm (http : // localhost: 0808 /) herstellen möchten, mit der Annotation @ RequestMapping.
@Controller
public class ClassName {
@RequestMapping(value = "/")
}
Kommentar: Es ist ein Controller mit @controller @ RequestMapping (value = "Schrägstrich steht für Kontextstamm")
@ RequestMapping beginnt mit der Arbeit, wenn der Wertepfad mit der Anforderung übereinstimmt. Die Aufgabe besteht darin, die Methode zu verschieben. So wie es ist, gibt es keine Methode Methode hinzugefügt! !!
@Controller
public class ClassName {
@RequestMapping(value = "/")
public String respons() {
return "index.html";
}
}
Kommentar: @ RequestMapping (value = "/") gefolgt von der Antwortmethode (beliebiger Name) funktioniert
public String void respons() {
return "index.html";
}
Durch Festlegen der Rückkehr zu index.html wird index.html im Browser angezeigt. Wenn Sie dies in main.html ändern, wird natürlich main.html unter Vorlage angezeigt.
Index.html kann übrigens weggelassen werden.
public String respons() {
return "index";
}
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1 th:text="${res}"></h1>
</body>
</html>
Kommentar: Ich habe das HTML-Tag kopiert. Wenn Sie dies schreiben, können Sie die Option th im h1-Tag verwenden. Der Inhalt von "$ {res}" wird im Browser angezeigt Schreiben Sie den Inhalt von "res" in Java
Als nächstes kommt Java
package com.samle.spring;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class Sample {
@RequestMapping(value="/")
public ModelAndView sample() {
ModelAndView mod = new ModelAndView();
mod.setViewName("sample");
mod.addObject("res", "hello world");
return mod;
}
}
Der Unterschied zu Teil 1 ist der Typ namens Model And View Die Beispielmethode gibt diesen Mod zurück.
Mit anderen Worten, der im Mod gepackte Wert wird im Browser angezeigt.
Woher gibst du den Mod zuerst zurück? Beschreiben Sie, wohin Sie zurückkehren sollen Diesmal ist es sample.html
mod.setViewName("sample");
Führen Sie als Nächstes zwei Dinge gleichzeitig aus
mod.addObject("res", "hello world");
Im ersten Argument war "res" HTML, "$ res" Die zweite enthält die anzuzeigenden Zeichen.
Hoffentlich sollte Hello World angezeigt werden
Verwenden Sie anschließend "Senden", um die Anzeige zu ändern. Es wird immer komplizierter, also schauen wir es uns Schritt für Schritt an.
@Controller
public class Sample {
@RequestMapping(value="/")
public String index() {
return "sample";
}
Rufen Sie sample.html wie in Teil 1 auf.
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="/req">
<p>Nachname</p><input type="text" name="firstName"><br>
<p>Name</p><input type="text" name="lastName">
<button type="submit">Senden</button>
</form>
<h1 th:text="${res}"></h1>
</body>
</html>
Zu diesem Zeitpunkt ist th: text = "$ {res}" leer und wird nicht angezeigt.
Da die Aktion des Formular-Tags / req ist, setzen Sie es in Java und empfangen Sie die Eingabe
@RequestMapping(value="/req")
public ModelAndView respons(@RequestParam("firstName") String first,
@RequestParam("lastName") String last) {
ModelAndView mod = new ModelAndView();
mod.setViewName("sample");
mod.addObject("res", "vollständiger Name" + first + " " + last + "Herr.");
return mod;
}
Wenn Sie es erhalten, können Sie es erhalten, indem Sie @ RequestMapping (value = "/ req) eingeben.
Der Rest ist der gleiche wie in Teil 2.
Wenn Sie Ihren vollständigen Namen angeben können, werden Sie Erfolg haben!
package com.samle.spring;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class Sample {
@RequestMapping(value="/")
public String index() {
return "sample";
}
@RequestMapping(value="/req")
public ModelAndView respons(@RequestParam("firstName") String first,
@RequestParam("lastName") String last) {
ModelAndView mod = new ModelAndView();
mod.setViewName("sample");
mod.addObject("res", "vollständiger Name" + first + " " + last + "Herr.");
return mod;
}
}
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="/req">
<p>Nachname</p><input type="text" name="firstName"><br>
<p>Name</p><input type="text" name="lastName">
<button type="submit">Senden</button>
</form>
<h1 th:text="${res}"></h1>
</body>
</html>
Sie können sich trennen, indem Sie zwei @ RequesrMapping in die Beispielklasse schreiben.
package com.samle.spring;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class Sample {
@RequestMapping(value="/")
public String index() {
return "sample";
}
/*
Neue Inhalte von hier
*/
@RequestMapping(value="/req")
public ModelAndView respons(@ModelAttribute Param p) {
ModelAndView mod = new ModelAndView();
mod.setViewName("sample");
mod.addObject("res", p);
return mod;
}
public static class Param{
private String firstName;
private String lastName;
public String getFirstName(){
return firstName;
}
public String getLastName(){
return lastName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
}
ModelAndView mod = new ModelAndView();
mod.setViewName("sample");
mod.addObject("res", p);
return mod;
}
Wenn modelAttribute in das Argument geschrieben ist, ist ein Objekt, das dem Namen nach modelAttribute entspricht, neu.
Mit dem obigen Code ist gleichzeitig mit der p-Instanz der param-Klasse neu
Stellen Sie den Wert des Anforderungsparameters ein
Dann packe die p Instanz in mod
Um den Inhalt abzurufen, schreiben Sie "$ {res.name}".
Als nächstes kommt HTML
```html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="/req">
<p>Nachname</p><input type="text" name="firstName"><br>
<p>Name</p><input type="text" name="lastName">
<button type="submit">Senden</button>
</form>
<div th:if="${res}">
<h1 th:text=" 'Sie sind' + ${res.firstName} + ' ' + ${res.lastName} + 'nicht wahr' "></h1>
</div>
</body>
</html>
Der Unterschied zu Teil 3 ist hier
<div th:if="${res}">
<h1 th:text=" 'Sie sind' + ${res.firstName} + ' ' + ${res.lastName} + 'nicht wahr' "></h1>
</div>
th: if ist false, wenn der Inhalt von res null ist und nicht im div-Tag gelesen werden kann. Der Grund dafür ist Da der Inhalt von $ {res.firstName} leer ist, wenn er zum ersten Mal im Kontextstamm angezeigt wird Weil es zu einem Fehler führen wird. Muss eingeschlossen werden, wenn verhindert werden soll, dass $ {res.firstName} gelesen wird