【发布时间】:2015-02-15 20:46:27
【问题描述】:
我有一个简单的表单来从user 获取数据并存储到数据库。
这是我的简单表格:
<!DOCTYPE html>
<html>
<head>
<title> Database Insertion Form </title>
</head>
<body>
</body>
<h1>
<center> Phonebook</center>
</h1>
<Form method=post action="DbServlet">
<pre>
Surname: <input type="text" name="Surname">
Forename: <input type="text" name="Forenames">
Phone number: <input type="text" name="PhoneNum">
</pre>
<br><br>
<center><input type="submit" VALUE="Commit"></center>
</Form>
</html>
这是DbServletServlet:
@WebServlet("/DbServlet")
public class DbServlet extends HttpServlet {
private PreparedStatement ps;
private Connection connection;
private String URL = "jdbc:mysql://localhost/lib";
@Override
public void init() throws ServletException {
super.init();
try {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection(URL, "root", "2323");
} catch (SQLException e) {
e.printStackTrace();
System.exit(1);
} catch (ClassNotFoundException cnfe) {
cnfe.printStackTrace();
}
}
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws IOException, ServletException {
String surname, forenames, telNum;
surname = request.getParameter("Surname");
forenames = request.getParameter("Forenames");
telNum = request.getParameter("PhoneNum");
response.setContentType("text/HTML");
PrintWriter out = response.getWriter();
out.println("<HTML>");
out.println("<HEAD>");
out.println("<TITLE>Servlet + JDBC</TITLE>");
out.println("</HEAD>");
out.println("<BODY>");
String query = "INSERT INTO PhoneNums"
+ " VALUES('" + surname + "','"
+ forenames + "','" + telNum + "')";
try {
ps = connection.prepareStatement(query);
ps.executeUpdate();
JOptionPane.showMessageDialog(null, "Done");
} catch (SQLException sqle) {
sqle.printStackTrace();
}
out.println("</BODY>");
out.println("</HTML>");
out.flush();
}
@Override
public void destroy() {
try {
connection.close();
} catch (Exception ex) {
System.out.println(
"Error on closing database!");
ex.printStackTrace();
System.exit(1);
}
}
}
当我点击 html 格式的 submit 按钮时,什么都没有发生,甚至没有任何异常!
MySQL 连接器 jar 文件存在于 Tomcat 的 lib 文件夹中。
【问题讨论】:
-
您是否使用 Post 方法提交表单?
-
可以查看tomcat的日志文件找到漏掉的异常
-
当您点击给定的提交按钮时,
doPost()方法是否被正确调用?这是一个无效的 HTML 标记<Form method=post action="DbServlet">。method=post应该是method="post"括在引号内。 -
不相关但:not 在 servlet 中使用
System.exit(1)。这将关闭整个 Servlet 容器,而不仅仅是您的 Servlet。另外,您不能在 Servlet 中使用 Swing 组件 (JOptionPane)。 Servlet 没有 UI(服务器甚至可能没有图形用户界面) -
只是你的连接 URL
"jdbc:mysql://localhost/lib"中的一个建议,如果你连接到你的本地主机,你可以直接写"jdbc:mysql:///lib"