Heim >Java >javaLernprogramm >Wie kann ich mit einem Global Front Controller Servlet, das /* zugeordnet ist, auf statische Ressourcen zugreifen?
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:
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.
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!