[Java] Lancer une requête et afficher l'écran (GET / POST)
Transition d'écran vers hello.html avec la méthode GET
- Entrez l'URL dans le navigateur et appuyez sur Entrée pour appeler la méthode GET et obtenir la page HTML dans le navigateur
- Utilisez la méthode getHello pour traiter les requêtes GET vers localhost: 8080 / hello.
- Spécifiez le nom du fichier html sans extension comme valeur de retour de la méthode
- Pour le fichier html, spécifiez le chemin depuis le dossier resources / templates
- Afficher hello.html lorsqu'une requête GET arrive à localhost: 8080 / hello
@Controller
- Classe de contrôleur
- Peut être utilisé dans DI en ajoutant l'annotation @Controller
@GetMapping
- Attachez @GetMapping à la méthode pour gérer la méthode GET des requêtes HTTP.
- Utilisez GetMapping lors du retour de l'interface utilisateur Web
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.Transition d'écran vers html
}
}
hello.html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org"> <!--Décrit d'utiliser Thymeleaf-->
<head>
<meta charset="UTF8"></meta>
<title>Hello World</title>
</head>
<body>
<h1>Hello World</h1>
<body>
</html>
Accédez à l'URL et vérifiez!
- URL:http://localhost:8080/hello

Passer la valeur de l'écran avec la méthode POST
Namespace
- L'espace de nom est pour identifier et identifier sûrement l'objet cible avec un certain nom.
- Pour HTML / XML, utilisez des parenthèses pour écrire des balises et des titres (
<h1> <TITLE>
, etc.)
- Thymeleaf a son propre espace de noms comme ci-dessous,
- Si vous définissez un schéma (représentant la structure d'un système) contenu dans un espace de noms, vous pouvez utiliser un espace de noms spécifique à Thymeleaf **
- Vous pouvez transmettre une valeur de l'écran à la classe de contrôleur en utilisant l'attribut th: value.
//Xmlns:th = “URL” //Destination de définition
<input type="text" name="text1" th:value="${text1_value}"/>
- Ajout d'une balise de formulaire à hello.html
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">
Entrez vos personnages préférés:
<input type="text" name="text1" th:value="${text1_value}"/>
<input type="submit" value="Cliquez sur"/>
</form>
<body>
</html>
Spécifiez la méthode à utiliser avec l'attribut method de la balise form
- Ajout du traitement de la méthode POST à la classe HelloController
@PostMapping
- Effectue le traitement lorsqu'il est envoyé par la méthode POST
@RequestParam
- Recevez l'entrée de l'écran en ajoutant l'annotation @RequestParam à l'argument de la méthode
- Spécifiez la valeur de l'attribut de nom html dans l'argument de l'annotation.
model.addAttribute
- Définissez la clé et la valeur dans model.addAttribute
- Vous pouvez recevoir la valeur de clé spécifiée de l'écran (html)
- Pour le modèle dans ce cas, reportez-vous à ce qui suit (Remarque)
- Il n'est pas nécessaire de créer une classe spécifique à l'avance en passant des données avec une valeur clé = grande polyvalence
Dans l'exemple ci-dessous
- Cliquez sur Form pour voler POST (postRequest)
- En annotant @RequestParam, «" text1 "» peut être reçu par le «str» spécifié.
- Définissez
str
avec le nom d'attribut" 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); //Enregistrez la chaîne de caractères reçue de l'écran dans Modèle
return "helloResponse"; //helloResponse.Transition d'écran vers html
}
}
Reçoit une valeur de la classe de contrôleur
- Créez
helloResponse.html
sous src / main / resources / templates
- Spécifiez la clé enregistrée dans
model.addAttribute
dans l'attribut th: text
.
- ** En règle générale de Spring Boot, ajoutez les données que vous souhaitez afficher à l'écran sous la forme d'attribut dans la classe Model en commun, et modifiez le modèle **
- ** Renvoie le résultat de la fusion du modèle et du modèle **
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>
<!--Reçoit la valeur du modèle et affiche les caractères reçus-->
<p th:text="${sample}"></p><body>
</html>
Accédez à l'URL et vérifiez!
- URL:http://localhost:8080/hello


(Remarque) Qu'est-ce que Schema?
- Le schéma est dans l'espace de noms
- ** Structure de données **
- Généralement, combinaison nom et taille de la base de données
* bigint userId
* Varchar[50] username
- Le HTML lui-même est aussi un schéma
- La structure de balise standard est appelée schéma HTML
- Exemple: une balise crée un lien externe / une plage polyvalente Div, etc.
- Vous pouvez ajouter un schéma à l'espace de noms standard XML
- Le schéma peut être étendu en développant l'espace de noms avec th: labe etc. (On peut dire qu'il s'agit de metaDB)
(Remarque) Quel est le modèle Thymeleaf?
- Le modèle est un objet de transfert de données (seules les données sont transmises comme cette fois = objet de données)
- Accès aux données avec du code Java / Lorsque vous souhaitez intégrer une classe représentant des données Java dans un modèle Html, c'est le rôle de Model de créer et de transmettre un objet Jaba qui ne contient que des données.