2012-03-02 72 views
2

我有一個以下結構的Web應用程序訪問靜態文件(Web應用/靜態/對研究所):從Web應用程序

src 
+ main 
+-+ java 
    + resources 
    + webapp 
    +-+ WEB-INF 
    + static 

靜態目錄是org.apache.catalina.servlets.DefaultServlet服務器,否則它是由服務應用。我試圖實現的是從應用程序訪問靜態目錄。但是,一旦將其部署在服務器上,目錄似乎「丟失」 - 我無法在相對路徑(由​​)或類路徑(由新的ClassPathResource())訪問它。我可以看到,該目錄在target目錄中缺失,這可能是正確的,但我不知道我能做些什麼。

謝謝。

編輯

  1. 也許並不清楚,但目錄static是WEB-INF的兄弟,而不是它的孩子。
  2. 靜態目錄可能包含2 GB的圖像。所以不希望在每次部署應用程序時複製此目錄(因此將它放入類路徑中可能不是一個好主意)。
  3. 我只是找不到DefaultServlet的行爲,我允許它訪問此目錄。它是否將所有的東西都複製到其他地方?還是通過絕對路徑訪問它?

回答

2

我很確定WEB-INF對classpath不可見,你必須把它放在webapp文件夾中。更好的是,您可能想要使用mvc:資源標籤進行研究。

http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/mvc.html

搜索MVC:一個交代資源。

編輯

如果您在放置的src /主/資源的資源,就應該提供給使用ClassPathResource

+0

是的,它顯然不是,整個webapp目錄沒有放在目標目錄中(所以它不在類路徑中)。但是我從正在運行的應用程序中找不到任何對它的引用... – 2012-03-02 21:23:52

+0

將您想要的資源放入src/resources目錄可以通過classpathresource對象訪問。 – dardo 2012-03-02 21:27:13

+0

請閱讀我的編輯,謝謝。 – 2012-03-03 06:45:13

1

有訪問WEB-INF下存儲的文件沒有標準化的方式。 WEB-INF文件夾的精神在於它包含框架(容器/服務器)讀取的數據。它不被視爲容器(用戶)直接讀取數據的地方。根據您使用的容器軟件(和版本)(Tomcat與JBoss vs. WebSphere與WebLogic等),您可能會陷入WEB-INF,但它不能跨容器移植,所以我不會推薦它。

考慮將文件放在別的地方,比如放在類路徑或webapp的非WEB-INF子文件夾中。

+0

請閱讀我的編輯,謝謝。 – 2012-03-03 06:45:26