Hoe Los Ik Het Spring MVC-foutobject Op?

Soms geeft ons systeem een ​​foutmelding met vermelding van de Spring MVC-foutartikelen. Er kunnen verschillende redenen zijn om dit probleem te hebben.

Deze software wordt vertrouwd door meer dan 30 miljoen gebruikers wereldwijd. Probeer het vandaag nog gratis uit.

Spring MVC biedt verschillende complementaire benaderingen voor totaal verschillende manipulaties, maar als ik Spring MVC lesgeef, vind ik mijn jongere generatie vaak verward of ongemakkelijk.

Vandaag laat ik je familie de verschillende beschikbare opties zien. Het is onze rol om te voorkomen dat expliciete uitzonderingen worden gehandhaafd in de methodecontroller wanneer dit waarschijnlijk is. Vaak is dit een transversaal gedoe dat het beste afzonderlijk kan worden aangepakt voor aangepaste code.

Voor een demo computerroutine die de volgende items laat zien, ga naar
http://github.com/paulc4/mvc-exceptions. Zie de voorbeeldtoepassing hieronder voor meer details.

OPMERKING. De demo-apps zijn aanzienlijk nieuw ontworpen en bijgewerkt (april 2018). Tijd bij gebruik Spring Boot 2.0.1 is plus (hopelijk) gemakkelijker te gebruiken en te achterhalen. Ik heb ook een paar niet meer werkende haken gerepareerd (bedankt voor de feedback, spijtige maat vs. anderen) ja, het heeft lang geduurd).

Lancering

Spring Boot verwelkomt u om een ​​Spring-show te installeren als een minimale configuratie-installatie, en zelfs het apparaat zal hoogstwaarschijnlijk continu door u worden geïnstalleerd als uw sollicitatie minder dan een paar oude is.

Spring MVC biedt geen mooie standaard (fallback) fout-fanpagina op het moment van standaard. De meest gebruikelijke manier om de standaardfoutpagina in te stellen is nu altijd Spring’s SimpleMappingExceptionResolver (zoals voor V1 eigenlijk). We zullen dit uniek later bespreken.

Als u Spring start, voert u het onderwerp uit om de toewijzing te vinden die vaak /error wordt genoemd. Volgens afspraak wordt een URL die eindigt op /error vergeleken met boolean die niets doet en kijkt naar de naam: exact dezelfde error. In de demo-app kan je hele familie het in spirituele tijden weer zien op het Thymeleaf error.html internet. (Als een JSP wordt gebruikt, zal het programma zeker verwijzen naar error.jsp in overeenstemming met uw InternalResourceViewResolver-instelling). De gerichte toewijzing hangt af van wat u of eventueel Spring Boot heeft geconfigureerd via ViewResolver (als uw bedrijf er een heeft).

Als u de Maps View-resolver niet kunt vinden zoals voor /error, maakt Spring Boot een extreem eigen fallback-foutrapport – de zogenaamde “Whitelabel-fout in beoordeling pagina” (minimale pagina). statusadvies en veel foutdetails, zoals een niet-gevangen uitzonderingsovereenkomst). De meest recente voorbeeldtoepassing, als u nu de sjabloon error.html opnieuw labelt naar, voor plaats, error2. Voer vervolgens html opnieuw uit, u zult waarschijnlijk zien dat het zeker door gebruik is.

Als u een REST-beleid maakt voor (het HTTP-verzoek specificeert elk niet-HTML-antwoordtype dat u wilt), retourneert Spring Boot een JSON-representatie van een bepaalde zelfde foutinformatie met een soort “whitelabel”-foutpagina ingevoegd.< /p>

$> curl -H "Accepteer: http://localhost:8080/no-such-page"timestamp": "2018-04-11T05:56:03 application/json".845+0000","status":404,"error":"Niet gevonden","message":"Geen tweets beschikbaar"," path":"/no such-page"

Spring Boot kan zelfs een standaardfoutpagina plaatsen die beschikbaar is voor containers die overeenkomen met
-informatie in web.xml (hoewel alleen geïmplementeerd te verschillend). Uitzonderingen die naar buiten worden gegooid in verband met het Spring MVC-framework, om de reden dat vanaf een nieuw servlet-filter altijd zijn gemeld op het fallback-profiel Spring Boot-fouten. De voorbeeldapplicatie bevat ook een uitstekende illustratie.

Zie het einde van het artikel voor een uitgebreide bespreking van de meeste foutafhandelingen van Spring Boot.

spring mvc error object

De rest van totdat dit artikel van toepassing is, of je Spring Boot gebruikt of niet.

Ongeduldige REST-ontwikkelaars kunnen de relevante sectie over aangepaste reacties op REST-fouten gemakkelijk overslaan. Gebruikers moeten echter het hele artikel lezen tot het einde, aangezien de meeste gedachten gelijkelijk van toepassing zijn op elke breedbandtool, REST of anderszins.

HTTP-statuscodes gebruiken

Waarom oefenspringveren voor MVC?

