我有一个带有textarea和提交按钮的jsp页面。
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)
您的数据可能会缓存在内存中。请尝试在wr.close();
wr.flush();
答案 1 :(得分:0)
尝试在关闭前调用wr.flush()。
请参阅https://docs.oracle.com/javase/7/docs/api/java/io/OutputStreamWriter.html#flush()
答案 2 :(得分:0)
更改
System.out.println(str);
到
System.out.println("* "+str);
并验证是否没有第二个空请求。