Wie, Wenn Sie Das Spring MVC-Problemobjekt Lösen Müssen?

Manchmal gibt Ihr System möglicherweise einen Fehler aus, der das Spring MVC-Fehlerobjekt angibt. Dieses Problem kann mehrere Ursachen haben.

Dieser Software vertrauen über 30 Millionen Benutzer weltweit. Probieren Sie es noch heute kostenlos aus.

Spring MVC bietet mehrere komplementäre Ansätze für unterschiedliche Manipulationen, aber wenn ich Spring MVC demonstriere, finde ich das meine Schüler oft verwirrt oder unangenehm.

Heute stelle ich Ihnen die verschiedenen verfügbaren Optionen vor. Unser Ziel ist es, eine explizite Auslassungsbehandlung in der Methodensteuerung so weit wie möglich zu vermeiden. Oft handelt es sich um ein bereichsübergreifendes Problem, das am besten auf individueller Basis in benutzerdefiniertem Code angegangen wird.

Ein Demoprogramm für einen mobilen Computer mit den folgenden Elementen finden Sie unter
http://github.com/paulc4/mvc-exceptions. Weitere Einzelheiten finden Sie im Beispielansatz unten.

HINWEIS. Die Demo-Apps wurden ziemlich überarbeitet und aktualisiert (April 2018). Time to use Spring Boot 2.0.1 ist eigentlich auch (hoffentlich) einfacher zu bedienen und auch verständlicher. Ich habe auch eine kurze Anzahl gebrochener Haken repariert (danke für den Kommentar, sorry, Kumpel vs. andere) ja, es hat lange gedauert).

Starten

Mit Spring Boot können Sie ein Spring-Projekt als Minimalkonfiguration installieren, und das Gerät wird höchstwahrscheinlich von Ihnen installiert, wenn Ihre neue Anwendung weniger als eine Anzahl von Jahren alt ist.

Spring MVC stellt standardmäßig keine Standard-Fehler-Fan-Website-Seite (Fallback) zur Verfügung. Die gebräuchlichste großartige Methode zum Festlegen des Standardfehlerberichts war schon immer Springs SimpleMappingExceptionResolver (eigentlich zusammen mit V1). Wir werden darauf später antworten.

Wenn Sie Spring starten, führen Sie unser eigenes Objekt aus, um die Zuordnung mit der Bezeichnung /error zu finden. Per Konvention wird eine URL-Zusammenfassung in /error mit dem booleschen Leerlauf abgeglichen und betrachtet die Erwähnung: gleicher error. In der Demo-Smartphone-App können Sie es in der Thymeleaf-Vorlage error.html noch einmal in biblischen Zeiten sehen. (Wenn eine JSP bevorzugt wird, wird sie abhängig von Ihrer InternalResourceViewResolver-Einstellung sicherlich die error.jsp zuordnen). Die spezifische Zuordnung hängt davon ab, was Ihr Unternehmen oder Spring Boot mit einem ViewResolver (falls vorhanden) konfiguriert hat.

Wenn Sie den Maps View-Resolver unter /error nicht finden können, erstellt Spring Boot einen eigenen Fallback-Fehlerbericht – normalerweise die sogenannte „Whitelabel-Fehlerseite“ ( minimale Seite). Track Record-Informationen und viele Fehlerdetails, diese Art von Übereinstimmung mit einer nicht erfassten Ausnahme). Die letzte Beispielanwendung, wenn Sie heute die Vorlage error.html in bspw. error2 umbenennen. Führen Sie dann html erneut aus, Clients werden sehen, dass es höchstwahrscheinlich verwendet wird.

Wenn Sie eine RESTful-Anfrage stellen (die HTTP-Anfrage gibt einen gewünschten Nicht-HTML-Antworttyp an), gibt Spring Boot eine JSON-Darstellung zu denselben Fehlerinformationen mit einer eingefügten funktionalen “Whitelabel”-Fehlerseite zurück.

$> curl -H "Akzeptiere: http://localhost:8080/no-such-page"timestamp": "2018-04-11T05:56:03 application/json".845+0000","status":404,"error":"Nicht gefunden","message":"Keine E-Mail verfügbar"," path":"/no such-page"

Spring Boot kann speziell eine für Container verfügbare Standardfehler-Website einrichten, die mit diesen
-Informationen in web.xml übereinstimmt (obwohl zu unterschiedlich abgeschlossen ). Ausnahmen, die außerhalb der digitalen Wände des Spring MVC-Frameworks geworfen werden, darunter von einem neuen Servlet-Reiniger, werden immer auf Ihrer aktuellen Fallback-Seite Spring Boot Slips gemeldet. Die Beispielanwendung enthält auch aussagekräftige Illustrationen.

Am Ende des Artikels finden Sie eine sehr detaillierte Diskussion der meisten Fehlerbehandlungsprogramme von Spring Boot.

spring mvc error object

Der Rest dieses Artikels gilt unabhängig davon, ob Sie Spring Boot ausnutzen oder nicht.

Ungeduldige REST-Softwareingenieure können den relevanten Abschnitt von benutzerdefinierten Antworten auf REST-Fehler überspringen. Sie sollten jedoch den gesamten Artikelinhalt am Ende lesen, da das meiste dahinter gleichermaßen für jede Hochgeschwindigkeits-Internetanwendung gilt, REST oder anderweitig.

Verwenden von HTTP-Statuscodes

Warum springspring boot für MVC?

