继续我的学业。我试图将一些数据写入txt文件,但我正在接收此异常。我在用Tomcat7.0。EmailList.txt在文件夹中,所以我不知道会发生什么。你们能帮帮我吗
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>AddToEmailListServlet</servlet-name>
<servlet-class>email.AddToEmailListServlet</servlet-class>
<init-param>
<param-name>relativePathToFile</param-name>
<param-value>/WEB-INF/EmailList.txt</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>AddToEmailListServlet</servlet-name>
<url-pattern>/addToEmailList</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>30</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>join_email_list.jsp</welcome-file>
</welcome-file-list>
</web-app>servlet类这个类将处理数据。
package email;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import business.User;
import data.UserIO;
public class AddToEmailListServlet extends HttpServlet
{ @Override
protected void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
// get parameters from the request
String firstName = request.getParameter("firstName");
String lastName = request.getParameter("lastName");
String emailAddress = request.getParameter("emailAddress");
User user = new User(firstName, lastName, emailAddress);
//validation
String message = "";
String url = "";
if (firstName.length() == 0 || lastName.length() == 0 || emailAddress.length() == 0) {
message = "Please fill out all three boxes";
url = "/join_email_list.jsp";
}else{
message = "";
ServletConfig config = getServletConfig();
String relativePath = config.getInitParameter("relativePathToFile");
UserIO.addRecord(user, relativePath);
url = "/display_email_entry.jsp";
}
request.setAttribute("user", user);
request.setAttribute("message", message);
//forward request and response
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(url);
dispatcher.forward(request, response);
}
}I/O类
一揽子数据;
进口java.io.;进口java.util.
import business.User;
public class UserIO
{
public static void addRecord(User user, String filename) throws IOException
{
File file = new File(filename);
PrintWriter out = new PrintWriter(
new BufferedWriter(new FileWriter(file)));
out.println(user.getEmailAddress()+ "|"
+ user.getFirstName() + "|"
+ user.getLastName());
out.close();
}
}发布于 2011-12-13 01:08:02
问题在于UserIO#addRecord()方法背后的代码,您根本没有在问题中说明这一点,因此很难找出根本原因。但是我想你只是在给定的相对路径上做了一个new File()。这是个坏主意,原因如下:
new File()操作相对于磁盘文件系统中的当前工作文件夹,而不是webapp文件夹结构。即使如此,前面的斜杠/使其相对于磁盘根目录。WAR不一定是在磁盘上展开的,它也可以在内存中展开,这样就没有任何有效的磁盘文件系统路径可以在new File().而是在扩展的WAR文件夹之外的某个绝对路径上写入文件,或者使用数据库代替。
https://stackoverflow.com/questions/8483090
复制相似问题