Heim Java javaLernprogramm Ausnahmeregelung für Spring Boot 1.5.4

Ausnahmeregelung für Spring Boot 1.5.4

Jun 26, 2017 am 11:35 AM
boot spring 异常 控制

Spring Boot hat eine einheitliche Ausnahmebehandlung implementiert

1.1 Statische Seite

Muss im Ordner resources/static/error konfiguriert werden, benannt nach dem Fehlercode

Das Folgende ist der Inhalt des 404 Fehlerseite beim Zugriff Wenn kein Link vorhanden ist, suchen Sie diese Seite

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Not Found</title></head><body><h1>Sorry, Not Found</h1><p>status code is 404</p></body></html>
Nach dem Login kopieren
Anzeigeeffekt

1.2 Dynamische Vorlagenseite (der Speicherort der Seite kann nicht geändert werden und es gibt nur zwei Namen: 4xx und 5xx)

Beispiel ( 5xx.ftl)

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Error</title></head><body><h1>server error</h1><p><div style="color:red;font-size:large">error code: ${status}-${error}</div><div style="color:red;font-size:medium">error msg: ${exception!},${message!}</div><div><div id="trace" style="color:grey;font-size:small;display: none;border: 1px solid black;padding: 10px;">${trace!}</div></div></p></body></html>
Nach dem Login kopieren

Beabsichtigter Zugriff auf eine Anfrage, die eine Ausnahme auslöst (/test2/throwex)

@Controller
@RequestMapping("/test2")public class Test2 {

    @RequestMapping("")public String index(){return "test";
    }

    @RequestMapping("/throwex")
    @ResponseBodypublic String throwex(){int a = 3;int b=0;return String.valueOf(a/b);
    }
}
Nach dem Login kopieren
Seiteneffekt

Wenn Sie Ajax verwenden, um auf diese Fehleranforderung zuzugreifen, wird die durch JSON dargestellte Fehlermeldung zurückgegeben

Demoseite ( /test2 -> test.ftl)

<!DOCTYPE html><html><head><meta charset="UTF-8" /><title>test</title><script type="text/javascript" src="/js/jquery-2.0.3.min.js?1.1.11"></script></head><body><h1>test page</h1><div><button onclick="doAjax();">请求异常测试</button><div id="msg"></div><textarea id="errorMsg" style="color:red;width: 80%;height:300px"></textarea></div><script type="text/javascript">var doAjax = function () {
        $.ajax({
            url:'/test2/throwex',
            async:true,
            type:'GET',
            data:{},
            dataType:'json',
            success:function (data) {
                $('#msg').text(data);
            },
            error: function(xhr, textStatus, errorThrown) {//                alert(XMLHttpRequest.status);//                alert(XMLHttpRequest.readyState);//                alert(textStatus);                $('#errorMsg').text(xhr.responseText);
            }
        }); 
    };</script></body></html>
Nach dem Login kopieren
Besuchen Sie die Testseite, klicken Sie auf die Schaltfläche und überprüfen Sie den Effekt wie folgt:

Hier sind die Fehler beim Zugriff über einen Webbrowser und Ajax. Die Schnittstelle erhält unterschiedliche Ergebnisse, eine gibt eine Fehlerseite aus und die andere gibt einen Fehler-JSON aus, der durch den Empfangstyp der Anfrage bestimmt wird.

Accept:text/html -> Fehlerseite zurückgeben

Accept:application/json, text/javascript -> Fehlerseite zurückgeben
Die spezifische Implementierung kann die BasicErrorController-Klasse anzeigen

2. Passen Sie die Zuordnung von Fehlercodes zu Seiten an

2.1 Konfiguration der statischen Seitenzuordnung (steuern Sie die Fehlercode-Zuordnungsbeziehung, wenn Anpassen des eingebetteten Containers)

@Componentpublic class CustomizationBean implements EmbeddedServletContainerCustomizer{/** * 定制方法一:实现EmbeddedServletContainerCustomizer
     * @param container     */@Overridepublic void customize(ConfigurableEmbeddedServletContainer container) {//container.setPort(9000);    }/** * 定制方法二:注入EmbeddedServletContainerFactory
     * @return */@Beanpublic EmbeddedServletContainerFactory servletContainer() {
        TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory();
        factory.setPort(9001);
        factory.setSessionTimeout(10, TimeUnit.MINUTES);//优先级高于配置在/static/error文件夹里面的404.html页面factory.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, "/error/403.html"));return factory;
    }
}
Nach dem Login kopieren

2.2 Dynamische Seitenzuordnungskonfiguration

@Componentpublic class MyErrorViewResolver  implements ErrorViewResolver {