Mit Spring Boot kann ein Spring-Projekt mit minimaler Konfiguration eingerichtet werden, und außerdem werden Sie es wahrscheinlich verwenden, wenn die Anwendung weniger als ein paar Jahre alt ist. Spring MVC bietet standardmäßig auch keine Standardfehler-Website (Fallback).

Normalerweise löst jede unbehandelte Ausnahme bei der Verarbeitung einer Webanforderung aus, dass der Server eine HTTP 500-Antwort zurückgibt. Jede Ausnahme, warum Sie selbst schreiben, kann jedoch leicht automatisch mit @ResponseStatus kommentiert werden (was praktisch die von der HTTP-Spezifikation erläuterten HTTP-Positionscodes unterstützt). Wenn eine mächtige auskommentierte Ausnahme dieser Regel von einer bestimmten Operatormethode ausgelöst und nicht anderweitig behandelt wird, wird diese besonders wichtige automatisch zurückgegeben. Eine unidirektionale HTTP-Antwort auf den angegebenen Namenscode.

spring mvc error object

 @ResponseStatus(value=HttpStatus.NOT_FOUND, Reason="No command type") // Öffentlich 404 Die Klasse OrderNotFoundException erweitert RuntimeException     // ... 
 @RequestMapping(value="/orders/id", method=GET) public String showOrder(@PathVariable("id") lange Modell-ID, Modell)     Bestellung Bestellung impliziert orderRepository.findOrderById(id);     if(order==null) bust new OrderNotFoundException(id);     model.addAttribute (Bestellung);     Geben Sie "Bestelldetails" zurück; 

Eine übliche HTTP 404-Antwort wird zurückgegeben, unabhängig davon, ob die von dieser Methode verarbeitete URL eine unbekannte Befehls-ID enthält.

Controller-basierte Ausnahmebehandlung

Verwendung von @ExceptionHandler

Sie sollten dem Controller auf jeden Fall viele andere Methoden (@ExceptionHandler) hinzufügen, damit Sie spezielle Ausnahmen von ausgelösten Propositions-Handler-Methoden (@RequestMapping) des einen Controllers behandeln . Diese Programme können:

  1. Behandeln Sie Ausnahmen ohne die Annotation @ResponseStatus (normalerweise von Ihnen selbst Ausnahmen, die Sie nicht geschrieben haben)
  2. Leiten Sie einen wichtigen bestimmten Benutzer zu einer bestimmten Fehleransicht weiter.
  3. Erstellen Sie eine vollständig benutzerdefinierte Fehlerantwort

Leiden Sie nicht länger unter PC-Fehlern.

Es ist kein Geheimnis, dass Computer mit der Zeit langsamer werden. Restoro behebt häufige Computerfehler und schützt Sie vor Dateiverlust, Malware und Hardwarefehlern. Diese Software kann alle Windows-bezogenen Probleme und Probleme einfach und schnell erkennen. Die Anwendung erkennt auch Dateien und Anwendungen, die häufig abstürzen, und ermöglicht es Ihnen, ihre Probleme mit einem einzigen Klick zu beheben. Ihr Computer wird sich schneller anfühlen als je zuvor! Klicken Sie jetzt hier, um die neueste Version unserer Software kostenlos herunterzuladen:

  • 1. Laden Sie die Reimage-Software herunter und installieren Sie sie
  • 2. Starten Sie die Software und wählen Sie Ihre Sprache aus
  • 3. Befolgen Sie die Anweisungen auf dem Bildschirm, um einen Scan Ihres PCs zu starten

  • @Controlleröffentliche Klasse ExceptionHandlingController {  // @RequestHandler-Methoden  ...   // Methoden zur Ausnahmebehandlung   // Vordefinierte Ausnahme von dieser wiederum Regel in HTTP-Statusrichtlinie konvertieren @ResponseStatus(Wert entspricht HttpStatus.CONFLICT,                  Grund = "Verletzung der Datenintegrität") // 409 @ExceptionHandler(DataIntegrityViolationException.class)  öffentlich Konflikt vermeiden()    // Nicht gebunden an      // Geben Sie den Namen zusammen mit der bestimmten wichtigen Ansicht an, die verwendet wird, damit Sie den Fehler anzeigen können:  @ExceptionHandler(SQLException.class,DataAccessException.class)  Lose String DatabaseError()    // Nichts zu tun. Gibt diese ID der logischen Darstellung auf der übergebenen Fehlerseite zurück    // Erkenner im Prozess viele Male auf organische Weise betrachten.    // Beachten Sie, welche Experten angeben, dass die Ausnahme für diese Ansicht tatsächlich NICHT verkauft wird (sie wird nicht ausgelöst    // in dem zum Modell), aber siehe "Extend ExceptionHandlerExceptionResolver"    // unter.    gibt "Datenbankfehler" zurück;   // Full Constraint - Installiere das Modell und benenne diese Ansicht selbst. Wo  // Ra Siehe Unterklassen von ExceptionHandlerExceptionResolver (siehe unten).  @ExceptionHandler(Exception.class)  public ModelAndView handleError(HttpServletRequest req, Exception ex) {    logger.error("Request: " + req.getRequestURL() + inches raise " Ex); + ModelAndView mav = ein weiteres ModelAndView();    mav.addObject("Ausnahme", zB);   Mav .addObject("url", req.getRequestURL());    myv.setViewName("Fehler");

    Reparieren Sie Ihren Computer auf einfache Weise. Reimage ist das beste Windows-Reparaturtool für Sie!

    About the Author

    You may also like these