Proljetno pokretanje: prilagodite stranicu s pogreškom Whitelabel

1. Pregled

U ovom ćemo članku pogledati kako onemogućite i prilagodite zadanu stranicu pogreške za aplikaciju Spring Boot jer pravilno postupanje s pogreškama oslikava profesionalnost i kvalitetan rad.

2. Onemogućavanje stranice s pogreškom Whitelabel

Prvo, pogledajmo kako možemo potpuno onemogućiti stranicu s pogreškama s bijelom etiketom postavljanjem server.error.whitelabel.enabled svojstvo da lažno:

server.error.whitelabel.enabled = netačno

Dodavanjem ovog unosa u datoteku application.properties onemogućit će stranicu pogreške i prikazati sažetu stranicu koja potječe iz temeljnog spremnika aplikacije, npr. Tomcat.

Isti rezultat možemo postići izuzećem ErrorMvcAutoConfiguration grah. To možemo učiniti dodavanjem ovog unosa u datoteku svojstava:

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

Ili dodavanjem ove napomene glavnoj klasi:

@EnableAutoConfiguration (izuzeti = {ErrorMvcAutoConfiguration.class})

Sve gore spomenute metode onemogućit će stranicu pogreške s bijelom etiketom. To nas ostavlja pitanje tko onda zapravo rješava pogrešku?

Pa, kao što je gore spomenuto, to je obično temeljni spremnik aplikacije. Dobra stvar je što stvari možemo dodatno prilagoditi prikazivanjem stranica s prilagođenim pogreškama umjesto svih zadanih postavki - to je fokus sljedećeg odjeljka.

3. Prikaz prilagođenih stranica s pogreškama

Prvo moramo stvoriti prilagođenu stranicu s pogreškama u HTML-u.

Datoteku ćemo spremiti kao pogreška.html otkad koristimo Majčina dušica mehanizam predloška:

Naši inženjeri su na tome

Idi kući

Ako spremimo ovu datoteku u resursi / predlošciimenik, automatski će se podići prema zadanim Spring Boot-ima BasicErrorController.

To je sve što nam treba za prikaz naše stranice prilagođene pogreške. Uz malo stylinga, sada ćemo za naše korisnike imati puno ljepšu stranicu s pogreškama:

Možemo biti precizniji imenovanjem datoteke s HTTP statusnim kodom za koji želimo da se koristi, npr. spremanje datoteke kao 404.html u resursi / predlošci / pogreška znači da će se eksplicitno koristiti za 404 pogreške.

3.1. Običaj ErrorController

Zasad je ograničenje da ne možemo pokretati prilagođenu logiku kada se pojave pogreške. Da bismo to postigli, moramo stvoriti grah kontrolera pogrešaka koji će zamijeniti zadani.

Za ovo, moramo stvoriti klasu koja implementira ErrorController sučelje i nadjačati svoje getErrorPath () metoda za vraćanje prilagođene staze za poziv kada se dogodila pogreška.

Međutim, počevši od verzije 2.3.x, Spring Boot zastario je ovu metodu i svojstvo server.error.path umjesto toga treba koristiti za specificiranje prilagođene staze.

Ali budući da je još uvijek dio ErrorController sučelje i nije u potpunosti uklonjen, morat ćemo ga poništiti, inače će se kompajler žaliti. Da bismo ovdje zaobišli problem, vraćamo se null kao što će se ionako ignorirati:

@Controller javna klasa MyErrorController implementira ErrorController {@RequestMapping ("/ error") javni niz handleError () {// učini nešto poput prijavljivanja return "error"; } @Override javni niz getErrorPath () {return null; }}

U gornjem isječku također bilježimo razred s @Controller i stvorite mapiranje za stazu koja je navedena kao svojstvo server.error.path:

server.error.path = / pogreška

Na ovaj način kontroler može obrađivati ​​pozive na / pogreška staza.

U handleError (), vraćamo stranicu s prilagođenom pogreškom koju smo ranije stvorili. Ako sada pokrenemo pogrešku 404, prikazat će se naša prilagođena stranica.

Dalje poboljšajmo handleError () za prikaz specifičnih stranica pogrešaka za različite vrste pogrešaka.

Na primjer, možemo imati lijepo dizajnirane stranice posebno za vrste pogrešaka 404 i 500. Tada možemo pomoću HTTP statusnog koda pogreške odrediti prikladnu stranicu pogreške za prikaz:

@RequestMapping ("/ error") javni niz handleError (HttpServletRequest zahtjev) {Status objekta = request.getAttribute (RequestDispatcher.ERROR_STATUS_CODE); if (status! = null) {Integer statusCode = Integer.valueOf (status.toString ()); if (statusCode == HttpStatus.NOT_FOUND.value ()) {return "error-404"; } else if (statusCode == HttpStatus.INTERNAL_SERVER_ERROR.value ()) {return "error-500"; }} return "pogreška"; }

Zatim ćemo, na primjer, za pogrešku 404, vidjeti pogreška-404.html stranica:

4. Zaključak

S ovim informacijama možemo sada elegantnije rješavati pogreške i korisnicima pokazati estetsku stranicu.

Kao i uvijek, cjeloviti izvorni kod dostupan je na Githubu.