    @Overridepublic ModelAndView resolveErrorView(HttpServletRequest request, HttpStatus status, Map<String, Object> model) {  return new ModelAndView("/error/error",model);}

}
Nach dem Login kopieren

Dieser benutzerdefinierte ViewResolver ersetzt den Standardseitenprozessor DefaultErrorViewResolver. Die obige Konfiguration ordnet alle Fehler (unabhängig von den Fehlercodes) der Fehlerseite error.ftl zu, um eine einheitliche Verwaltung zu ermöglichen.

Neue error.ftl-Seite mit Fehlerinhalten

Ähnliche Konfiguration wie 5xx.ftl

3. Einige abnormale Konfigurationen

> ; Fehlerattribut gibt Modell zurück)-> Wirf es an den Seitenprozessor ErrorViewResolver

#BasicErrorController的请求路径(你可以遇到错误后跳转的路径,该路径是一个BasicErrorController的请求路径,映射到它errorHtml或者error方法,由请求接受类型决定,一个返回错误页面,一个返回错误json)
Nach dem Login kopieren
#server.error.path=/error
Nach dem Login kopieren
#always include stacktrace(是否包含异常的堆栈信息,默认NEVER,页面无法获取到${trace!}的值,可取值NEVER,ALWAYS,ON_TRACE_PARAM; on_trace_param意思是请求带上参数 ?trace=true)
Nach dem Login kopieren
<em>server.error.include-stacktrace=always<br><br><br></em>
Nach dem Login kopieren

, damit du den Controller anpassen/anpassen kannst

ErrorAttributes/Customization

ErrorViewResolver usw., um eine komplexere Ausnahmebehandlung zu erreichen

Das obige ist der detaillierte Inhalt vonAusnahmeregelung für Spring Boot 1.5.4. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Windows-ISO-Datei zu groß BootCamp-Fehler [Behoben] Windows-ISO-Datei zu groß BootCamp-Fehler [Behoben] Feb 19, 2024 pm 12:30 PM

Wenn Sie bei der Verwendung von BootCampAssistant auf einem Mac-Computer die Fehlermeldung „Die Windows-ISO-Datei ist zu groß“ erhalten, kann dies daran liegen, dass die ISO-Dateigröße den von BootCampAssistant unterstützten Grenzwert überschreitet. Die Lösung für dieses Problem besteht darin, andere Tools zum Komprimieren der ISO-Dateigröße zu verwenden, um sicherzustellen, dass sie im BootCamp-Assistenten verarbeitet werden kann. BootCampAssistant ist ein praktisches Tool von Apple zum Installieren und Ausführen des Windows-Betriebssystems auf Mac-Computern. Es hilft Benutzern beim Einrichten eines Dual-Boot-Systems, sodass sie beim Start problemlos zwischen MacOS und Wind wählen können

Ein neues Programmierparadigma, wenn Spring Boot auf OpenAI trifft Ein neues Programmierparadigma, wenn Spring Boot auf OpenAI trifft Feb 01, 2024 pm 09:18 PM

Im Jahr 2023 ist die KI-Technologie zu einem heißen Thema geworden und hat enorme Auswirkungen auf verschiedene Branchen, insbesondere im Programmierbereich. Die Bedeutung der KI-Technologie wird den Menschen zunehmend bewusst, und die Spring-Community bildet da keine Ausnahme. Mit der kontinuierlichen Weiterentwicklung der GenAI-Technologie (General Artificial Intelligence) ist es entscheidend und dringend geworden, die Erstellung von Anwendungen mit KI-Funktionen zu vereinfachen. Vor diesem Hintergrund entstand „SpringAI“ mit dem Ziel, den Prozess der Entwicklung von KI-Funktionsanwendungen zu vereinfachen, ihn einfach und intuitiv zu gestalten und unnötige Komplexität zu vermeiden. Durch „SpringAI“ können Entwickler einfacher Anwendungen mit KI-Funktionen erstellen, wodurch diese einfacher zu verwenden und zu bedienen sind.

Verwenden Sie Spring Boot und Spring AI, um generative Anwendungen für künstliche Intelligenz zu erstellen Verwenden Sie Spring Boot und Spring AI, um generative Anwendungen für künstliche Intelligenz zu erstellen Apr 28, 2024 am 11:46 AM

Als Branchenführer bietet Spring+AI durch seine leistungsstarke, flexible API und erweiterte Funktionen führende Lösungen für verschiedene Branchen. In diesem Thema werden wir uns mit den Anwendungsbeispielen von Spring+AI in verschiedenen Bereichen befassen. Jeder Fall wird zeigen, wie Spring+AI spezifische Anforderungen erfüllt, Ziele erreicht und diese LESSONSLEARNED auf ein breiteres Anwendungsspektrum ausdehnt. Ich hoffe, dieses Thema kann Sie dazu inspirieren, die unendlichen Möglichkeiten von Spring+AI tiefer zu verstehen und zu nutzen. Das Spring-Framework hat eine mehr als 20-jährige Geschichte im Bereich der Softwareentwicklung, und seit der Veröffentlichung der Spring Boot 1.0-Version sind 10 Jahre vergangen. Nun kann niemand diesen Frühling bestreiten

Was sind die Implementierungsmethoden für programmatische Frühlingstransaktionen? Was sind die Implementierungsmethoden für programmatische Frühlingstransaktionen? Jan 08, 2024 am 10:23 AM

