Chybové stránky s bielym štítkom vyzerajú nevýrazne a môžu negatívne ovplyvniť dojem používateľa. Zistite, ako vytvoriť vlastné chybové stránky pomocou Thymeleaf.
Softvér má chyby. Dokonca aj tie najlepšie aplikácie narazia na chyby v určitom okamihu. Preto by každá aplikácia mala mať zavedené nejaké mechanizmy na odstraňovanie chýb.
Spring Boot poskytuje predvolenú chybovú stránku Whitelabel ako súčasť svojej automatickej konfigurácie na spracovanie chýb. Napriek tomu sa očakáva, že vývojári vytvoria vlastnú chybovú stránku, ktorá nahradí chybovú stránku Whitelabel. V tomto článku sa dozviete, ako prispôsobiť chybovú stránku pre aplikácie Spring Boot.
Chybová stránka Whitelabel Spring Boot
Keď aplikácia Spring Boot zaznamená chybu, požiada o /error URL. Ak na tomto mieste nie je žiadne zobrazenie, zobrazí sa chybová stránka Whitelabel:
Chybová stránka Whitelabel uvádza dátum a čas chyby spolu s príslušným časovým pásmom. Okrem toho označuje typ chyby a jej priradený kód. Na stránke Whitelabel sa to uvádza
toto je chyba 404 (stránka nenájdená). Je to preto, že vzorová aplikácia nemá žiadne mapovanie pre adresu URL „/products“.Väčšina informácií prezentovaných na chybovej stránke Whitelabel je prevzatá zo špecifických atribútov chýb. Chybové zobrazenie Spring Boot má prístup k nasledujúcim atribútom chýb:
- chyba: dôvod chyby.
- časová značka: dátum a čas výskytu chyby.
- postavenie: kód stavu chyby.
- výnimkou: názov triedy koreňovej výnimky (ak je chyba výsledkom výnimky).
- správu: správa o výnimke (ak je chyba výsledkom výnimky).
- chyby: Akékoľvek výsledky z výnimky BindingResult (ak je chyba výsledkom výnimky).
- stopa: sledovanie zásobníka výnimiek (ak je chyba výsledkom výnimky).
- cesta: Cesta URL, kde sa chyba vyskytuje.
Vytvorenie chybovej stránky pomocou Thymeleaf
Vaša aplikácia Spring Boot by mala mať jednu chybovú stránku uloženú v „chybovej“ šablóne. Rozšírenie tejto šablóny sa bude líšiť v závislosti od technológie šablóny, ktorú sa rozhodnete použiť. Ak sa napríklad rozhodnete pre šablónu Java Server Pages (JSP), názov súboru by mal byť error.jsp.
Táto vzorová aplikácia Spring Boot však používa nástroj šablón Thymeleaf. Takže názov šablóny je error.html. Svoju chybovú šablónu by ste mali dôsledne umiestňovať do šablóna priečinok, pod zdrojov adresár so všetkými ostatnými súbormi šablón.
Súbor error.html
html>
<htmlxmlns: th="http://www.thymeleaf.org">
<head>
<title> Errortitle>
<linkrel="stylesheet"th: href="@{/css/style.css}"/>
head>
<bodyth: style="'background: url(/images/background1.jpg)
no-repeat center center fixed;'">
<divclass="container" >
<h1>An error has occurred...h1>
<imgth: src="@{/images/error-icon.png}"
width="100px" height="100px" />
<p>There seems to be a problem with the page you requested
(<spanth: text="${path}">span>).p>
<pth: text="${'The status code is ' + status
+ ', which means that the page was ' + error + '.'}">p>
<pth: text="${'Further details: ' + message + '.'}">p>
<aclass="btn"href="/home">Back to homea>
div>
body>
html>
Prispôsobená chybová stránka vykonáva niekoľko dôležitých úloh. Vyhlási výskyt chyby. Následne sa predvádza žiadosť HTTP ktorý spustil chybu. Okrem toho poskytuje používateľovi stavový kód spojený s chybou. Ak však používateľ nepozná stavové kódy, stránka tiež vysvetľuje význam kódu prostredníctvom atribútu error.
Posledný riadok textu predstavuje používateľovi správu v prípade výnimky. Potom odkaz na konci umožňuje používateľovi prejsť späť na domovskú stránku. The error.html súbor používa šablónu so štýlmi CSS a dva obrázky na vytvorenie nasledujúceho zobrazenia:
Udržujte svoju chybovú stránku užívateľsky prívetivou
Primárnym účelom chybovej stránky je informovať používateľa, že sa vyskytla konkrétna chyba. Táto chybová stránka je však stále aspektom aplikácie. Preto je kľúčové zabezpečiť, aby bola chybová stránka tiež užívateľsky prívetivá.
To bude znamenať zvoliť si používanie atribútov chýb, ktoré oznamujú chybu nekomplikovanejším spôsobom. Môžete sa teda rozhodnúť použiť atribút cesty namiesto atribútu sledovania, ktorý je oveľa zložitejší a obsahuje podrobnosti, ktoré používateľ nepotrebuje vedieť.
Tiež nechcete poskytovať náhodnému používateľovi nadmerné informácie o vnútornom fungovaní vašej aplikácie, pretože by to mohlo ohroziť bezpečnosť aplikácie.