Jak Rozwiązać Obiekt Błędu Spring MVC?

Czasami Twój kurs może zgłosić błąd stwierdzający obiekt błędu Spring MVC. Istnieje kilka przyczyn tego problemu.

To oprogramowanie cieszy się zaufaniem ponad 30 milionów użytkowników na całym świecie. Wypróbuj za darmo już dziś.

Spring MVC oferuje wiele komplementarnych podejść do różnych manipulacji, pamiętaj jednak, że kiedy uczę Spring MVC, często uważam, że moi uczniowie są zdezorientowani i/lub czują się niekomfortowo.

Dzisiaj pokażę Ci zupełnie inne dostępne opcje. Naszym celem jest uniknięcie jawnej obsługi wyjątków w bieżącym kontrolerze metod, gdy tylko jest to możliwe. Często a jest problemem przekrojowym, który zawsze najlepiej rozwiązać osobno w kodzie nawyku.

Aby zapoznać się z demonstracyjnym programem komputerowym pokazującym większość następujących elementów, zobacz
http://github.com/paulc4/mvc-exceptions. Zobacz przykładową aplikację poniżej, aby uzyskać więcej informacji.

UWAGA. Aplikacje demonstracyjne zostały znacząco przeprojektowane i zreorganizowane (kwiecień 2018). Czas na użycie Spring Boot 2.0.1 jest również (miejmy nadzieję) łatwy w użyciu i zrozumieniu. Właściwie naprawiłem kilka zepsutych pinastre (dzięki za opinie, przepraszam kolego przeciwko .. innym) tak, zajęło to nieskończony czas).

Uruchom

Spring Boot umożliwia zainstalowanie projektu Spring jako fantastycznej instalacji z minimalną konfiguracją, a produkt najprawdopodobniej zostanie zainstalowany, jeśli Twoja aplikacja ma mniej niż kilka lat.

Spring MVC domyślnie nie udostępnia strony fanowskiej z błędami rozszerzenia (awarii). Najpopularniejszym sposobem ustawienia zwykle domyślnej strony błędu był zawsze SimpleMappingExceptionResolver Springa (w rzeczywistości od wersji V1). Omówimy to później.

Kiedy uruchomić Springa, uruchom obiekt, aby sprawdzić mapowanie o nazwie /error. Poprzez spotkanie, adres URL kończący się na /error może być dopasowany do logicznego i wizualnego odwołania pod nazwą: ten sam błąd. W aplikacji demonstracyjnej możesz rzucić okiem na to ponownie w czasach biblijnych, zawsze na szablonie Thymeleaf error.html. (Jeśli używany jest dobry, solidny JSP, z pewnością zostanie on odwzorowany na error.jsp w zależności od ustawienia InternalResourceViewResolver Twojej firmy). Konkretne mapowanie może z pewnością zależeć od tego, co Ty lub Spring Boot skonfigurowałeś za pomocą ViewResolver (jeśli taki posiadasz).

Jeśli nie możesz znaleźć programu rozwiązywania problemów w widoku Maps dla /error, Spring Boot tworzy własną skargę dotyczącą błędu zastępczego — tak zwaną „stronę błędnego wyboru białej etykiety” (minimalna strona). informacje o stanie i szeroki zakres szczegółów błędów, takich jak niezłapane dopasowanie wyjątku). Ostatnie przykładowe programy, jeśli teraz zmienisz nazwę konkretnego szablonu error.html na, na przykład, error2. Następnie uruchom ponownie html, zobaczysz, że eksperci twierdzą, że jest on zdecydowanie używany.

Jeśli naprawdę wykonasz żądanie RESTful (żądanie HTTP określa żądaną odpowiedź inną niż HTML), Spring Boot zwraca swoją reprezentację JSON faktycznych informacji o błędzie z wstawioną witryną internetową z błędem „whitelabel”.

$> curl -H "Zaakceptuj: http://localhost:8080/no-such-page"timestamp": "2018-04-11T05:56:03 application/json".845+0000","status":404,"error":"Nie znaleziono","message":"Brak dostępnych wiadomości"," path":"/brak takiej strony"

Spring Boot może nawet ustawić własną domyślną stronę błędu dostępną dla pól, która pasuje do informacji
w pliku web.xml (chociaż zaimplementowane zbyt różne). Wyjątki zgłoszone poza platformą Spring MVC, na przykład z jednego konkretnego nowego filtra serwletów, są zawsze zgłaszane na stronie awaryjnej błędów Spring Boot. Przykładowa aplikacja zawiera również ilustrację.

Zobacz koniec połączony z artykułem, aby uzyskać bardziej szczegółowe omówienie większości programów obsługi błędów Spring Boot.

spring mvc error object

Reszta tego artykułu będzie miała zastosowanie niezależnie od tego, czy używasz Spring Boot, czy nie.

Niecierpliwi programiści REST mogą pominąć naszą odpowiednią sekcję dotyczącą niestandardowych odpowiedzi na błędy REST. Jednak powinieneś odkryć cały artykuł na końcu, ponieważ większość z nich dotyczy zarówno dowolnej aplikacji szerokopasmowej, REST, jak i może być inaczej.

Korzystanie z kodów stanu HTTP

Dlaczego używać wiosennego śniegu do MVC?