So implementieren Sie programmgesteuerte Spring-Transaktionen: 1. Verwenden Sie TransactionCallback und TransactionCallbackWithoutResult; 4. Verwenden Sie TransactionTemplate in Kombination mit @Transactional;

Ein Leitfaden zu den ungewöhnlichen Missionen im Rise of Ronin Pool Ein Leitfaden zu den ungewöhnlichen Missionen im Rise of Ronin Pool Mar 26, 2024 pm 08:06 PM

Die Abnormalität im Pool ist eine Nebenaufgabe im Spiel. Viele Spieler möchten wissen, wie sie die Abnormalität im Pool erledigen können. Zuerst müssen wir die Technik des Schießens im Wasser beherrschen Die Aufgabe und die Untersuchung der Quelle des Gestanks. Später stellten wir fest, dass sich unter dem Pool viele Leichen befinden. Werfen wir einen Blick auf diese grafische Anleitung für die ungewöhnlichen Aufgaben im Pool in Rise of Ronin. Leitfaden für ungewöhnliche Missionen im Ronin Rise Pool: 1. Sprechen Sie mit Iizuka und lernen Sie die Technik des Schießens im Wasser. 2. Gehen Sie zum Ort im Bild unten, um die abnormale Aufgabe im Pool zu erhalten. 3. Gehen Sie zum Missionsort, sprechen Sie mit dem NPC und erfahren Sie, dass im nahegelegenen Pool ein übler Geruch herrscht. 4. Gehen Sie zum Pool, um nachzuforschen. 5. Schwimmen Sie zum Ort im Bild unten, tauchen Sie unter Wasser und Sie werden viele Leichen finden. 6. Machen Sie mit einer Kamera Fotos von der Leiche. 7

Das neueste Meisterwerk des MIT: Verwendung von GPT-3.5 zur Lösung des Problems der Erkennung von Zeitreihenanomalien Das neueste Meisterwerk des MIT: Verwendung von GPT-3.5 zur Lösung des Problems der Erkennung von Zeitreihenanomalien Jun 08, 2024 pm 06:09 PM

Heute möchte ich Ihnen einen letzte Woche vom MIT veröffentlichten Artikel vorstellen, in dem GPT-3.5-turbo verwendet wird, um das Problem der Erkennung von Zeitreihenanomalien zu lösen, und zunächst die Wirksamkeit von LLM bei der Erkennung von Zeitreihenanomalien überprüft wird. Im gesamten Prozess gibt es keine Feinabstimmung, und GPT-3.5-Turbo wird direkt zur Anomalieerkennung verwendet. Der Kern dieses Artikels besteht darin, wie man Zeitreihen in Eingaben umwandelt, die von GPT-3.5-Turbo erkannt werden können, und wie man sie entwirft Eingabeaufforderungen oder Pipelines, damit LLM die Anomalieerkennungsaufgabe lösen kann. Lassen Sie mich Ihnen diese Arbeit im Detail vorstellen. Titel des Bildpapiers: Largelingualmodelscanbezero-shotanomalydete

Praktische Tipps zum effizienten Lösen von Ausnahmen beim Lesen großer Java-Dateien Praktische Tipps zum effizienten Lösen von Ausnahmen beim Lesen großer Java-Dateien Feb 21, 2024 am 10:54 AM

Praktische Tipps zum effizienten Beheben von Leseausnahmen bei großen Dateien in Java erfordern spezifische Codebeispiele. Übersicht: Bei der Verarbeitung großer Dateien kann es in Java zu Problemen wie Speicherüberlauf und Leistungseinbußen kommen. In diesem Artikel werden verschiedene praktische Techniken zur effektiven Lösung von Ausnahmen beim Lesen großer Java-Dateien vorgestellt und spezifische Codebeispiele bereitgestellt. Hintergrund: Bei der Verarbeitung großer Dateien müssen wir möglicherweise den Dateiinhalt zur Verarbeitung in den Speicher einlesen, z. B. zum Suchen, Analysieren, Extrahieren und für andere Vorgänge. Wenn die Datei jedoch groß ist, treten häufig die folgenden Probleme auf: Speicherüberlauf: Es wird versucht, die gesamte Datei auf einmal zu kopieren

So legen Sie die Transaktionsisolationsstufe im Frühjahr fest So legen Sie die Transaktionsisolationsstufe im Frühjahr fest Jan 26, 2024 pm 05:38 PM

So legen Sie die Transaktionsisolationsstufe in Spring fest: 1. Verwenden Sie die Annotation @Transactional. 3. Legen Sie sie in der Spring-Konfigurationsdatei fest. 4. Legen Sie sie in der Java-Konfigurationsklasse fest. Detaillierte Einführung: 1. Verwenden Sie die Annotation @Transactional, fügen Sie die Annotation @Transactional zu der Klasse oder Methode hinzu, die eine Transaktionsverwaltung erfordert, und legen Sie die Isolationsstufe im Attribut fest. 2. In der Spring-Konfigurationsdatei usw.

See all articles