我以前问过这个问题,并收到了很多关于如何解决这个问题的答案。但是问题仍然没有得到修复,当谈到修复它的正确方法时,我不知所措。我正在使用 Tomcat 8 和 Java EE 7 在 Net beans 中创建一个 java Web 应用程序。该应用程序是一个简单的表单应用程序,它获取用户信息并将其写入 WEB-INF 文件夹中的一个简单文本文件。但是,我尝试了几种写入文本文件的方法,除了一种抛出错误之外,没有抛出错误的方法是根据我发现的研究和信息以及很好的答案应该是正确的方法我从这里的每个人那里得到的。我的问题是它们都不起作用。我已经从模型 1 架构转移到模型 2 架构等,但仍然没有 t 找到修复。我发布了一个指向我的 Git 存储库的链接,其中包含所有代码。请如果有人可以看看它,让我知道发生了什么,那就太好了。 我的 GitHub!
//doPost Method from servlet
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//get parameters from the form
String firstName = request.getParameter("firstName");
String lastName = request.getParameter("lastName");
String email = request.getParameter("email");
//get relative file name
//ServletContext context = getServletContext();
String path = getServletContext().getRealPath("/WEB-INF/my_new_text.txt");
//add info to text file
User user = new User(firstName, lastName, email);
UserIO.add(user, path);
//Store user object in a request object
request.setAttribute("user", user);
//forward request and response objects to JSP page
String url = "/display_email_entry.jsp";
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(url);
dispatcher.forward(request, response);
}
//UserIO class for writing to file
package data;
import business.User;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import static java.rmi.server.LogStream.log;
/**
*
* @author Richard Davy
*/
public class UserIO {
public static void add(User user, String filepath)throws IOException{
FileOutputStream file = new FileOutputStream(filepath, true);
String firstName = user.getFirstName();
String lastName = user.getLastName();
String email = user.getEmail();
PrintWriter writer = new PrintWriter(file);
try{
writer.println(user.getEmail() + "|" + user.getFirstName() + "|" + user.getLastName());
System.out.print(email + "|" + firstName + "|" + lastName);
}catch(Exception ex){
System.out.println("Errors" + ex);
}finally{
writer.flush();
writer.close();
}
}
}
15-Jun-2014 22:24:12.321 SEVERE [354] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [AddToEmailList] in context with path [/MailList3] threw exception
java.lang.NullPointerException
at java.io.FileOutputStream.<init>(FileOutputStream.java:206)
at java.io.FileOutputStream.<init>(FileOutputStream.java:104)
at java.io.FileWriter.<init>(FileWriter.java:63)
at data.UserIO.add(UserIO.java:22)
at email.AddToEmailList.doPost(AddToEmailList.java:89)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:644)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:301)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:136)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:78)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:526)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1033)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:652)
at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:222)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1566)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1523)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:724)