Heim >Java >javaLernprogramm >Wie werden statische Ressourcen bereitgestellt, wenn ein Global Front Controller Servlet verwendet wird, das /* zugeordnet ist?

Wie werden statische Ressourcen bereitgestellt, wenn ein Global Front Controller Servlet verwendet wird, das /* zugeordnet ist?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-18 03:30:09672Durchsuche

How to Serve Static Resources When Using a Global Front Controller Servlet Mapped to /*?

Zugriff auf statische Ressourcen mit einem globalen Front-Controller-Servlet, das unter /* zugeordnet ist

Zuordnung eines globalen Front-Controller-Servlets, z. B. des Spring MVC-Dispatchers, zum /*-URL-Muster Bietet eine zentrale Steuerung für die Bearbeitung eingehender Anfragen. Diese Zuordnung kann jedoch den Zugriff auf statische Ressourcen wie CSS-Dateien, JavaScript-Skripte und Bilder beeinträchtigen.

Um dieses Problem zu lösen, ist ein vielschichtiger Ansatz erforderlich:

  1. Verwenden Sie ein bestimmtes URL-Muster für das Controller-Servlet: Ordnen Sie das Controller-Servlet einem spezifischeren URL-Muster zu, z. B. /pages/*. Dadurch wird sichergestellt, dass das Servlet nur Anfragen verarbeitet, die für dynamische Inhalte bestimmt sind.
  2. Statischen Inhalt in einem dedizierten Ordner platzieren: Statische Ressourcen in einem separaten Ordner organisieren, z. B. /static. Dies hilft dabei, sie von anderen Anfragetypen zu unterscheiden.
  3. Implementieren Sie einen Filter für die Verarbeitung statischer Inhalte: Erstellen Sie einen Filter, der das /*-URL-Muster überwacht. Dieser Filter sollte Anforderungen für statische Inhalte transparent an das Standardservlet weiterleiten. Bei Anfragen, die für die dynamische Verarbeitung vorgesehen sind, sollte der Filter die Anfrage an das Controller-Servlet weiterleiten.

Implementieren Sie in der doFilter()-Methode des Filters die folgende Logik:

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);
}

Dies Der Filter ermöglicht die Bereitstellung statischer Ressourcen ohne Änderungen an der Adressleiste des Browsers. Darüber hinaus können Sie die Pfade „/static“ und „/pages“ anpassen, indem Sie Initialisierungsparameter im Filter verwenden.

Das obige ist der detaillierte Inhalt vonWie werden statische Ressourcen bereitgestellt, wenn ein Global Front Controller Servlet verwendet wird, das /* zugeordnet ist?. 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