Maison >Java >javaDidacticiel >Comment diffuser du contenu statique avec le mappage d'URL universel de Jersey tout en évitant les erreurs 404 ?

Comment diffuser du contenu statique avec le mappage d'URL universel de Jersey tout en évitant les erreurs 404 ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-29 01:45:30578parcourir

How to Serve Static Content with Jersey's Universal URL Mapping While Avoiding 404 Errors?

Servir du contenu statique avec le mappage d'URL universel de Jersey

L'utilisation généralisée par Jersey du modèle d'URL /* dans son mappage peut parfois provoquer des erreurs 404 lorsque accéder à des ressources statiques telles que des fichiers HTML. Ce problème vient du fait que le mappage entre en conflit avec la gestion par défaut du contenu statique dans le conteneur Web.

Résoudre le conflit dans Jersey 1.x

Pour servir contenu statique lors de l'utilisation du mappage /* dans Jersey 1.x, il est recommandé de passer du servlet Jersey à un filtre. Ceci peut être réalisé en mettant à jour la configuration web.xml comme suit :

<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>

Cette configuration permettra à Jersey de filtrer les requêtes en fonction du modèle WebPageContentRegex (/.*html dans ce cas), permettant aux ressources statiques de être servi comme prévu.

Résoudre le conflit dans Jersey 2.x

La solution pour Jersey 2.x est similaire à celle de Jersey 2.x, avec de légères modifications en raison de changements dans les noms de propriétés. La configuration web.xml suivante devrait résoudre le problème :

<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>

De plus, le fichier POM doit inclure les dépendances suivantes :

<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>

Le paramètre staticContentRegex peut être personnalisé pour correspondre à différents fichiers. extensions selon les besoins.

Au lieu d'utiliser un filtre, une autre approche consiste à définir un chemin versionné pour les services, tel que "/v1/*", permettant de diffuser du contenu statique sans nécessiter de filtre.

Au lieu d'utiliser un filtre, une autre approche consiste à définir un chemin versionné pour les services, tel que "/v1/*", permettant de diffuser du contenu statique sans nécessiter de filtre. 🎜>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn