Heim >Java >javaLernprogramm >Wie greife ich auf statische Ressourcen zu, wenn ich in Spring MVC ein Global Front Controller Servlet verwende?
Zugriff auf statische Ressourcen mit einem Global Front Controller Servlet
Beim Zuordnen eines Spring MVC Dispatchers als Global Front Controller Servlet auf / Dies kann zu Problemen beim Zugriff auf statische Ressourcen wie CSS, JS und Bilder führen, die normalerweise in einem Ordner wie /res gespeichert sind. Dies liegt daran, dass die /-Zuordnung alle Anfragen erfasst und an das Servlet weiterleitet, wodurch der Zugriff auf diese statischen Dateien verhindert wird.
Um dieses Problem zu beheben, kann ein spezifischeres URL-Muster für das Controller-Servlet definiert werden. wie zum Beispiel /pages/. Statische Inhalte können dann in einem separaten Ordner abgelegt werden, z. B. /static. Ein Filter kann so konfiguriert werden, dass er / abhört und Anforderungen für statischen Inhalt transparent an das Standard-Servlet weiterleitet, während andere Anforderungen an das Controller-Servlet weitergeleitet werden.
Hier ist ein vereinfachtes Codebeispiel:
<filter> <filter-name>filter</filter-name> <filter-class>com.example.Filter</filter-class> </filter> <filter-mapping> <filter-name>filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <servlet> <servlet-name>controller</servlet-name> <servlet-class>com.example.Controller</servlet-class> </servlet> <servlet-mapping> <servlet-name>controller</servlet-name> <url-pattern>/pages/*</url-pattern> </servlet-mapping>
Und in der doFilter()-Methode des Filters:
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); }
Diese Konfiguration stellt sicher, dass statische Ressourcen wie CSS und Auf JS kann zugegriffen werden, ohne die Funktionalität des Controller-Servlets zu beeinträchtigen, das die verbleibenden Anforderungen verarbeitet. Darüber hinaus stellt die Verwendung eines Filters sicher, dass der Zugriff auf statische Dateien aus Browsersicht vollständig transparent ist.
Das obige ist der detaillierte Inhalt vonWie greife ich auf statische Ressourcen zu, wenn ich in Spring MVC ein Global Front Controller Servlet verwende?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!