Die Beispiele in diesem Artikel fassen die gängigen Verarbeitungsmethoden statischer Dateien in Javaweb zusammen, die für die Entwicklung von Javaweb-Programmen von großem praktischen Wert sind. Die spezifischen Methoden werden wie folgt zusammengefasst:
Methode 1: Aktivieren Sie das defaultServlet von Tomcat, um statische Dateien zu verarbeiten
Fügen Sie web.xml hinzu:
<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>
Hinweis: Es sollte vor DispatcherServlet geschrieben werden und defaultServlet die Anfrage zuerst abfangen lassen, damit die Anfrage nicht in Spring eingeht, was meiner Meinung nach die beste Leistung bietet.
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“
Der Name des Standard-Servlets, das mit Resin geliefert wird – „resin-file“
Der Name des Standard-Servlets, das mit WebLogic geliefert wird – „FileServlet“
Der Name des Standard-Servlets, das mit WebSphere geliefert wird – „SimpleFileServlet“
Methode 2: mvc:resources wird in Spring 3.0.4 und späteren Versionen bereitgestellt.
<!-- Zugriff auf statische Ressourcendateien--> <mvc:resources programming="/images/**" location="/images/" />
Beschreibung: /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, sodass die statischen Ressourcen komprimiert werden können das Glaspaket. Mit der Cache-Periode können statische Ressourcen im Web zwischengespeichert werden
Methode drei: Verwenden Sie <mvc:default-servlet-handler/>
<mvc:default-servlet-handler/>
Die URL „/**“ wird in der URLMap von SimpleUrlHandlerMapping registriert und der Zugriff auf statische Ressourcen wird von HandlerMapping zur Verarbeitung und Rückgabe an org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler übertragen.
DefaultServletHttpRequestHandler verwendet das Standard-Servlet jedes Servlet-Containers.
Ergänzender Hinweis: Probleme mit der Ausführungsreihenfolge mehrerer HandlerMappings:
Der Auftragsattributwert von DefaultAnnotationHandlerMapping ist: 0
<mvc:resources/>Der Auftragsattributwert des automatisch registrierten SimpleUrlHandlerMapping lautet: 2147483646
<mvc:default-servlet-handler/>Der Auftragsattributwert des automatisch registrierten SimpleUrlHandlerMapping lautet: 2147483647
Spring führt den Auftrag zuerst mit einem kleineren Wert 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 nach dem Bestellwert. 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?
Lassen Sie mich abschließend erklären, dass beim Zugriff auf statische Ressourcen in Schema 2 und Schema 3 der Interceptor verwendet wird, wenn ein passender (ungefährer) Gesamtinterceptor 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.