Chybové stránky Whitelabel vypadají neomalené a mohly by negativně ovlivnit uživatelský dojem. Naučte se vytvářet vlastní chybové stránky pomocí Thymeleaf.
V softwaru dochází k chybám. I ty nejlepší aplikace narazí v určitém okamžiku na chyby. Každá aplikace by proto měla mít nějaké mechanismy pro řešení chyb.
Spring Boot poskytuje výchozí chybovou stránku Whitelabel jako součást své automatické konfigurace pro zpracování chyb. Očekává se však, že vývojáři vytvoří vlastní chybovou stránku, která nahradí chybovou stránku Whitelabel. V tomto článku se dozvíte, jak přizpůsobit chybovou stránku pro vaše aplikace Spring Boot.
Chybová stránka Whitelabel Spring Boot
Když aplikace Spring Boot narazí na chybu, požádá o /error URL. Pokud na tomto místě není žádný pohled, zobrazí se chybová stránka Whitelabel:
Chybová stránka Whitelabel uvádí datum a čas chyby spolu s odpovídajícím časovým pásmem. Navíc označuje typ chyby a související kód. Uvádí to stránka Whitelabel toto je chyba 404 (Stránka nenalezena). Důvodem je, že ukázková aplikace nemá žádné mapování pro URL „/products“.
Většina informací uvedených na chybové stránce Whitelabel je převzata ze specifických atributů chyb. Chybové zobrazení Spring Boot má přístup k následujícím atributům chyb:
- chyba: důvod chyby.
- časové razítko: datum a čas, kdy k chybě došlo.
- postavení: kód chybového stavu.
- výjimka: název třídy kořenové výjimky (pokud je chyba výsledkem výjimky).
- zpráva: zpráva o výjimce (pokud je chyba výsledkem výjimky).
- chyby: Jakékoli výsledky z výjimky BindingResult (pokud je chyba výsledkem výjimky).
- stopa: trasování zásobníku výjimek (pokud je chyba výsledkem výjimky).
- cesta: Cesta URL, kde došlo k chybě.
Vytvoření chybové stránky pomocí Thymeleaf
Vaše aplikace Spring Boot by měla mít jednu chybovou stránku uloženou v „chybové“ šabloně. Rozšíření této šablony se bude lišit v závislosti na technologii šablony, kterou se rozhodnete použít. Pokud se například rozhodnete pro šablonu Java Server Pages (JSP), název souboru by měl být error.jsp.
Tato ukázková aplikace Spring Boot však používá šablonový engine Thymeleaf. Takže název šablony je error.html. Šablonu chyb byste měli důsledně umístit do šablona složky, pod zdroje adresář se všemi ostatními soubory šablon.
Soubor 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>
Přizpůsobená chybová stránka plní několik důležitých úkolů. Hlásí výskyt chyby. Následně se předvádí požadavek HTTP který spustil chybu. Kromě toho poskytuje uživateli stavový kód spojený s chybou. Pokud však uživatel nezná stavové kódy, stránka také vysvětluje význam kódu prostřednictvím atributu error.
Poslední řádek textu představuje uživateli zprávu v případě výjimky. Poté odkaz na konci umožňuje uživateli přejít zpět na domovskou stránku. The error.html soubor používá šablonu stylů CSS a dva obrázky k vytvoření následujícího zobrazení:
Udržujte svou chybovou stránku uživatelsky přívětivou
Primárním účelem chybové stránky je informovat uživatele, že došlo ke konkrétní chybě. Tato chybová stránka je však stále aspektem aplikace. Proto je zásadní zajistit, aby chybová stránka byla také uživatelsky přívětivá.
To bude znamenat zvolit použití atributů chyby, které chybu sdělují nekomplikovanějším způsobem. Můžete se tedy rozhodnout použít atribut path namísto atributu trace, který je mnohem složitější a obsahuje podrobnosti, které uživatel nepotřebuje znát.
Také nechcete náhodnému uživateli poskytovat nadměrné informace o vnitřním fungování vaší aplikace, protože by to mohlo ohrozit zabezpečení aplikace.