当前位置: 首页 > 知识库问答 >
问题:

Jersey/*servlet映射导致静态资源出现404错误

裴宜春
2023-03-14
<servlet>
  <servlet-name>JerseyApp</servlet-name>
  <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
  <init-param>
    <param-name>javax.ws.rs.Application</param-name>
    <param-value>org.frog.jump.JerseyApp</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
  <servlet-name>JerseyApp</servlet-name>
  <url-pattern>/*</url-pattern>
</servlet-mapping>

共有1个答案

阳昊
2023-03-14

使用Jersey 1.x,如果从Jersey servlet切换到过滤器,您应该能够从相同的路径提供静态内容。删除您指定的servlet 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>

Edit:在Jersey 2.x中,您应该可以做同样的事情,但是属性的名称已经更改。试着做一些类似的事情:

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

您的POM应包括:

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

<!-- see. https://eclipse-ee4j.github.io/jersey/ for latest version -->
 类似资料:
  • 问题内容: 如果我在2.0版本中将Jersey的url-pattern映射到,它将为所有静态资源(例如/index.html)造成404。我的具有: 如何使用相同的网址格式投放静态内容? 问题答案: 使用Jersey 1.x,如果你从Jersey servlet切换到过滤器,则应该能够从同一路径提供静态内容。删除你指定的servlet XML并将其切换到: 编辑:在Jersey 2.x中,你应该可

  • 主要内容:WebJars 映射,默认静态资源映射在 Web 应用中会涉及到大量的静态资源,例如 JS、CSS 和 HTML 等。我们知道,Spring MVC 导入静态资源文件时,需要配置静态资源的映射;但在 SpringBoot 中则不再需要进行此项配置,因为 SpringBoot 已经默认完成了这一工作。 Spring Boot 默认为我们提供了 3 种静态资源映射规则: WebJars 映射 默认资源映射 静态首页(欢迎页)映射 WebJ

  • 我有以下servlet映射- 我的图像链接在html是"/图像/文件夹/ImageName.jpg"-这些图像给我一个404,而如果更改链接到"/图像/ImageName.jpg"和移动图像直接下的图像文件夹,它得到我的图像。 我是否需要以任何方式修改我的servlet映射以考虑层次结构?

  • 我在学习春靴。现在我必须将静态资源部署到web项目中,链接它,但它返回404错误 此外,当我访问“localhost:8080/appie/resources/js/common.js”浏览器时,返回404错误(我的上下文路径是/appie)。 那是什么原因呢?

  • 我使用Spring Boot1.3.3我的应用程序资源存在于src/main/Resources/静态下例如:src/main/Resources/静态/index.html我试图映射我的静态资源与前缀像/*/资源/** 以便它匹配网址像 /main/resource/**和 /app/resource/** 当我尝试使用以下代码时 当我请求域:8080/app/resource/index时,它

  • 在发布帖子时,我在网络控制台上看到了上述错误。 源地图错误:请求失败,状态404资源URL:超文本传输协议://{mysite}/js/app.js源地图URL:bootstrap.js.map 我的资源/js/app.js是这样的 还有这个网页。js看起来像这样 我的部分工作输出 我的错误是这样的