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!