2014-11-05 109 views
4

我是新来的新泽西州和一般的servlet,所以希望我只是失去了一些东西简单...提供静态文件与泽西2

我有一个应用程序新泽西州(v2.13)启动和运行使用Guice(3.0)进行依赖注入以及src/main/webapp中的一些静态文件。如果我将Jersey 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> 

回答

4

我指着this问题,并得到了我的答案。基本上我只需要将Jersey servlet更改为过滤器,并提供一个静态内容正则表达式作为初始参数。现在我已经将我的servlet装载到了根目录下,并且我的静态文件正如我所希望的那样得到提供。