2016-02-15 163 views
1

我有一個jsp頁面,它有一個textarea並提交按鈕。將jsp頁面的textarea內容寫入文本文件

form.jsp

<form method="post" action="submitForm"> 
      <label for="commentTxt">Comments: </label><br /> 
      <textarea rows="20" cols="100" id="commentTxt" name="commentTxt" 
       placeholder="Enter your comments."></textarea><br /> 

      <input type="submit" name="submit" value="Submit" /> 

     </form> 

我想寫評論的文本文件,所以在servlet我有這樣的代碼,調用Java方法寫入到一個txt文件。

submitForm.java

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    // TODO Auto-generated method stub 
    //doGet(request, response); 
    // get user comments 
    String comments = request.getParameter("commentTxt"); 
    FilesRW.writeStrTxt(comments); 

} 

FilesRW.java

public static void writeStrTxt(String str){ 
    FileWriter fileWriter = null; 
    try{ 
     FileWriter wr = new FileWriter(new File("userComments.txt")); 
     System.out.println(str);// this line print user comments in console 
     wr.write(str); 
     wr.close(); 
    }catch (IOException exe) { 
     exe.printStackTrace(); 
    } 

} 

我不知道是什麼問題,因爲用戶的意見發送到fileRW類,我可以打印到控制檯並看到用戶的評論。但是,當我打開文件時,它是空的。另外,當我嘗試在同一個類(FilesRW.java)的主要文件中使用writeStrTxt(String)方法時,它的工作方式就是將文本寫入文件。

我需要在servlet類(submitForm.java)中調用此方法,但它不會將文本寫入文件。我的代碼有什麼問題?

+0

您的代碼有效... –

+0

嘗試指定文件的確切路徑。 –

+0

路徑與類的文件夾相同,所以路徑很好,但文件仍爲空 –

回答

0

您的數據可能被緩存在內存中。在wr.close();之前嘗試添加以下內容

wr.flush(); 
+0

我試過了,沒有任何改變。 –

+0

那麼,請嘗試使用[構造函數](https://docs.oracle.com/javase/7/docs/api/java/io/FileWriter.html#FileWriter(java.lang.String,%20boolean))' FileWriter'帶'boolean'參數,允許在文件末尾附加數據... –

0

變化

System.out.println(str); 

System.out.println("* "+str); 

和驗證,如果沒有第二空請求。

+0

問題在於寫入文件,而不是控制檯。 –

+0

是的,但你可能會寫兩次文件。首先評論,然後用空文本覆蓋它。但這只是一個提示。 –