Dzięki Spring Boot projekt Spring można skonfigurować za pomocą minimalnej konfiguracji i prawdopodobnie będziesz na nim polegać, jeśli Twoja aplikacja ma mniej pieniędzy niż kilka lat. Spring MVC domyślnie nie udostępnia strony błędu braku płatności (awaryjnej).

Normalnie każdy istniejący nieobsłużony wyjątek występuje, gdy przetwarzanie żądania internetowego powoduje, że serwer zwraca odpowiedź HTTP 500. Jednak każdy wyjątek, który piszesz samodzielnie, może być łatwo opatrzony adnotacją, która ma @StatusOdpowiedzi< /code> (co praktycznie pomaga wyjaśnić kody stanu HTTP ze względu na specyfikację HTTP). Jeśli dynamicznie zakomentowany wyjątek zostanie zgłoszony przez konkretną metodę kontrolera i faktycznie obsłużony w innym miejscu, najważniejszy zostanie automatycznie zwrócony. Przychodząca odpowiedź HTTP na określony kod stanu.

obiekt błędu spring mvc

 @ResponseStatus(value=HttpStatus.NOT_FOUND, Reason="Brak typu polecenia") // Public 404 typ OrderNotFoundException rozszerza RuntimeException     //... 
 @RequestMapping(value="/orders/id", method=GET) ogół społeczeństwa String showOrder(@PathVariable("id") długi identyfikator modelu, model)     Order Order = orderRepository.findOrderById(id);     if(order==null) wyrzuć nowe OrderNotFoundException(id);     model.addAttribute(Zamówienie);     Zwróć "Szczegóły zamówienia"; 

Zwykła odpowiedź HTTP 404 zostanie zwrócona niezależnie od tego, czy adres URL przetworzony tą metodą zawiera nieznany identyfikator polecenia.

Obsługa wyjątków na podstawie kontrolera

Korzystanie z @ExceptionHandler

Naprawdę zdecydowanie powinieneś dodać dodatkowe metody (@ExceptionHandler), aby kontroler pomyślnie obsługiwał specjalne wykluczenia z wyzwalanych technik obsługi żądań (@RequestMapping) tego samego kontrolera . Te programy mogą:

  1. Obsługuj wyjątki bez tej konkretnej adnotacji @ResponseStatus (zwykle pojedyncze wyjątki, których nie napisali)
  2. Przekieruj konkretnego użytkownika do oddzielnego widoku błędu.
  3. Utwórz prawdziwie niestandardową odpowiedź na błąd

Nie cierpią już z powodu błędów komputera.

Nie jest tajemnicą, że komputery z czasem zwalniają. Restoro naprawi typowe błędy komputera, ochroni Cię przed utratą plików, złośliwym oprogramowaniem i awarią sprzętu. To oprogramowanie może łatwo i szybko rozpoznać wszelkie problemy i problemy związane z systemem Windows. Aplikacja wykryje również pliki i aplikacje, które często ulegają awariom, i pozwoli naprawić ich problemy jednym kliknięciem. Twój komputer będzie działał szybciej niż kiedykolwiek! Kliknij tutaj, aby bezpłatnie pobrać najnowszą wersję naszego oprogramowania:

  • 1. Pobierz i zainstaluj oprogramowanie Reimage
  • 2. Uruchom oprogramowanie i wybierz swój język
  • 3. Postępuj zgodnie z instrukcjami wyświetlanymi na ekranie, aby rozpocząć skanowanie komputera

  • @Kontrolerpublic class ExceptionHandlingController {  // @Metody obsługi żądania  ...   // Metody adresowania wyjątków   // Konwertuj z góry określony wyjątek od tej reguły na politykę stanu HTTP @ResponseStatus(wartość = HttpStatus.CONFLICT,                  Powód jest równoznaczny z „naruszeniem integralności danych”) // 409 @ExceptionHandler(DataIntegrityViolationException.class)  publiczny pusty konflikt ()    // Nie jest zobowiązany do      // Podaj nazwę konkretnego odpowiedniego widoku używanego do wyświetlania każdego z naszych błędów:  @ExceptionHandler(SQLException.class,DataAccessException.class)  ciąg publiczny Błąd bazy danych()    // Nic, co zrobi. Zwraca identyfikator swojej logicznej reprezentacji przepuszczonej strony na Facebooku    // zwracaj uwagę na aparaty rozpoznawania zbyt wiele razy w normalny sposób.    // Zauważ, że wyjątki rzeczywiście NIE są dostępne dla tej eksploracji (nie zostaną rzucone    // do modelu), ale zobacz także "Extend ExceptionHandlerExceptionResolver"    // poniżej.    zwraca "błąd bazy danych";   // Pełne ograniczenie — skonfiguruj wersję i samodzielnie nazwij widok. Gdzie  // Ra Zobacz podklasy razem z ExceptionHandlerExceptionResolver (patrz poniżej).  @ExceptionHandler(Exception.class)  ogólne public ModelAndView handleError(HttpServletRequest żądanie, wyjątek ex) {    logger.error("Żądanie: rrn . + req.getRequestURL() + podbicie ins w Ex); + ModelAndView mav = dużo więcej ModelAndView();    mav.addObject("Wyjątek", ex);   Mav .addObject("url", zad.getRequestURL());    myv.setViewName("Błąd");

    Napraw swój komputer w łatwy sposób. Reimage to najlepsze narzędzie do naprawy systemu Windows dla Ciebie!

    About the Author

    You may also like these