2012-06-26 223 views
5

我的WEB-INF/lib目錄中有一個jar文件。在jar裏面是一個帶有一個文件的META-INF/resources目錄(image.jpg)。據我瞭解這個servlet 3.0 API,當我部署此比如Tomcat 7下我的web應用程序的一部分,我應該能夠去META-INF /資源中的資源未找到並返回404

http://host/context/image.jpg 

,看到從罐子裏裝的形象。但相反,我得到一個404錯誤。就好像servlet_api沒有從我的jar中加載資源,即使文檔說明它應該。

我在做什麼錯?有沒有一個字段需要放在我的web.xml文件中,以告訴tomcat加載這些資源並將它們提供給Web瀏覽器?

+0

只是爲了消除任何混淆,我使用帶有Convention/Rest插件的Struts2,但根據servlet 3.0文檔,這應該不重要,但它仍然不起作用!我需要一些幫助。 –

回答

5

罐子的構建方式是正確的。 Tomcat 7附帶了Servlet 3.0 jar,但它不會爲jar提供資源,除非web.xml特別聲明它是3.0版本。 Tomcat不會假設你想要Servlet 3.0的功能。

在你的web.xml中,你的web-app標記需要像這樣開頭:

<web-app xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
    version="3.0"> 

注到3.0版

引用只要您指定的web應用程序是版本3.0,您將可以訪問Servlet 3.0功能。