Heim  >  Artikel  >  Java  >  Detaillierte Einführung in den Zugriff von Spring MVC auf statische Dateien

Detaillierte Einführung in den Zugriff von Spring MVC auf statische Dateien

巴扎黑
巴扎黑Original
2017-09-08 09:38:201740Durchsuche

In diesem Artikel werden hauptsächlich die relevanten Informationen von Spring MVC für den Zugriff auf statische Dateien im Detail vorgestellt, die einen bestimmten Referenzwert haben. Interessierte Freunde können sich auf

Wie man „*“ abfängt, beziehen. tun“, gibt es kein Problem, nicht auf statische Ressourcen zugreifen zu können.

Wenn Ihr DispatcherServlet „/“ abfängt und alle Anfragen abfängt, um den REST-Stil zu implementieren, wird auch der Zugriff auf statische Dateien wie *.js, *.jpg abgefangen.

Wir müssen dieses Problem lösen.

Zweck: Auf statische Dateien kann normal zugegriffen werden, und 404 kann nicht gemeldet werden, wenn statische Dateien nicht gefunden werden können.

Option 1: Aktivieren Sie das Standard-Servlet von Tomcat, um statische Dateien zu verarbeiten

Xml-Code


<servlet-mapping>  
  <servlet-name>default</servlet-name> 
 <url-pattern>*.jpg</url-pattern>   
</servlet-mapping>  
<servlet-mapping>    
  <servlet-name>default</servlet-name>  
  <url-pattern>*.js</url-pattern>  
</servlet-mapping>  
<servlet-mapping>    
  <servlet-name>default</servlet-name>    
  <url-pattern>*.css</url-pattern>   
</servlet-mapping>

Um mehrere zu konfigurieren, sollte eine für jede Datei

vor DispatcherServlet geschrieben werden. Lassen Sie defaultServlet die Anforderung zuerst abfangen, damit die Anforderung nicht in Spring eingeht, I I Ich denke, die Leistung ist die beste.

Der Name des Standard-Servlets, das mit Tomcat, Jetty, JBoss und GlassFish geliefert wird – „default“
Der Name des Standard-Servlets, das mit Google App Engine geliefert wird – „_ah_default“
Resin kommt mit Der Name des Standard-Servlets – „resin-file“
Der Name des Standard-Servlets, das mit WebLogic geliefert wird – „FileServlet“
Der Name des Standard-Servlets, das mit WebSphere geliefert wird – „SimpleFileServlet "

Option 2: In Spring 3.0.4 und späteren Versionen wird mvc:resources bereitgestellt. Verwendung:
Xml-Code


<!-- 对静态资源文件的访问 -->  
<mvc:resources mapping="/images/**" location="/images/" />

/images/** wird zur Verarbeitung dem ResourceHttpRequestHandler zugeordnet, und der Standort gibt den Speicherort der statischen Ressource an. Er kann sich im Stammverzeichnis der Webanwendung oder im JAR-Paket befinden. damit die statischen Ressourcen in das JAR-Paket komprimiert werden können. Cache-Periode kann Web-Caching von statischen Ressourcen ermöglichen

Wenn der folgende Fehler auftritt, kann es daran liegen, dass 463d7d566f84e66ad507872587b9c14c nicht konfiguriert ist.
Fehlerwarnung: Keine Zuordnung für HTTP-Anfrage mit URI [/mvc/user/findUser/lisi/770] im DispatcherServlet mit dem Namen „springMVC“ gefunden

Verwenden Sie fc91900416ceb12339ff0261db29a5f5

Xml-Code


registriert die URL „/**“ in der URLMap von SimpleUrlHandlerMapping und überträgt den Zugriff auf statische Ressourcen von HandlerMapping an org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler zur Verarbeitung und Rückgabe.

DefaultServletHttpRequestHandler Verwenden Sie das Standard-Servlet jedes Servlet-Containers
<mvc:default-servlet-handler/>


Zusätzliche Erklärung: Die Ausführungsreihenfolge mehrerer HandlerMapping-Probleme:
Der Auftragsattributwert von DefaultAnnotationHandlerMapping ist: 0

6dc807b7f3e65fc0346efcca89666ce8 Der Auftragsattributwert des automatisch registrierten SimpleUrlHandlerMapping ist: 2147483646

7ea4b1506262239595c16a77e7a712b1 Der Auftragsattributwert des automatisch registrierten SimpleUrlHandlerMapping ist: 2147483647

spring führt zuerst den kleineren Bestellwert aus. Wenn Sie auf eine a.jpg-Bilddatei zugreifen, suchen Sie zunächst den Prozessor über DefaultAnnotationHandlerMapping. Er darf nicht gefunden werden, da wir keine Aktion namens a.jpg haben. Suchen Sie dann in aufsteigender Reihenfolge des Bestellwerts. Da das letzte SimpleUrlHandlerMapping mit „/**“ übereinstimmt, wird es definitiv übereinstimmen und Sie können auf das Bild antworten.

Um auf ein Bild zuzugreifen, müssen Sie mehrere Matching-Ebenen durchlaufen. Sie sind sich nicht sicher, wie die Leistung ist?

Abschließend möchte ich erklären, dass Plan 2 und Plan 3 den Interceptor verwenden, wenn beim Zugriff auf statische Ressourcen ein passender (ungefährer) Gesamt-Interceptor vorhanden ist. Wenn Sie die Berechtigungsprüfung beim Abfangen implementieren, achten Sie darauf, diese Anforderungen nach statischen Dateien zu filtern.

Wenn Ihr DispatcherServlet URL-Suffixe wie *.do abfängt, treten die oben genannten Probleme nicht auf. Es ist immer noch praktisch, ein Suffix zu haben.

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in den Zugriff von Spring MVC auf statische Dateien. 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