Tavaszi indítás: testreszabhatja az engedélycímke-hiba oldalt

1. Áttekintés

Ebben a cikkben megvizsgáljuk, hogyan kell tiltsa le és testre szabhatja az alapértelmezett hibaoldalt a Spring Boot alkalmazáshoz mivel a megfelelő hibakezelés a professzionalizmust és a minőségi munkát ábrázolja.

2. Az Whitelabel Error Page letiltása

Először nézzük meg, hogyan kapcsolhatjuk ki teljesen a fehér címke hiba oldalát a server.error.whitelabel.enabled tulajdonhoz hamis:

server.error.whitelabel.enabled = hamis

Ha ezt a bejegyzést hozzáadja az application.properties fájlhoz, letiltja a hibaoldalt, és egy tömör oldalt jelenít meg, amely az alapul szolgáló alkalmazás-tárolóból származik, például a Tomcat-ból.

Ugyanezt az eredményt érhetjük el a ErrorMvcAutoConfiguration bab. Ezt úgy tehetjük meg, hogy ezt a bejegyzést hozzáadjuk a tulajdonságfájlhoz:

spring.autoconfigure.exclude = org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfiguration #for Spring Boot 2.0 # spring.autoconfigure.exclude = org.springframework.boot.autoconfigure.web.servlet.error.Ero

Vagy hozzáadva ezt a kommentárt a fő osztályhoz:

@EnableAutoConfiguration (kizárva = {ErrorMvcAutoConfiguration.class})

A fent említett módszerek mindegyike letiltja a fehér címke hibás oldalát. Ez azt a kérdést hagyja bennünk, hogy akkor ki kezeli a hibát?

Nos, mint fent említettük, általában ez a mögöttes alkalmazás-tároló. Az a jó, hogy tovább testreszabhatjuk a dolgokat azáltal, hogy az összes alapértelmezett hiba helyett megjelenítjük az egyedi hibalehetőségeket - ez a következő szakasz középpontjában áll.

3. Egyéni hibalapok megjelenítése

Először létre kell hoznunk egy egyedi HTML hibalehetőséget.

Mentjük a fájlt error.html mivel használjuk Thymeleaf sablon motor:

Mérnökeink rajta vannak

Hazamenni

Ha menti ezt a fájlt források / sablonokkönyvtárba, automatikusan felveszi az alapértelmezett Spring Boot's BasicErrorController.

Erre van szükségünk az egyéni hibalehető oldal megjelenítéséhez. Némi stílussal most egy sokkal szebb megjelenésű hibaoldalunk lesz a felhasználóink ​​számára:

Pontosabbak lehetünk, ha a fájlt el akarjuk nevezni a kívánt HTTP állapotkóddal, pl. fájl mentése 404.html ban ben erőforrások / sablonok / hiba azt jelenti, hogy kifejezetten 404 hiba esetén fogják használni.

3.1. Egy egyedi ErrorController

Az eddigi korlátozás az, hogy nem tudunk egyéni logikát futtatni, amikor hibák fordulnak elő. Ennek eléréséhez létre kell hoznunk egy hibavezérlő babot, amely az alapértelmezettet helyettesíti.

Ezért, létre kell hoznunk egy osztályt, amely megvalósítja a ErrorController felület és felülírja annak getErrorPath () metódus az egyéni elérési út visszaadásához, amikor hiba történt.

A 2.3.x verziótól kezdve azonban a Spring Boot elavult ezt a módszert és a tulajdonságot server.error.path helyett inkább az egyéni elérési út megadásához kell használni.

De mivel ez még mindig része a ErrorController felületet, és nem lett teljesen eltávolítva, felül kell írnunk, különben a fordító panaszt fog tenni. A probléma kijátszása érdekében visszatérünk nulla mivel egyébként is figyelmen kívül hagyják:

@Controller public class MyErrorController implementálja a ErrorController {@RequestMapping ("/ error") public String handleError () {// valami hasonlót, mint a naplózás visszatér "error"; } @Orride public String getErrorPath () {return null; }}

A fenti részletben az osztályt is feljegyezzük @Vezérlő és hozzon létre egy térképet a tulajdonságként megadott útvonalhoz server.error.path:

server.error.path = / hiba

Így a vezérlő képes kezelni a /hiba pálya.

Ban,-ben handleError (), visszaküldjük a korábban létrehozott egyéni hiba oldalt. Ha most 404-es hibát váltunk ki, akkor az egyéni oldalunk jelenik meg.

Fokozzuk tovább a handleError () az egyes hibatípusokhoz tartozó konkrét hibaoldalak megjelenítése

Például szépen megtervezett oldalak lehetnek kifejezetten 404 és 500 hibatípusokhoz. Ezután a hiba HTTP állapotkódjával meghatározhatjuk a megjelenítésre alkalmas hibaoldalt:

@RequestMapping ("/ error") public String handleError (HttpServletRequest kérelem) {Object status = request.getAttribute (RequestDispatcher.ERROR_STATUS_CODE); if (status! = null) {Integer statusCode = Integer.valueOf (status.toString ()); if (statusCode == HttpStatus.NOT_FOUND.value ()) {return "hiba-404"; } else if (statusCode == HttpStatus.INTERNAL_SERVER_ERROR.value ()) {return "error-500"; }} return "error"; }

Ezután például egy 404-es hiba esetén meglátjuk a hiba-404.html oldal:

4. Következtetés

Ezekkel az információkkal mostantól elegánsabban kezelhetjük a hibákat, és esztétikus oldalt mutathatunk meg felhasználóinknak.

Mint mindig, a teljes forráskód elérhető a Githubon.