Bereitstellung statischer Inhalte mit der universellen URL-Zuordnung von Jersey
Jerseys weit verbreitete Verwendung des /*-URL-Musters in seiner Zuordnung kann manchmal zu 404-Fehlern führen Zugriff auf statische Ressourcen wie HTML-Dateien. Dieses Problem ergibt sich aus der Tatsache, dass die Zuordnung mit der Standardverarbeitung von statischen Inhalten im Webcontainer in Konflikt steht.
Lösung des Konflikts in Jersey 1.x
Zu dienen Wenn Sie bei der Verwendung der /*-Zuordnung in Jersey 1.x statische Inhalte verwenden, wird empfohlen, vom Jersey-Servlet zu einem Filter zu wechseln. Dies kann durch Aktualisieren der web.xml-Konfiguration wie folgt erreicht werden:
<code class="xml"><filter> <filter-name>Jersey Filter</filter-name> <filter-class>com.sun.jersey.spi.container.servlet.ServletContainer</filter-class> <init-param> <param-name>javax.ws.rs.Application</param-name> <param-value>org.frog.jump.JerseyApp</param-value> </init-param> <init-param> <param-name>com.sun.jersey.config.property.WebPageContentRegex</param-name> <param-value>/.*html</param-value> </init-param> </filter> <filter-mapping> <filter-name>Jersey Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping></code>
Diese Konfiguration ermöglicht es Jersey, Anforderungen basierend auf dem WebPageContentRegex-Muster (in diesem Fall /.*html) zu filtern und so statische Ressourcen zu ermöglichen wie vorgesehen bereitgestellt werden.
Lösung des Konflikts in Jersey 2.x
Die Lösung für Jersey 2.x ähnelt der von 1.x, mit geringfügigen Änderungen aufgrund von Namensänderungen der Grundstücke. Die folgende web.xml-Konfiguration sollte das Problem beheben:
<code class="xml"><filter> <filter-name>Jersey Filter</filter-name> <filter-class>org.glassfish.jersey.servlet.ServletContainer</filter-class> <init-param> <param-name>jersey.config.server.provider.packages</param-name> <param-value>org.example</param-value> </init-param> <init-param> <param-name>jersey.config.servlet.filter.staticContentRegex</param-name> <param-value>/.*html</param-value> </init-param> </filter> <filter-mapping> <filter-name>Jersey Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping></code>
Zusätzlich muss die POM-Datei die folgenden Abhängigkeiten enthalten:
<code class="xml"><dependency> <groupId>org.glassfish.jersey.core</groupId> <artifactId>jersey-server</artifactId> <version>${jersey2.version}</version> <type>jar</type> <scope>compile</scope> </dependency> <dependency> <groupId>org.glassfish.jersey.containers</groupId> <artifactId>jersey-container-servlet-core</artifactId> <version>${jersey2.version}</version> <type>jar</type> <scope>compile</scope> </dependency></code>
Der staticContentRegex-Parameter kann angepasst werden, um mit anderen Dateien übereinzustimmen Erweiterungen nach Bedarf.
Als Alternative zur Verwendung eines Filters besteht ein anderer Ansatz darin, einen versionierten Pfad für Dienste zu definieren, z. B. „/v1/*“, sodass statische Inhalte bereitgestellt werden können, ohne dass ein Filter erforderlich ist.
Das obige ist der detaillierte Inhalt vonWie kann ich statische Inhalte mit der universellen URL-Zuordnung von Jersey bereitstellen und gleichzeitig 404-Fehler vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!