J'ai décidé de l'utiliser pour les affaires et j'ai commencé à étudier. C'est un amateur complet et il se trompe souvent. Mis à jour de temps en temps. ]
・ J'utilise le modèle MVC. ・ Mis en œuvre à STS. -Créer un projet Spring Starter pour Package Explorer. -Sélectionnez SpringBootDevTools, springweb et Thymeleaf comme dépendances -Un package est créé dans src / main / java et application.java est créé par défaut. Puisque main est inclus dans application.java, l'exécution commence à partir d'ici ・ Mettez le contrôleur dans l'emballage -Placez la vue dans src / main / resources / template.
Premier contrôleur Écrivez @ Controller car il s'agit d'un contrôleur Répondez aux demandes qui souhaitent se connecter à la racine de contexte (http : // localhost: 0808 /) en utilisant l'annotation @ RequestMapping.
@Controller
public class ClassName {
@RequestMapping(value = "/")
}
Commentaire: C'est un contrôleur avec @controller @ RequestMapping (valeur = "la barre oblique représente la racine du contexte")
@ RequestMapping commence à fonctionner lorsque le chemin de la valeur correspond à la demande. Le travail consiste à déplacer la méthode. Tel qu'il est, il n'y a pas de méthode Méthode ajoutée! !!
@Controller
public class ClassName {
@RequestMapping(value = "/")
public String respons() {
return "index.html";
}
}
Commentaire: @ RequestMapping (value = "/") suivi de la méthode répond (tout nom) fonctionne
public String void respons() {
return "index.html";
}
En définissant return to index.html, index.html s'affiche dans le navigateur. Bien sûr, si vous changez cela en main.html, main.html sous le modèle sera affiché.
À propos, index.html peut être omis.
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>
Commentaire: J'ai copié la balise html. En écrivant ceci, vous pouvez utiliser l'option th dans la balise h1. Le contenu de "$ {res}" est affiché dans le navigateur Ecrire le contenu de "res" en java
Ensuite est 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;
}
}
La différence avec la partie 1 est le type appelé Model And View La méthode d'exemple renverra ce mod.
En d'autres termes, la valeur emballée dans le mod est affichée dans le navigateur.
Où retournez-vous le mod en premier? Décrivez où retourner Cette fois, c'est sample.html
mod.setViewName("sample");
Ensuite, faites deux choses en même temps
mod.addObject("res", "hello world");
Dans le premier argument, "res" était html, "$ res" Le second contient les caractères à afficher.
Espérons que Hello World devrait être affiché
Ensuite, utilisez soumettre pour modifier l'affichage. Cela devient de plus en plus compliqué, alors jetons un coup d'œil étape par étape.
@Controller
public class Sample {
@RequestMapping(value="/")
public String index() {
return "sample";
}
Appelez sample.html de la même manière que la partie 1.
<!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>Nom de famille</p><input type="text" name="firstName"><br>
<p>Nom</p><input type="text" name="lastName">
<button type="submit">Envoyer</button>
</form>
<h1 th:text="${res}"></h1>
</body>
</html>
À ce stade, th: text = "$ {res}" est vide et ne sera pas affiché.
Puisque l'action de la balise form est / req, définissez-la en java et recevez l'entrée
@RequestMapping(value="/req")
public ModelAndView respons(@RequestParam("firstName") String first,
@RequestParam("lastName") String last) {
ModelAndView mod = new ModelAndView();
mod.setViewName("sample");
mod.addObject("res", "nom complet" + first + " " + last + "M.");
return mod;
}
Lorsque vous le recevez, vous pouvez le recevoir en tapant @ RequestMapping (value = "/ req).
Le reste est le même que ce que j'ai fait dans la partie 2.
Si vous pouvez donner votre nom complet, vous réussirez!
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", "nom complet" + first + " " + last + "M.");
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>Nom de famille</p><input type="text" name="firstName"><br>
<p>Nom</p><input type="text" name="lastName">
<button type="submit">Envoyer</button>
</form>
<h1 th:text="${res}"></h1>
</body>
</html>
Il est possible de séparer en écrivant deux @ RequesrMapping dans la classe exemple.
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";
}
/*
Nouveau contenu d'ici
*/
@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;
}
Si modelAttribute est écrit dans l'argument, un objet égal au nom après modelAttribute sera New.
Avec le code ci-dessus, en même temps que l'instance p de la classe param est nouvelle
Définir la valeur du paramètre de demande
Ensuite, emballez l'instance p dans mod
Pour rappeler le contenu, écrivez "$ {res.name}"
Vient ensuite le 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>Nom de famille</p><input type="text" name="firstName"><br>
<p>Nom</p><input type="text" name="lastName">
<button type="submit">Envoyer</button>
</form>
<div th:if="${res}">
<h1 th:text=" 'vous êtes' + ${res.firstName} + ' ' + ${res.lastName} + 'n'est-ce pas' "></h1>
</div>
</body>
</html>
La différence avec la partie 3 est ici
<div th:if="${res}">
<h1 th:text=" 'vous êtes' + ${res.firstName} + ' ' + ${res.lastName} + 'n'est-ce pas' "></h1>
</div>
th: if est faux si le contenu de res est nul et ne peut pas être lu dans la balise div. La raison de faire cela est Étant donné que le contenu de $ {res.firstName} est vide lors de son premier affichage dans la racine de contexte Parce que cela entraînera une erreur. Doit être inclus dans if pour empêcher la lecture de $ {res.firstName}
Recommended Posts