[JAVA] Essayez Spring Boot de 0 à 100.

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. ]

Partie 1 "Afficher index.html avec Springboot"

・ 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";
 }

Partie 2 "Essayez d'utiliser Tymeleaf"
<!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

  1. Le mod étant toujours vide, remplissez la valeur.
  2. Décidez où afficher les valeurs compressées dans sample.html
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é

Partie 3 "Affichage dynamique à l'aide des paramètres de requête"

Ensuite, utilisez soumettre pour modifier l'affichage. Cela devient de plus en plus compliqué, alors jetons un coup d'œil étape par étape.

1. Entrez la racine du contexte dans le champ URL. Recevoir une demande avec sample.java
@Controller
public class Sample {
	
	@RequestMapping(value="/")
	public String index() {
		return "sample";
	}

Appelez sample.html de la même manière que la partie 1.

2.html s'affiche
<!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é.

3. Mettez des caractères dans le texte et soumettez-le

Puisque l'action de la balise form est / req, définissez-la en java et recevez l'entrée

4. Recevoir la valeur soumise
@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.

Partie 4 "Unifier les arguments java" À ce rythme, s'il y a 30 entrées, les arguments seront également 30. @ModelAttribute est utilisé dans un tel cas Utilisez comme suit
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;
		}
	 }
}

Explication: ```java @RequestMapping(value="/req") public ModelAndView respons(@ModelAttribute Param p) {
	   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

Essayez Spring Boot de 0 à 100.
Mise à niveau de la botte à ressort de la série 1.5 à la série 2.0
L'histoire de la transition de Spring Boot 1.5 à 2.1
Modifications lors de la migration de Spring Boot 1.5 vers Spring Boot 2.0
Modifications lors de la migration de Spring Boot 2.0 vers Spring Boot 2.2
Essayez d'implémenter la fonction de connexion avec Spring Boot
Essayez d'automatiser la migration avec Spring Boot Flyway
Introduction à Spring Boot ① ~ DI ~
Introduction à Spring Boot ② ~ AOP ~
Introduction à Spring Boot, partie 1
Essayez d'utiliser Spring Boot Security
Essayez Spring Boot sur Mac
Comment configurer Spring Boot + PostgreSQL
Comment utiliser ModelMapper (Spring boot)
Essayez d'exécuter Spring Boot sur Kubernetes
Spring Boot à partir de zéro Partie 2
Spring Boot à partir de zéro Partie 1
L'histoire de la montée de Spring Boot de la série 1.5 à la série 2.1 part2
[Introduction à Spring Boot] Vérification de la validation du formulaire
02. J'ai créé une API pour me connecter de Spring Boot à MySQL (My Batis)
Changer la demande / réponse de l'API REST Spring Boot de CamelCase à SankeCase
Défi Spring Boot
Essayez d'utiliser Spring Boot avec VS Code
Ce que j'ai fait lors de la migration de la série Spring Boot 1.4 vers la série 2.0
Transition de Struts2 à Spring MVC (contrôleur)
Ce que j'ai fait lors de la migration de la série Spring Boot 1.5 vers la série 2.0
Essayez Spring Boot 1 (Construction de l'environnement ~ Démarrage de Tomcat)
Forme de botte de printemps
Spring Boot Rappelez-vous
gae + botte à ressort
Comment diviser un fichier de message Spring Boot
Ajoutez une botte de printemps et un dégradé à éclipse
[Inverser] Spring Security (mis à jour de temps en temps)
Utilisez le mode de modèle de texte Thymeleaf de Spring Boot
Comment utiliser MyBatis2 (iBatis) avec Spring Boot 1.4 (Spring 4)
Comment utiliser h2db intégré avec Spring Boot
Comment réduire l'image de Spring Boot Docker
Essayez d'appeler le service CORBA depuis Spring (Java)
Tutoriel Rails Chapitre 1 De zéro au déploiement [Essayer]
Comment utiliser les attributs de session Spring Boot (@SessionAttributes)
L'histoire de la montée de la série Spring Boot 1.5 à la série 2.1
Essayez l'authentification LDAP avec Spring Security (Spring Boot) + OpenLDAP
Comment ajouter un chemin de classe dans Spring Boot
Introduction à Spring Boot + In-Memory Data Grid
Appuyez sur tous les "Guides" de Spring (mis à jour de temps en temps)
Comment se lier avec un fichier de propriétés dans Spring Boot
[Java] Article pour ajouter une validation avec Spring Boot 2.3.1.
Je voulais classer la botte à ressort dans un multi-projet
Essayez d'afficher Hello World avec Spring + Gradle
Appliquer Twitter Bootstrap 4 à Spring Boot 2 à l'aide de Webjars
◆ Obtenez l'API créée par Spring Boot à partir de React
[Spring Boot] Comment se référer au fichier de propriétés
[Introduction à Spring Boot] Fonction d'authentification avec Spring Security
Spring Boot - Comment définir le délai d'expiration de la session
Fiche d'apprentissage SPRING BOOT 01
Changements de Java 8 à Java 11
Botte de printemps + Heroku Postgres
Somme de Java_1 à 100
Essayez de libérer la gemme
1. Démarrez Spring Framework à partir de 1
Migrer de JUnit 4 vers JUnit 5