我是泽西和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>
答案 0 :(得分:4)
我被问到this问题并得到了答案。基本上我只需要将Jersey servlet更改为过滤器并提供静态内容正则表达式作为init参数。现在我将我的servlet安装在根目录下,我的静态文件就像我想要的那样提供服务。