Met Spring Boot kan een Spring-project worden gekoppeld met minimale configuratie, en u zult het dan waarschijnlijk gebruiken als uw toepassing minder dan een paar dagen oud is. Spring MVC biedt standaard geen standaard (fallback) foutpagina.

Normaal gesproken vindt elke onverwerkte uitzondering plaats in het geval dat de verwerking van een webverzoek ervoor zorgt dat de server van een persoon een HTTP-antwoord van zevenhonderd retourneert. Elke uitzondering die uw organisatie zelf schrijft, kan echter gemakkelijk worden geannoteerd met @ResponseStatus (die realistisch gezien de HTTP-statuscode ondersteunt die wordt uitgelegd door de HTTP-specificatie). Als een krachtige uitzondering met commentaar normaal gesproken wordt gegenereerd door een specifiek controllerplatform en niet elders wordt afgehandeld, worden de belangrijkste personen automatisch geretourneerd. Een inkomend HTTP-antwoord op de opgegeven rangschikkingscode.

spring mvc storingsobject

 @ResponseStatus(value=HttpStatus.NOT_FOUND, Reason="Geen opdrachttype") // Public 404 class OrderNotFoundException breidt RuntimeException uit     // ... 
 @RequestMapping(value="/orders/id", method=GET) public String showOrder(@PathVariable("id") groot model id, model)     Order Order = orderRepository.findOrderById(id);     if(order==null) gooi absoluut nieuwe OrderNotFoundException(id);     model.addAttribute(Order);     Retour "Bestellingsdetails"; 

Een gebruikelijke HTTP 404-emotie wordt geretourneerd, ongeacht of de URL die door deze methode wordt verwerkt, een onbekende opdracht-ID bevat.

Afhandeling van uitzonderingen op basis van controller

@ExceptionHandler gebruiken

Je moet zeker extra typen (@ExceptionHandler) aan de controller toevoegen om speciale uitzonderingen van getriggerde gebruikersmethoden (@RequestMapping) van hetzelfde gecontroleerde . Deze programma’s kunnen:

  1. Behandel uitzonderingen zonder ooit de annotatie @ResponseStatus (meestal enkele degradaties die u niet hebt geschreven)
  2. Een gedetailleerde gebruiker omleiden naar een aparte foutweergave.
  3. Een volledig aangepaste foutreactie maken

Heb geen last meer van pc-fouten.

Het is geen geheim dat computers na verloop van tijd trager worden. Restoro repareert veelvoorkomende computerfouten en beschermt u tegen bestandsverlies, malware en hardwarestoringen. Deze software kan gemakkelijk en snel alle Windows-gerelateerde problemen en problemen herkennen. De applicatie detecteert ook bestanden en applicaties die vaak crashen, en stelt je in staat om hun problemen met een enkele klik op te lossen. Uw computer zal sneller aanvoelen dan ooit tevoren! Klik nu hier voor een gratis download van de nieuwste versie van onze software:

  • 1. Download en installeer de Reimage-software
  • 2. Start de software en selecteer uw taal
  • 3. Volg de instructies op het scherm om een ​​scan van uw pc te starten

  • @Controlleropenbare studiecursus ExceptionHandlingController {  // @RequestHandler-methoden  ...   // Methoden voor het afhandelen van uitzonderingen   // Converteer vooraf gedefinieerde uitzondering van deze handelswet naar HTTP-statusbeleid @ResponseStatus(waarde is gelijk aan HttpStatus.CONFLICT,                  Reden = "Schending van gegevensintegriteit") // 409 @ExceptionHandler(DataIntegrityViolationException.class)  publiek kloofconflict()    // Niet voorbestemd om      // Geef de naam op van deze specifieke belangrijke weergave die wordt gebruikt om de fout op video weer te geven:  @ExceptionHandler(SQLException.class,DataAccessException.class)  gemiddelde man of vrouw string DatabaseError()    // Niets te doen. Retourneert de ID van de logische representatie van die foutpagina die is doorgegeven    // kijk op de normale manier te vaak naar herkenners.    // Merk op dat onze eigen uitzondering inderdaad NIET beschikbaar is in deze weergave (het zal niet bijzonder worden gegooid .)    // naar een deel van het model), maar zie "Extend ExceptionHandlerExceptionResolver"    // onderstaand.    geeft "databasefout" terug;   // Volledige beperking - stel het model in en geef het zelf een naam. Waar  // Ra Zie subklassen van ExceptionHandlerExceptionResolver (zie hieronder).  @ExceptionHandler(Uitzondering.class)  public ModelAndView handleError (HttpServletRequest req, Exception ex) {    logger.error ("Request: " + req.getRequestURL() + inches wide raise " Ex); + ModelAndView mav = een andere ModelAndView();    mav.addObject("Uitzondering", ex);   Mav .addObject("url", req.getRequestURL());    myv.setViewName("Fout");

    Repareer uw computer op de gemakkelijke manier. Reimage is de beste Windows-reparatietool voor jou!

    About the Author

    You may also like these