使用Jersey 2提供静态文件

mbc*_*ute 5 java servlets jersey jersey-2.0

我一般对Jersey和servlet还是陌生的,所以希望我只是缺少一些简单的东西...

我已经启动了Jersey应用程序(v2.13),并使用Guice(3.0)进行依赖项注入以及src / main / webapp中的一些静态文件。如果我将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>
Run Code Online (Sandbox Code Playgroud)

mbc*_*ute 5

我被指出这个问题并得到了答案。基本上,我只需要将Jersey servlet更改为过滤器,并提供静态内容正则表达式作为初始参数即可。现在,我已将servlet挂载在根目录上,并且我的静态文件也已按需提供。