Heim >Java >javaLernprogramm >Wie kann ich mit einem Global Front Controller Servlet, das /* zugeordnet ist, auf statische Ressourcen zugreifen?

Wie kann ich mit einem Global Front Controller Servlet, das /* zugeordnet ist, auf statische Ressourcen zugreifen?

Barbara Streisand
Barbara StreisandOriginal
2024-12-08 14:22:10352Durchsuche

How Can I Access Static Resources with a Global Front Controller Servlet Mapped to /*?

Global Front Controller Servlet auf /*: Statischen Ressourcenzugriff auflösen

Beim Zuordnen eines globalen Front Controller Servlets auf /* wird es zu einer Herausforderung, auf statische Ressourcen wie zuzugreifen CSS, JS und Bilder, die normalerweise in einem separaten Ordner gespeichert werden. Dieser Artikel befasst sich mit einer Lösung zur Wiederherstellung des Zugriffs auf diese statischen Dateien unter Beibehaltung der globalen Front-Controller-Funktionalität.

Der empfohlene Ansatz umfasst zwei Schritte:

1. Ordnen Sie das Controller-Servlet einem bestimmten Pfad zu.

Anstatt / als URL-Muster für das Controller-Servlet zu verwenden, ordnen Sie es einem spezifischeren Pfad zu, z. B. /pages/. Dadurch können statische Ressourcen aus der Reichweite des Controllers ausgeschlossen werden.

2. Implementieren Sie einen Filter für statischen Inhalt

Erstellen Sie einen Filter, der auf /* lauscht. Dieser Filter setzt die Kette für alle Anfragen an statische Ressourcen transparent fort und sendet Anfragen für andere Inhalte an das Controller-Servlet.

Verwenden Sie in der doFilter()-Methode des Filters den folgenden Code:

HttpServletRequest req = (HttpServletRequest) request;
String path = req.getRequestURI().substring(req.getContextPath().length());

if (path.startsWith("/static")) {
    chain.doFilter(request, response); // Goes to default servlet.
} else {
    request.getRequestDispatcher("/pages" + path).forward(request, response);
}

Dieser Code prüft, ob der Anforderungspfad mit „/static“ (oder einem anderen Präfix, das statischen Ressourcen zugewiesen ist) beginnt. Bei „true“ wird die Anfrage an das Standardservlet weitergeleitet, das normalerweise dem statischen Ressourcenordner zugeordnet ist. Andernfalls wird die Anfrage an das Controller-Servlet weitergeleitet (vorausgesetzt, sie ist auf */pages abgebildet).

Diese Lösung stellt sicher, dass statische Ressourcen von der Zuordnung des Controller-Servlets ausgeschlossen werden, während andere Anfragen vom verarbeitet werden können Controller wie erwartet. Dies ist eine praktische Möglichkeit, die Notwendigkeit eines globalen Front-Controllers mit der Zugänglichkeit statischer Ressourcen in Einklang zu bringen.

Das obige ist der detaillierte Inhalt vonWie kann ich mit einem Global Front Controller Servlet, das /* zugeordnet ist, auf statische Ressourcen zugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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