Hallo.
Lassen Sie uns die Ausnahmebehandlung bis zum letzten Mal fortsetzen!
1: [Grundlegendes zu den Super-Grundlagen] Eine kurze Beschreibung von MVC 2: [Vorlage vorbereiten] Ich möchte eine Vorlage mit Spring Initializr erstellen und eine Hallo-Welt erstellen 3: [Verbindung / Einstellungen / Datenanzeige mit MySQL] Temporäre Daten in MySQL speichern-> Alle abrufen-> Oben anzeigen 4: [POST-Funktion] Implementierung der Posting-Funktion 5: [PATCH-Funktion] TODO-Anzeige umschalten 6: [Einfach zu verwendendes JpaRepository] Implementierung der Suchfunktion [7: [Häufig mit Thymeleaf-Vorlagenfragmenten] Header erstellen] (https://qiita.com/nomad_kartman/items/8c33eca2880c43a06e40) [8: [PUT-Funktion] Implementierung der Bearbeitungsfunktion] (https://qiita.com/nomad_kartman/items/66578f3f91a422f9207d) [9: [Tweak] TODO-Anzeige in chronologischer Reihenfolge sortieren + Fälligkeitsdatum auf heutiges Datum setzen] (https://qiita.com/nomad_kartman/items/5ee2b13a701cf3eaeb15) 10: [Ausnahmebehandlung mit Spring] Eine kurze Zusammenfassung der Ausnahmebehandlung [11: [Ausnahmebehandlung mit Feder] Ausnahmebehandlung beim Zugriff auf TODO mit nicht vorhandener ID] (https://qiita.com/nomad_kartman/items/a486838153a563767169) 12: [Ausnahmebehandlung im Frühjahr] Verarbeitung, wenn eine Anforderung mit einer nicht verwendeten HttpMethod-Verarbeitung eingeht, wenn ein Fehler auf dem Server auftritt
Was ist eine HTTP-Methode? Ich denke, es gibt viele Leute, die das denken, also ist es diesmal eine grobe Skizze, aber ich werde erklären, wie es ist.
Zunächst möchte ich, dass Sie verstehen
Zugriff auf die Internetseite = Zugriff auf den Server im Internet
darüber.
Es gibt verschiedene Funktionen (z. B. die TODO-Funktion), z. B. die Anzeige von HP auf diesem Server. Wenn darauf zugegriffen wird, sollte dies wie vom Ersteller erwartet funktionieren.
Übrigens wird die TODO-App, die ich gerade erst erstelle, nicht im Web veröffentlicht. Da ich jedoch einen temporären Server auf unserem lokalen Server habe, kann ich beim Ausführen der App auf localhost: 8080 zugreifen. Es ist.
Nun, ich habe herausgefunden, dass Sie HP verwenden können, indem Sie auf den Server zugreifen.
Worauf muss ich zugreifen?
Zunächst benötigen Sie die Adresse dieser Seite!
Wenn die Seite wie ein Haus ist, wird die Adresse die Adresse sein!
Wenn Sie HP nur normal verwenden, müssen Sie nur die Adresse kennen, aber wenn Sie HP tatsächlich als Web Creator erstellen, müssen Sie ein anderes Konzept HttpMethod verstehen.
Tatsächlich verwenden wir beim Zugriff auf die Site etwas namens HttpMethod, um den Zugriff anzufordern.
Durch gleichzeitiges Anfordern der Site-URL + HttpMethod bestimmt die Site, welche Seite der Benutzer besuchen möchte!
Nehmen Sie zum Beispiel das folgende Beispiel.
com/example/todo/TodoController.java
@Controller
public class TodoController {
@GetMapping("/top")
public String top(Model model){
return "top";
}
Dies ist der Teil, der die oberste Seite der TODO-App anzeigt, aber ich möchte darauf achten
Dies ist der Teil von @GetMapping ("/ top")
.
Diese Anmerkung ist vom Benutzer
Die Rolle besteht darin, in der "Site-URL / oben" anzugeben, was Sie tun möchten, wenn Sie eine Anfrage mit der "GET-Methode" stellen.
Wenn der Benutzer eine solche Anfrage stellt, wird daher die Funktion "top" ausgeführt.
Wenn die Site zu Hause ist und die Adresse eine Adresse ist, kann HttpMethod wie ein Schlüssel sein.
Es ist wie der Schlüssel, der benötigt wird, um den Raum zu betreten, in dem die oberste Seite des Hauses angezeigt wird.
Nehmen Sie zum Beispiel das folgende Beispiel
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){
//Nachbearbeitung
}
Ich habe den Prozess hinzugefügt, wenn auf / top über die POST-Methode zugegriffen wird.
Die URL selbst für den Zugriff ist dieselbe, aber eine unterschiedliche Verarbeitung kann durch Ändern der HTTP-Methode zum Zeitpunkt der Anforderung realisiert werden.
Nun, es gibt verschiedene Arten von HttpMethod, aber lassen Sie uns die typischen und ihre Rollen zusammenfassen.
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>
Fügen wir die beiden oben genannten hinzu.
Informationen zum Schreiben von Controller Advice finden Sie im vorherigen Artikel.
Hier wird 405.html angezeigt, wenn "HttpRequestMethodNotSupportedException" (eine Ausnahmeklasse, die auftritt, wenn eine Anforderung für eine nicht vorhandene HttpMethod ausgelöst wird) auftritt.
Verwenden wir den Befehl "Curl", um eine HttpMethod auszulösen, die tatsächlich nicht existiert!
Starten Sie die Todo-App und im Terminal
$ curl -X POST "http://localhost:8080/top"
Art. Dies sendet eine Zugriffsanforderung mit "POST" an "/ top", die ursprünglich die Verarbeitung nur mit "GET" implementiert.
Dann ist das Ergebnis
Es sollte so aussehen! Sie können sehen, dass 405 wie erwartet angezeigt wird.
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>
Durch Hinzufügen dieser ist es jetzt möglich, eine Seite mit einem Fehler von 500 anzuzeigen, wenn die Ausnahmeklasse `` auftritt!
Recommended Posts