2012-06-23 50 views
0

我正在Netbeans中開發一個JSP項目。我正在使用一些JSP文件和一些Java文件。 項目結構如下:JSP項目結構 - 文件放置

root 
-Web Pages 
    --Jsp files 
-Source Packages 
    --myPacakge 
    ---Java files 
    --myIndex (it's a folder) 

所以,我的問題是:我想從一個java文件指myIndex,被放置在mypackage中。

我首先假定java文件以root身份看到「Source Packages」。 所以,我認爲索引的路徑只是「myIndex」,但通過調試器,我發現它正在尋找C:\ Program Files \ Apache Software Foundation \ Apache Tomcat 7.0.14 \ bin \ myIndex」

然後我嘗試以下路徑:「\ myIndex」,但它現在在看「C:\ myIndex」

能否請你幫我說, myIndex的正確路徑應該如何,或者如果我應該把它放在項目的某個地方?

+0

我用了一個絕對路徑,它的工作原理,但這不是一個正確的解決方案。有任何想法嗎? –

回答

1

你顯示的是你的源項目的結構。當您運行部署的Web應用程序時,不再有源項目。所有內容都捆綁在一個war文件中,其中包含JSP文件,其他Web資源,WEB-INF/classes下的類文件以及WEB-INF/lib下的jar文件。如果您要訪問一個文件,該文件是在生成的WAR文件,裏面WEB-INF/classes,那麼你應該使用的類加載器訪問它,使用

InputStream in = SomeClassOfTheWebApp.class.getResourceAsStream("/myIndex/someFile.txt"); 

如果你打算存儲myIndex目錄裏面的東西,那就算了關於它:戰爭文件是隻讀的。在webapp外部的文件系統上配置一些絕對目錄,並使用此絕對位置來存儲新文件。不要使用相對位置,因爲它取決於服務器的物理位置,啓動方式,JVM的當前目錄是什麼,等等。如果服務器移動,所有內容都會中斷。

+0

很好的答案。對於爲什麼webapp之外的文件應該被絕對路徑引用以及上下文路徑如何根據服務器運行方式而變化,添加幾句話是很好的。 – toniedzwiedz