2012-08-28 58 views
0

我創建了一個動態Web項目,並將Apache Tomcat用作服務器。查找使用Java EE和Tomcat創建的文件

在我的servlet中,我創建了一個文本文件,並希望在JSP中重用它。但是他們是通過在Eclipse的安裝文件夾中創建,當我做,如下簡單的東西默認:

File f = new file("test.txt"). 

我不知道爲什麼會這樣。有沒有辦法在WebContent目錄中創建該文件,因爲我想讓該文件在我的JSP中可供下載。

回答

0

Java有一個「當前目錄」的概念。當您通過Eclipse啓動應用程序時,這可能確實指向您的安裝目錄。如果您不指定任何路徑,則會在當前目錄中創建一個文件。因此,你的test.txt結果在那裏。

WebContent目錄是一個特定於Eclipse的東西。你的代碼不應該依賴於任何東西。您只在開發應用程序時通過Eclipse啓動應用程序,而不是在將應用程序部署到實時服務器時啓動應用程序。

此目錄的內容將成爲您的.war,它是獨立的,你是如何開始&應用程序部署你一個衆所周知的位置的root,但你仍然可以不依賴於在運行時寫任何東西到這個位置。您可以將應用程序部署爲打包的.war(可能用於實時部署),也可以將應用程序部署爲未封裝,但應用程序服務器可能無法在運行時完成任何更改。

,如果你確信你的應用程序只運行一臺服務器是寫你的文件系統中的文件複製到一個衆所周知的位置上,如/tmp,或/var/yourapp/files等你能做什麼服務了這些文件中的代碼可然後從那個位置接他們。

如果您希望根據Java EE規則100%安全地播放它,您可以將文件存儲在具有可配置地址的FTP服務器之類的文件中。從技術上講,你的戰爭可能會在集羣上的節點之間傳輸,並且請求最終可能會轉到不同的機器上,因此根據本地文件系統的不同,這種方式將無法正常工作

0

執行此語句this.getServletContext().getRealPath (""),您將獲得Tomcat WebServer在運行時指向的路徑。您可以添加一個文件夾「MyFolder」並調用以下語句:

new File(this.getServletContext()。getRealPath(「」)+「/MyFolder/test.txt」);

反正默認路徑看起來像:

...\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\<NameOfYourProject> 

注意,當你創建一個新的文件,它不會出現在你眼前的工作區(檢查.metadata路徑),除非你更改tomcat應指向的運行時位置。