2017-08-04 18 views
0

我正在創建一個Java Web應用程序,它從HTML表單獲取數據並使用Servlet將其保存到文本文件中。但是,當我運行應用程序時,我無法在任何地方看到文本文件,因此我不確定它是否成功創建。有沒有人有任何想法,爲什麼文件沒有出現?如何使用Servlet向Java中的文件寫入

這裏是我的HTML表單代碼:

<html> 
<head> 
    <title>Register Customer</title> 
    <meta charset="UTF-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
</head> 
<body> 
    <form name = "regcustomer" method = "get" action = "CustomerServlet" > 
     Customer Name 
     <input type="text" name="customerName"> <br> 
     Customer Address 
     <input type="text" name="customerAddress"> <br> 
     Telephone Number 
     <input type="text" name="telNo"> <br> 
     Email 
     <input type="text" name="email"> <br> 
     Cost per KG shipped 
     <input type="text" name="costPKG"> <br> 
     <input type="submit" value="Register"> <br> <br> 

     <a href="index.html">Back</a> 
     </form> 
</body> 

這裏是我的servlet代碼:

package Servlets; 

import java.io.*; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

public class CustomerServlet extends HttpServlet { 
@Override 
protected void doGet(HttpServletRequest request, HttpServletResponse 
response) 
throws ServletException, IOException { 
PrintWriter pw = response.getWriter(); 
String customerName; 
customerName = request.getParameter("customerName"); 
String customerAddress = request.getParameter("customerAddress"); 
String telNo; 
telNo = request.getParameter("telNo"); 
String email = request.getParameter("email"); 
String costPKG = request.getParameter("costPKG"); 

try{ 
File file = new File("C:/xyz.txt"); 
FileWriter fstream = new FileWriter(file,true); 
try (BufferedWriter out = new BufferedWriter(fstream)) { 
    out.write(customerName+" "+customerAddress+" "+telNo+" "+email+" 
"+costPKG); 
    out.newLine(); 
} 
pw.println("File is created successfully"); 
} 

catch (IOException e){ 
System.err.println("Error: " + e.getMessage()); 
} 
} 
} 

任何建議,將不勝感激

+0

這可能會幫助你[鏈接](https://stackoverflow.com/questions/2395251/how-to-call-servlet-class-from-html-form) – Austin

+1

應該先在web.xml中映射你的servlet – msagala25

+0

您的標題完全不正確 –

回答

0

嘗試添加該行:

@WebServlet(urlPatterns = { "/CustomerServlet" }) 

前:

public class CustomerServlet extends HttpServlet { 

注:如果您使用的是舊容器(未實現的Servlet 3.0,如Tomcat 6.0),那麼你必須編輯web.xml文件。

+0

如果WebApplication不是3.0及以上,會怎麼樣?下面不支持註釋配置。 – msagala25

+0

我已經添加了行和編輯的web.xml,我不再收到錯誤,但是我找不到文本文件。你有什麼想法可以找到它嗎?還有什麼我可以改變的(「C:/xyz.txt」)? –

+0

'C:/ xyz.txt'可能被鎖定或不可寫入 –