使用Jersey 2提供静态文件

时间:2014-11-05 17:09:19

标签: java servlets jersey jersey-2.0

我是泽西和servlet的新手,所以希望我只是错过了一些简单的事情......

我有一个Jersey应用程序(v2.13)启动并使用Guice(3.0)进行依赖注入以及src / main / webapp中的一些静态文件。如果我将Jersey servlet映射到除/ *之外的任何其他内容并在webapp文件夹中请求静态文件,那么它的服务就没问题了。如果我将Jersey servlet映射到root,则对404的静态文件的任何请求都会得到满足。

我真的更喜欢将Jersey servlet映射到root,但我还需要能够提供静态内容。有没有办法实现这个目标?也许将Jersey servlet映射到root,但忽略对/ 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 个答案:

答案 0 :(得分:4)

我被问到this问题并得到了答案。基本上我只需要将Jersey servlet更改为过滤器并提供静态内容正则表达式作为init参数。现在我将我的servlet安装在根目录下,我的静态文件就像我想要的那样提供服务。