[JAVA] Wirf eine Ausnahme und fange, wenn es keinen Handler gibt, der dem Pfad im Frühjahr entspricht

Wenn in spring-mvc kein Pfad für die Servlet-Zuordnung vorhanden ist, wird die folgende Warnung im Protokoll angezeigt. In diesem Fall werfen Sie eine Ausnahme auf die Federseite und fangen Sie sie auf. Dies behandelt 404 (unter Verwendung von spring anstelle von web.xml).

[org.springframework.web.servlet.PageNotFound](default task-2) No mapping found for HTTP request with URI [/xxxx] in DispatcherServlet with name 'dispatcher'

Umgebung

Code

import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

public class WebMVCApplicationInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

	@Override
	protected Class<?>[] getRootConfigClasses() {
		Class<?>[] configurations = {AppConfiguration.class};
		return configurations;
	}

	@Override
	protected Class<?>[] getServletConfigClasses() {
		Class<?>[] configs = {};
		return configs;
	}

	@Override
	protected String[] getServletMappings() {
		String[] mappings = {"/"};
		return mappings;
	}

	@Override
	protected DispatcherServlet createDispatcherServlet(WebApplicationContext servletAppContext) {
		DispatcherServlet dispatcherServlet = (DispatcherServlet)super.createDispatcherServlet(servletAppContext);
		dispatcherServlet.setThrowExceptionIfNoHandlerFound(true);
		return dispatcherServlet;
	}
}

Wenn Sie setThrowExceptionIfNoHandlerFound auf true setzen, wird eine Ausnahme ausgelöst, wenn der der Anforderung entsprechende Handler nicht gefunden wird.

import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.servlet.NoHandlerFoundException;

@RestControllerAdvice
public class NoHandlerFoundControllerAdvice {
    @ExceptionHandler(NoHandlerFoundException.class)
    public ResponseEntity<String> handleNoHandlerFoundException(NoHandlerFoundException ex) {
    	return new ResponseEntity<>("not found", HttpStatus.NOT_FOUND);
    }
}

Erstellen Sie eine Klasse, die ControllerAdvice (oder ControllerAdvice) zuweist, um die Ausnahmebehandlung zu beschreiben, die mehreren Controllern gemeinsam ist. Da spring früher so eingestellt wurde, dass NoHandlerFoundException ausgelöst wird, wenn dem Pfad kein Handler entspricht, geben Sie dies in ExceptionHandler an.

Informationsquelle

Recommended Posts

Wirf eine Ausnahme und fange, wenn es keinen Handler gibt, der dem Pfad im Frühjahr entspricht
So geben Sie den Wert aus, wenn sich ein Array im Array befindet
Wenn im Docker-Protokoll keine Ausgabe für stdout vorhanden ist
Anfangswert, wenn die Spring-Anforderung keine Eigenschaft des Formularobjekts enthält
Wenn Sie einem Argument in einer Ruby-Methode neu zuweisen und dann "super" aufrufen → Das neu zugewiesene wird verwendet
N Dinge, die Sie beim Lesen von "Einführung in den Frühling" und "Einführung in den Frühling" in der Reiwa-Ära beachten sollten
So lösen Sie das Problem, wenn der Wert nicht gesendet wird, wenn das Formular in Schienen deaktiviert und gesendet wird
[Ruby] Denken, wenn sich vor der Methode kein Empfänger befindet (wie es aussieht)
[Rails] Was tun, wenn der Fehler Keine Datenbank ausgewählt und Unbekannte Datenbank in db: migrate angezeigt wird?
Affen-Patch, um die aktuelle Zeit zurückzugeben, wenn in Time.parse of Ruby eine leere Zeichenfolge angegeben ist
Einstellungen, die vorgenommen werden müssen, wenn HTML oder JSP in Eclipse formatiert sind und das Layout enttäuschend wird
Ich möchte den Rahmen des Textfelds rot machen, wenn ein Eingabefehler auftritt
ProxyFactory ist praktisch, wenn Sie AOP mit Spring testen möchten!
[jOOQ] Wie in der WHERE / AND / OR-Klausel WANN FALLEN
Erstellen einer ArrayList, mit der Sie die Koordinaten einer zweidimensionalen Ebene eingeben und abrufen können
Es wurde ein Fehler behoben, der beim Versuch auftrat, Spark in einer Umgebung zu verwenden, in der Java 8 und Java 11 gleichzeitig vorhanden sind
So lösen Sie das Problem, dass die Bean beim Verschachteln in Spring Batch nicht ordnungsgemäß verarbeitet wird
Warum hört es auf, wenn ich in Eclipse debugge und es keine Haltepunkte gibt? Links zu
[Swift] Vielmehr ist es sinnvoll, var zu vermeiden und nur dann mit let zu deklarieren, wenn die Zuweisung des Anfangswertes einen Zweig enthält.
[JavaScript] So zeigen Sie eine Warnung an, wenn ein Eingabeformular ausgelassen wurde
catch (Ausnahme e) oder catch (IOException e) ist in der Try-with-Resources-Syntax nicht erforderlich
Gibt es einen Ingenieur, der die Json-Spalte in Rails nicht validiert hat?
Ich möchte bei der Registrierung in der Datenbank eine Fehlermeldung anzeigen
Ist es möglich, die Bibliothek (aar) in die Android-Bibliothek (aar) zu stellen und zu verwenden?
Spring Autowired wird im Konstruktor geschrieben
Möglichkeit bei der Bereitstellung auf EC2, aber im Fehlerprotokoll wird nichts angezeigt
Wenn Sie irgendwo einen Fehler melden möchten, wenn Sie graphql-spring-boot mit Spring Boot verwenden
Zusammenfassung beim Versuch, Solr in Java zu verwenden und eine Fehlermeldung zu erhalten (Solr 6.x)
Festlegen, wann in junit "Der Konstruktor Empty () ist nicht sichtbar" auftritt
[Kein Komma (,) in der Adresse! ] Dinge, die Sie beachten sollten, wenn Sie sich für eine Prüfung bei Pearson VUE bewerben
Beim Ändern des Controllers von Spring Web MVC in kotlin, @Autowired Die angegebene Komponente wird nicht injiziert und wird null