Vlastné chybové stránky s jarným MVC

1. Prehľad

Bežnou požiadavkou v každej webovej aplikácii sú prispôsobené chybové stránky.

Predpokladajme napríklad, že máte spustenú aplikáciu Vanilla Spring MVC nad Tomcatom. Používateľ zadá do svojho prehliadača neplatnú adresu URL a zobrazí sa mu nie tak užívateľsky prívetivé modro-biele trasovanie zásobníka - nie ideálne.

V tomto tutoriáli nastavíme prispôsobené chybové stránky pre niekoľko chybových kódov HTTP.

Pracovným predpokladom je, že čitateľovi práca s Spring MVC celkom vyhovuje; ak nie, je to skvelý spôsob, ako začať.

Tento článok sa zameriava na jarné MVC. Náš článok Prispôsobiť chybovú stránku Whitelabel popisuje, ako vytvoriť vlastnú chybovú stránku v Spring Boot.

2. Jednoduché kroky

Začnime s jednoduchými krokmi, ktoré tu budeme nasledovať:

  1. Zadajte jednu adresu URL / chyby v web.xml ktorá sa mapuje na metódu, ktorá by zvládla chybu vždy, keď sa chyba vygeneruje
  2. Vytvorte ovládač s názvom ErrorController s mapovaním / chyby
  3. Zistite kód chyby HTTP za behu a zobrazte správu podľa kódu chyby HTTP. Napríklad, ak sa vygeneruje chyba 404, mal by sa používateľovi zobraziť správa ako „Zdroj sa nenašiel“, zatiaľ čo pre chybu 500 by mal užívateľ vidieť niečo na riadkoch 'Prepáč! Na našom konci bola vygenerovaná interná chyba servera. “

3. The web.xml

Začíname pridaním nasledujúcich riadkov do nášho web.xml:

 / chyby 

Upozorňujeme, že táto funkcia je k dispozícii iba vo verziách servletov vyšších ako 3.0.

Akákoľvek chyba vygenerovaná v aplikácii je spojená s chybovým kódom HTTP. Predpokladajme napríklad, že používateľ zadá adresu URL /neplatná URL adresa do prehliadača, ale nič také RequestMapping bol definovaný vo vnútri jari. Potom kód HTTP 404 vygenerovaný základným webovým serverom. Riadky, ktoré sme práve pridali do našich web.xml povie Springovi, aby vykonal logiku napísanú metódou, ktorá je namapovaná na adresu URL / chyby.

Krátka poznámka tu - zodpovedajúca konfigurácia servletu Java bohužiaľ nemá API na nastavenie chybovej stránky - takže v tomto prípade vlastne potrebujeme web.xml.

4. Prevádzkovateľ

Pohybom ďalej teraz tvoríme svoje ErrorController. Vytvoríme jednu zjednocujúcu metódu, ktorá zachytí chybu a zobrazí chybovú stránku:

@Controller verejná trieda ErrorController {@RequestMapping (value = "errors", method = RequestMethod.GET) public ModelAndView renderErrorPage (HttpServletRequest httpRequest) {ModelAndView errorPage = nový ModelAndView ("errorPage"); Chyba reťazca Msg = ""; int httpErrorCode = getErrorCode (httpRequest); switch (httpErrorCode) {case 400: {errorMsg = "Http kód chyby: 400. Zlá požiadavka"; prestávka; } prípad 401: {errorMsg = "Http chybový kód: 401. neautorizované"; prestávka; } prípad 404: {errorMsg = "Http kód chyby: 404. Zdroj sa nenašiel"; prestávka; } prípad 500: {errorMsg = "Http kód chyby: 500. Interná chyba servera"; prestávka; }} errorPage.addObject ("errorMsg", errorMsg); return errorPage; } private int getErrorCode (HttpServletRequest httpRequest) {return (Integer) httpRequest .getAttribute ("javax.servlet.error.status_code"); }} 

5. Klientske rozhranie

Na účely demonštrácie bude naša chybová stránka veľmi jednoduchá a kompaktná. Táto stránka bude obsahovať iba správu zobrazenú na bielej obrazovke. Vytvor jsp súbor s názvom errorPage.jsp:

    Domov 

6. Testovanie

Budeme simulovať dve z najbežnejších chýb, ktoré sa vyskytujú v ktorejkoľvek aplikácii: chyba HTTP 404 a chyba HTTP 500.

Spustite server a pokračujte ďalej do localhost: 8080 / spring-mvc-xml / invalidUrl.Pretože táto adresa URL neexistuje, očakávame, že sa nám zobrazí naša chybová stránka so správou „Kód chyby HTTP: 404. Zdroj sa nenašiel '.

Pozrime sa, čo sa stane, keď jedna z metód handlera hodí a NullPointerException. Nasledujúcu metódu pridávame do ErrorController:

@RequestMapping (value = "500Error", method = RequestMethod.GET) public void throwRuntimeException () {throw new NullPointerException ("Throwing a null pointer exception"); }

Choď k localhost: 8080 / spring-mvc-xml / 500 Chyba. Mali by ste vidieť bielu obrazovku so správou „Http Error Code: 500. Internal Server Error“.

7. Záver

Videli sme, ako nastaviť chybové stránky pre rôzne HTTP kódy pomocou Spring MVC. Vytvorili sme jednu chybovú stránku, kde sa chybové hlásenie zobrazuje dynamicky podľa chybového kódu HTTP.


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