Erstellen wir eine TODO-Anwendung mit Java 12-Verarbeitung, wenn eine Anforderung mit einer nicht verwendeten HttpMethod eingeht. ・ Verarbeitung, wenn ein Fehler auf dem Server auftritt

Hallo.

Lassen Sie uns die Ausnahmebehandlung bis zum letzten Mal fortsetzen!

Linkerfassung zur Erstellung von TODO-Anwendungen

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

Eine kurze Beschreibung von HttpMethod

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.

Verstehe leicht, was es bedeutet, eine Website zu besuchen

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.

URL und HttpMethod

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.

Sie können mit unterschiedlichen HttpMethod auf dieselbe URL zugreifen

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.

Verschiedene HttpMethod

Nun, es gibt verschiedene Arten von HttpMethod, aber lassen Sie uns die typischen und ihre Rollen zusammenfassen.

GET
Wird beim Abrufen von Ressourcen auf der Site verwendet (Beispiel: Anzeigen von TODO (Ressource) aus der Datenbank auf der oberen Seite)
POST
Wird beim Posten von etwas verwendet (Beispiel: beim Posten von TODO)
PUT
Ersetzen Sie den Inhalt der Daten (z. B. laden Sie eine Datei hoch und ändern Sie den gesamten Inhalt)
PATCH
Aktualisieren, ändern und speichern Sie einen Teil oder alle Daten (Beispiel: beim Bearbeiten von TODO)

Ausnahmebehandlung bei Anforderung durch eine nicht verwendete HttpMethod

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 Screen Shot 0002-10-25 at 17.01.14.png

Es sollte so aussehen! Sie können sehen, dass 405 wie erwartet angezeigt wird.

Legen Sie als Nächstes die Einstellungen fest, wenn auf dem Server ein Fehler auftritt.

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

Erstellen wir eine TODO-Anwendung mit Java 12-Verarbeitung, wenn eine Anforderung mit einer nicht verwendeten HttpMethod eingeht. ・ Verarbeitung, wenn ein Fehler auf dem Server auftritt
Erstellen wir eine TODO-Anwendung mit Java 11-Ausnahmebehandlung, wenn Sie mit einer nicht vorhandenen ID auf TODO zugreifen
Lassen Sie uns eine TODO-App in Java 5 erstellen. Schalten Sie die Anzeige von TODO um
Erstellen wir eine Taschenrechner-App mit Java ~ Erstellen Sie einen Anzeigebereich im Fenster
Bei Verwendung einer Liste in Java wird java.awt.List ausgegeben und ein Fehler tritt auf
Lassen Sie uns eine TODO-App in Java 4 erstellen. Implementierung der Buchungsfunktion
Sammeln von Clientinformationen, wenn in einer Webanwendung ein Fehler auftritt
Lassen Sie uns eine TODO-App in Java 6 erstellen. Implementierung der Suchfunktion
Lassen Sie uns eine TODO-App in Java 8 erstellen. Implementierung von Bearbeitungsfunktionen
Erstellen wir eine TODO-Anwendung mit Java 1 Kurze Erläuterung von MVC
Lassen Sie uns eine TODO-Anwendung mit Java 2 erstellen. Ich möchte eine Vorlage mit Spring Initializr erstellen und eine Hello-Welt erstellen
Ein Fehler tritt auf, wenn codedeploy-agent in Ubuntu Server 20.04 installiert ist
Erstellen Sie einen einfachen Webserver mit der Java-Standardbibliothek com.sun.net.httpserver
Erstellen wir eine TODO-App in Java 13 TODO-Formularvalidierung 1: Zeichenbegrenzung · Gradle-Update zur Verwendung von @Validated
Erstellen wir eine TODO-App mit Java 3 Speichern Sie temporäre Daten in MySQL-> Get all-> Display on top
Erstellen Sie eine TODO-App in Java 7 Create Header
Eine Erinnerung, wenn ein aapt.exe-Fehler auftritt
Erstellen wir eine TODO-App in Java 9 Erstellen einer TODO-Anzeige Sortieren nach Datum und Uhrzeit + Setzen Sie das Fälligkeitsdatum auf das aktuelle Datum
Beim Ausführen einer Funktion in PostgreSQL mit dem Parameter OUT von MyBatis auf CURSOR ist ein Fehler aufgetreten.
Senden Sie eine E-Mail, wenn ein Protokoll auf ERROR-Ebene mit SMTP Appender of Logback auftritt
Lassen Sie uns mit Javas Timer einen zeitgesteuerten Prozess erstellen! !!
Die Geschichte, wenn der Container nicht mit Docker-Compose gestartet wird und ein Fehler auftritt
Passen Sie die Anzeige an, wenn im Spring Boot ein Fehler wie 404 Not Found auftritt
Implementieren Sie Singleton mit Enum schnell in Java
Was ich beim Erstellen eines Servers in Java gelernt habe
Stellen Sie lokal entwickelte Java-Anwendungen mit Cloud Toolkit auf Alibaba Cloud ECS-Instanzen bereit
[Nicht gelöst] Eine Ausnahme tritt auf, wenn eine SSH-Verbindung mit JSch aus einer Java 6-App ausgeführt wird.
(Behoben) Bei Verwendung von Java 8 mit der neuesten Version (0.65.0) der Sprachunterstützung für Java (TM) von Red Hat von VS Code tritt ein Fehler auf.
Java learning_Behavior, wenn ein Feld mit demselben Namen und eine Methode mit demselben Namen in zwei Klassen in einer Vererbungsbeziehung vorhanden sind
Beheben Sie den CreateProcess-Fehler = 206, wenn Sie Java in einer Windows-Umgebung ausführen
Erstellen Sie einen SlackBot mit AWS Lambda & API Gateway in Java
Erstellen Sie eine Methode, um den Steuersatz in Java zurückzugeben
Zeigt einen detaillierten Fehler in Logger an, wenn Java auf dem Server ausgeführt wird
Informationen zum Verhalten beim Erstellen einer Dateizuordnung mit Java
[Java] So suchen Sie mit der Methode includes nach Werten in einem Array (oder einer Liste)