2012-08-08 24 views
0

我是java servlet的新手。我正在編寫一個讀取和寫入文本文件的應用程序。但是,我正在使用JSP在Java Servlet上運行此應用程序。當我在eclipse中運行servlet時,它會保持報告文件未找到錯誤。我真的不知道如何糾正文件路徑,以便servlet不會抱怨它。運行在java servlet中讀寫外部文本文件的應用程序

基本上,應用程序和servlet代碼位於相同的src文件夾中,但包裝不同。你能告訴我應該在哪裏放置這些文本文件,以及我應該如何讀寫它們?非常感謝你。

+0

回答這些問題(文件是對您的servlet必須讀取的文件的引用):1.文件位於何處;在服務器上還是在客戶端桌面上? 2.如何生成文件;從客戶端計算機上傳到服務器,由服務器上的不同應用程序創建,還有其他內容? 3.必須讀取的文件與必須寫入的文件相同還是不同的文件組? – DwB 2012-08-08 14:01:51

+0

我在eclipse中編寫servlet和應用程序。我創建了一個動態Web項目。我將我的所有文本文件放在WebContent文件夾中與我所有的JSP文件一起讀取。 – user1319894 2012-08-08 14:18:05

+0

@DwB對於第二個問題,所有文本文件都是由其他程序預先創建的。它們不是由服務器上的其他應用程序創建的。對於第三個問題,所有必須讀取的文件都是文本文件,而一些輸出文件是文本文件,一些是json文件。 – user1319894 2012-08-08 14:20:16

回答

0

默認目錄是您的項目的目錄。把你的文件放在項目目錄中,對我來說它是「C:\ Documents and Settings \ myusername \ workspace \ projectname」。

0

你可以將文件放在任何地方,但我建議你把它放在WEB-INF下,這樣它就不能直接訪問。

您可以通過訪問:

getServletContext()方法getRealPath( 「/ WEB-INF /文件名」)。

+0

但是,問題在於應用程序本身不是servlet,而是位於不同的包中。我試圖使用getServletContext,但程序沒有識別它。 – user1319894 2012-08-08 15:06:12

1

一些信息

  • 文件,這些文件在Web應用程序上下文根是由 客戶瀏覽。我懷疑這不是一個理想的功能。
  • Web應用程序中WEB-INF文件夾下的文件是 可訪問該Web應用程序,但不能由客戶端瀏覽。

建議的解決方案1 ​​

  • 計劃放置文件的WEB-INF文件夾下的文件夾中;或許被命名爲「文件」(,即「WEB-INF/Files」)。
  • 使用ServletContext.getRealPath()獲取真實的文件路徑。
  • 使用Java IO(BufferedReader,Scanner,別的 - 您選擇)讀取和寫入文件。

Sugested解基於下面的評論2

。該servlet將成爲Web應用程序的一部分,該應用程序已安裝到已知主機上的servlet容器(可能是Tomcat)中。在主機上創建一個目錄。將此目錄作爲參數(可能是servlet配置,也許屬性文件,可能是硬編碼字符串或任何其他解決方案)添加到servlet中。一旦完成,servlet將知道在哪裏讀取和寫入文件。那時,任何應用程序都可以讀取和寫入有問題的文件。

無需在此解決方案中使用getRealPath(),實際路徑是servlet的參數。

推薦的閱讀書目

的介紹(可能是過時了,但還是不錯的),請閱讀「中級Servlet的& JSP」和Core Servlets網站上的「高級Servlet的& JSP」教程。

另一個介紹來源是Java EE 5 Tutorial。整個教程很好,但關注servlet信息的第II部分,第3章和第4章。我更喜歡本教程到Java EE 6 Tutorial,但這可能只是個人偏好。

+0

我試圖使用ServletContext。但是,由於應用程序位於不同的包中,因此無法識別ServletContext。 – user1319894 2012-08-08 14:41:27

+0

該servlet可以訪問ServletContext。該servlet應該調用讀寫器應用程序。該servlet可以獲取文件的真實路徑並將其傳遞給應用程序。 – DwB 2012-08-08 15:05:38

+0

應用程序可以用來訪問這些文本文件嗎?因爲一些文本文件的讀寫真的獨立於servlet? – user1319894 2012-08-08 15:47:52

相關問題