使用Jersey 2提供静态文件服务

6
我刚接触Jersey和servlet,希望我只是错过了一些简单的东西... 我已经使用Guice(3.0)进行依赖注入,并在src/main/webapp中包含了一些静态文件,成功运行了一个Jersey应用程序(v2.13)。如果我将Jersey servlet映射到除/*之外的任何内容,并请求webapp文件夹中的静态文件,则可以轻松地提供服务。如果我将Jersey servlet映射到根目录,则对于静态文件的任何请求都会返回404错误。我真的希望将Jersey servlet映射到根目录,但我也需要能够提供静态内容。是否有任何方法来实现这一点?或者将Jersey servlet映射到根目录,但忽略/ assets / *或类似内容的请求?以下是我的web.xml:
<filter>
    <filter-name>guice-filter</filter-name>
    <filter-class>com.google.inject.servlet.GuiceFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>guice-filter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

<listener>
    <listener-class>com.example.MyGuiceServletContextListener</listener-class>
</listener>

<servlet>
    <servlet-name>Jersey Web Application</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>javax.ws.rs.Application</param-name>
        <param-value>com.example.MyResourceConfig</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Jersey Web Application</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>
1个回答

6
我被指向这个问题并得到了答案。基本上,我只需要将Jersey servlet更改为过滤器,并提供静态内容正则表达式作为初始化参数。现在我的servlet已经挂载在根目录下,并且我的静态文件可以像我想要的那样提供服务了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接