Rumah  >  Artikel  >  Java  >  Bagaimana untuk Menyajikan Kandungan Statik dengan Pemetaan URL Universal Jersey Sambil Mengelakkan Ralat 404?

Bagaimana untuk Menyajikan Kandungan Statik dengan Pemetaan URL Universal Jersey Sambil Mengelakkan Ralat 404?

Patricia Arquette
Patricia Arquetteasal
2024-10-29 01:45:30570semak imbas

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

Menyajikan Kandungan Statik dengan Pemetaan URL Universal Jersey

Penggunaan meluas corak URL /* oleh Jersey dalam pemetaannya kadangkala boleh menyebabkan 404 ralat apabila mengakses sumber statik seperti fail HTML. Isu ini berpunca daripada fakta bahawa pemetaan bercanggah dengan pengendalian lalai kandungan statik dalam bekas web.

Menyelesaikan Konflik dalam Jersi 1.x

Untuk menyampaikan kandungan statik semasa menggunakan pemetaan /* dalam Jersey 1.x, adalah disyorkan untuk menukar daripada servlet Jersey kepada penapis. Ini boleh dicapai dengan mengemas kini konfigurasi web.xml seperti berikut:

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

Konfigurasi ini akan membolehkan Jersey menapis permintaan berdasarkan corak WebPageContentRegex (/.*html dalam kes ini), membolehkan sumber statik untuk disampaikan seperti yang dimaksudkan.

Menyelesaikan Konflik dalam Jersi 2.x

Penyelesaian untuk Jersi 2.x adalah serupa dengan 1.x, dengan sedikit pengubahsuaian disebabkan oleh perubahan dalam nama hartanah. Konfigurasi web.xml berikut harus menyelesaikan isu:

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

Selain itu, fail POM mesti mengandungi kebergantungan berikut:

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

Parameter staticContentRegex boleh disesuaikan untuk memadankan fail yang berbeza sambungan seperti yang diperlukan.

Sebagai alternatif kepada menggunakan penapis, pendekatan lain ialah mentakrifkan laluan versi untuk perkhidmatan, seperti "/v1/*", membenarkan kandungan statik disampaikan tanpa memerlukan penapis.

Atas ialah kandungan terperinci Bagaimana untuk Menyajikan Kandungan Statik dengan Pemetaan URL Universal Jersey Sambil Mengelakkan Ralat 404?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn