Jarné zavedenie: Prispôsobte si chybovú stránku Whitelabel

1. Prehľad

V tomto článku sa pozrieme na to, ako na to vypnúť a prispôsobiť predvolenú chybovú stránku pre aplikáciu Spring Boot pretože správne riešenie chýb vystihuje profesionalitu a kvalitnú prácu.

2. Zakázanie chybovej stránky Whitelabel

Najprv sa pozrime, ako môžeme úplne deaktivovať chybovú stránku bieleho štítku nastavením hodnoty server.error.whitelabel.enabled majetok do nepravda:

server.error.whitelabel.enabled = false

Pridaním tejto položky do súboru application.properties deaktivujete chybovú stránku a zobrazíte stručnú stránku, ktorá pochádza zo základného kontajnera aplikácie, napríklad Tomcat.

Rovnaký výsledok môžeme dosiahnuť vylúčením ErrorMvcAutoConfiguration fazuľa. Môžeme to urobiť pridaním tejto položky do súboru vlastností:

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

Alebo pridaním tejto anotácie do hlavnej triedy:

@EnableAutoConfiguration (vylúčiť = {ErrorMvcAutoConfiguration.class})

Všetky vyššie uvedené metódy zakážu chybovú stránku bieleho štítku. Ostáva nám teda otázka, kto potom v skutočnosti chybu spracuje?

Ako už bolo spomenuté vyššie, zvyčajne ide o základný kontajner aplikácie. Dobré je, že môžeme ďalej prispôsobovať veci tak, že namiesto všetkých predvolených nastavení zobrazujeme naše vlastné chybové stránky - na to sa zameriava nasledujúca časť.

3. Zobrazenie vlastných chybových stránok

Najskôr musíme vytvoriť vlastnú chybovú stránku HTML.

Uložíme súbor ako error.html keďže používame Thymeleaf motor šablón:

Naši inžinieri sú na tom

Choď domov

Ak tento súbor uložíme do zdroje / šablónyadresár, automaticky sa vyzdvihne predvolene Spring Boot BasicErrorController.

To je všetko, čo potrebujeme na zobrazenie našej vlastnej chybovej stránky. S niektorými štýlmi budeme mať teraz pre našich používateľov oveľa krajšiu chybovú stránku:

Môžeme byť konkrétnejší, keď súbor pomenujeme stavovým kódom HTTP, ktorý chceme použiť napr. ukladanie súboru ako 404.html v zdroje / šablóny / chyba znamená, že sa použije výslovne na chyby 404.

3.1. Zvyk ErrorController

Doteraz máme obmedzenie, že keď sa vyskytnú chyby, nemôžeme spustiť vlastnú logiku. Aby sme to dosiahli, musíme vytvoriť fazuľu kontrolóra chýb, ktorá nahradí predvolenú.

Pre to, musíme vytvoriť triedu, ktorá implementuje ErrorController rozhranie a prepísať jeho getErrorPath () metóda na vrátenie vlastnej cesty volania v prípade chyby.

Od verzie 2.3.x však Spring Boot zastarala túto metódu a túto vlastnosť server.error.path namiesto toho by sa malo použiť na určenie vlastnej cesty.

Ale keďže je to stále súčasť ErrorController rozhranie a nebolo úplne odstránené, budeme ho musieť prepísať, inak si bude kompilátor sťažovať. Aby sme tu obišli problém, vraciame sa nulový pretože to bude každopádne ignorované:

@Controller verejná trieda MyErrorController implementuje ErrorController {@RequestMapping ("/ error") public String handleError () {// niečo podobné ako prihlásenie return "error"; } @Override public String getErrorPath () {return null; }}

V úryvku vyššie tiež triedu anotujeme @ Kontrolór a vytvorte mapovanie pre cestu, ktorá je zadaná ako vlastnosť server.error.path:

server.error.path = / chyba

Týmto spôsobom môže ovládač vybavovať hovory na server /chyba cesta.

V handleError (), vrátime vlastnú chybovú stránku, ktorú sme vytvorili predtým. Ak teraz spustíme chybu 404, zobrazí sa naša vlastná stránka.

Poďme ďalej vylepšiť handleError () na zobrazenie konkrétnych chybových stránok pre rôzne typy chýb.

Napríklad môžeme mať pekne navrhnuté stránky špeciálne pre typy chýb 404 a 500. Potom môžeme pomocou stavového kódu HTTP chyby určiť vhodnú chybovú stránku na zobrazenie:

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

Potom napríklad uvidíme chybu 404 chyba-404.html stránka:

4. Záver

Vďaka týmto informáciám teraz môžeme elegantnejšie zvládnuť chyby a ukázať našim používateľom estetickú stránku.

Celý zdrojový kód je ako vždy k dispozícii na stránkach Github.


$config[zx-auto] not found$config[zx-overlay] not found