我是使用Java进行Web服务器的新手,我正在编写一个非常基本的应用程序,它将微文章写入文件,稍后将调用并显示该文件。 (我知道数据库对此更好,但这是一个赋值,我们使用文件I / O来保持简单。)
这是我的servlet中接收表单的方法并将数据写入我的文件:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String content = request.getParameter("postContent");
Calendar cal = new GregorianCalendar();
int day = cal.get(Calendar.DAY_OF_MONTH);
int month = cal.get(Calendar.MONTH) + 1; //add one because the Calendar class numbers months 0-11
int year = cal.get(Calendar.YEAR);
int hour = cal.get(Calendar.HOUR);
int minutes = cal.get(Calendar.MINUTE);
String dateTime = Integer.toString(month) + "/" + Integer.toString(day) + "/" + Integer.toString(year) + " " + Integer.toString(hour) + ":" + Integer.toString(minutes);
String user = request.getSession().getAttribute("username").toString();
ServletContext servletContext = request.getSession().getServletContext();
String path = servletContext.getRealPath("/posts.txt");
//String path = getServletContext().getRealPath("/posts.txt");
try {
BufferedWriter writer = new BufferedWriter(new FileWriter(path, true));
writer.write(user);
writer.newLine();
writer.write(dateTime);
writer.newLine();
writer.write(content);
writer.close();
}catch(IOException ex){
System.out.println(ex.getMessage());
}
response.sendRedirect("listPosts.jsp");
}
当我运行应用程序时,everthing顺利进行并最终重定向到listPost.jsp
,但我的文件是空白的。我已经看过其他问题,但我做的一切都是我知道的。我是否设置了BufferedWriter错误?我可以将posts.txt放在错误的地方吗? (它位于WebContent文件夹中)。
提前致谢。
更新
path
变量的值如下:
/home/[myusername]/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/forum/posts.txt
更新
我现在知道我可以从posts.txt
读取,所以这告诉我应用程序找不到它。
我使用以下代码从文件中读取:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String path = getServletContext().getRealPath("posts.txt");
BufferedReader reader = new BufferedReader(new FileReader(path));
String username = reader.readLine();
String dateTime = reader.readLine();
String postContent = reader.readLine();
reader.close();
request.setAttribute("username", username);
request.setAttribute("dateTime", dateTime);
request.setAttribute("postContent", postContent);
request.getRequestDispatcher("/listPosts.jsp").forward(request, response);;
}
答案 0 :(得分:0)
好的,所以我觉得现在很愚蠢。它一直在工作,但它是从服务器目录中的文件写入和读取,而不是我的源代码存储的位置。因此,当我检查我手动创建的文本文件时,它没有显示任何更改,因为它不是正在使用的文件。感谢大家的帮助和意见,抱歉浪费你的时间。