Bonjour.
Continuons à implémenter la gestion des exceptions jusqu'à la dernière fois!
1: [Comprendre les super bases] Une brève description de MVC 2: [Préparer un modèle] Je veux créer un modèle avec Spring Initializr et créer un monde Hello 3: [Connexion / Paramètres / Affichage des données avec MySQL] Enregistrer les données temporaires dans MySQL-> Tout obtenir-> Afficher en haut 4: [Fonction POST] Implémentation de la fonction de publication 5: [Fonction PATCH] Basculer l'affichage TODO 6: [Easy to use JpaRepository] Implémentation de la fonction de recherche [7: [Commun avec les fragments de modèle Thymeleaf] Créer un en-tête] (https://qiita.com/nomad_kartman/items/8c33eca2880c43a06e40) [8: [Fonction PUT] Implémentation de la fonction d'édition] (https://qiita.com/nomad_kartman/items/66578f3f91a422f9207d) [9: [Tweak] Trier l'affichage TODO dans l'ordre chronologique + Régler la date d'échéance à la date d'aujourd'hui] (https://qiita.com/nomad_kartman/items/5ee2b13a701cf3eaeb15) 10: [Gestion des exceptions avec le ressort] Un bref résumé de la gestion des exceptions [11: [Gestion des exceptions avec ressort] Gestion des exceptions lors de l'accès à TODO avec un ID inexistant] (https://qiita.com/nomad_kartman/items/a486838153a563767169) 12: [Traitement des exceptions au printemps] Traitement lorsqu'une requête arrive avec un HttpMethod-Processing inutilisé lorsqu'une erreur se produit sur le serveur
Qu'est-ce qu'une méthode HTTP? Je pense qu'il y a beaucoup de gens qui pensent cela, donc cette fois c'est une ébauche, mais je vais vous expliquer à quoi ça ressemble.
Tout d'abord, j'aimerais que vous compreniez
Accéder au site Internet = Accéder au serveur sur Internet
à propos de ça.
Il existe diverses fonctions (telles que la fonction TODO) telles que l'affichage de HP sur ce serveur, et en cas d'accès, cela devrait fonctionner comme prévu par le créateur.
À propos, l'application TODO que je crée actuellement n'est pas publiée sur le Web, mais comme j'ai un serveur temporaire sur notre site local, lorsque je lance l'application, je peux accéder à localhost: 8080. Il est.
Eh bien, j'ai découvert que vous pouvez utiliser HP en accédant au serveur.
De quoi ai-je besoin pour accéder?
Tout d'abord, vous avez besoin de l'adresse de ce site!
Si le site est comme une maison, l'adresse sera l'adresse!
Si vous utilisez simplement HP normalement, vous avez seulement besoin de connaître l'adresse, mais lorsque vous faites réellement HP en tant que créateur Web, vous devez comprendre un autre concept HttpMethod.
En fait, lors de l'accès au site, nous utilisons quelque chose appelé HttpMethod pour demander l'accès.
En demandant l'URL du site + HttpMethod en même temps, le site détermine quelle page l'utilisateur souhaite visiter!
Par exemple, prenez l'exemple suivant.
com/example/todo/TodoController.java
@Controller
public class TodoController {
@GetMapping("/top")
public String top(Model model){
return "top";
}
C'est la partie qui affiche la première page de l'application TODO, mais ce à quoi je veux faire attention est
C'est la partie de @GetMapping ("/ top")
.
Cette annotation est par l'utilisateur
Le rôle est de spécifier dans le site URL / top '' ce que vous voulez faire lorsque vous faites une requête avec la
méthode GET ''.
Par conséquent, si l'utilisateur fait une telle demande, la fonction `` top '' sera exécutée.
Si le site est à la maison et que l'adresse est une adresse, HttpMethod peut être comme une clé.
C'est comme la clé nécessaire pour entrer dans la pièce qui affiche la première page de la maison.
Par exemple, prenez l'exemple ci-dessous
com/example/todo/TodoController.java
@Controller
public class TodoController {
@GetMapping("/top")
public String top(Model model){
return "top";
}
@PostMapping("/top")
public String top(Model model){
//Post-traitement
}
J'ai ajouté le processus lorsque / top est accédé par la `` méthode POST ''.
L'URL elle-même pour accéder est la même, mais un traitement différent peut être réalisé en changeant la méthode HTTP au moment de la demande.
Eh bien, il existe différents types de HttpMethod, mais résumons les types typiques et leurs rôles.
com/example/todo/exception/TodoControllerAdvice.java
@ResponseStatus(HttpStatus.METHOD_NOT_ALLOWED)
@ExceptionHandler(HttpRequestMethodNotSupportedException.class)
public String badMethod() {
log.warn("Bad Request");
return "error/405.html";
}
templates/error/405.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>405</title>
</head>
<body>
405!
</body>
</html>
Ajoutons les deux ci-dessus.
Vous pouvez voir comment rédiger des conseils de contrôleur en consultant l'article précédent.
Ici, 405.html s'affiche lorsque `` HttpRequestMethodNotSupportedException '' (une classe d'exception qui se produit lorsqu'une demande pour une HttpMethod qui n'existe pas est lancée) se produit.
Utilisons la `` commande Curl '' pour lancer une HttpMethod qui n'existe pas réellement!
Lancez l'application Todo et dans le terminal
$ curl -X POST "http://localhost:8080/top"
Type. Il s'agit d'envoyer une demande d'accès avec POST '' à
/ top '', qui implémente à l'origine le traitement uniquement avec `` GET ''.
Alors le résultat est
Ça devrait ressembler à ça! Vous pouvez voir que 405 est affiché comme prévu.
com/example/todo/exception/TodoControllerAdvice.java
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
@ExceptionHandler(Exception.class)
public String otherErrors() {
log.error("Something went wrong");
return "error/500.html";
}
templates/error/500.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>500</title>
</head>
<body>
500!
</body>
</html>
En les ajoutant, vous pouvez maintenant afficher la page avec 500 erreurs lorsque la «classe d'exception» se produit!
Recommended Posts