使用 servlet 不工作将数据添加到 mysql
Adding data to mysql with servlet not working
这是我的数据库
CREATE TABLE `Animal` ( `name` varchar(128) NOT NULL, `breed` varchar(128) NOT NULL, `age` varchar(128) NOT NULL )
register.html填写数据
<html>
<body>
<form action="servlet/Register" method="post">
name <input type="text" name="name"/><br/><br/>
breed <input type="password" name="breed"/><br/><br/>
age <input type="password" name="age"/><br/><br/>
<br/><br/>
<input type="submit" value="register"/>
</form>
</body>
</html>
我的 servlet
package animals;
import java.io.*;
import java.sql.*;
import javax.servlet.ServletException;
import javax.servlet.http.*;
public class Register extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String name = request.getParameter("name");
String breed = request.getParameter("breed");
String age = request.getParameter("age");
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "");
PreparedStatement ps = con.prepareStatement(
"INSERT INTO Animal (name,breed,age) VALUES(?,?,?)");
ps.setString(1, name);
ps.setString(2, breed);
ps.setString(3, age);
int i = ps.executeUpdate();
if (i > 0) {
out.print("Data successfully registered...");
}
} catch (Exception e2) {
System.out.println(e2);
}
out.close();
}
}
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>Register</servlet-name>
<servlet-class>animals.Register</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Register</servlet-name>
<url-pattern>/servlet/Register</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>register.html</welcome-file>
</welcome-file-list>
</web-app>
当我填写表格并提交时,它会将我转到 /register,但它是空白的,并且不会在我的数据库中添加数据。
我 100% 确定我与 java 数据库的连接正常工作,因为我有另一个项目的登录名与数据库的连接相同,并且那个正在工作。
欢迎任何提示/评论
您可以检查的内容很少:
1. 调试代码并检查值是否被 servlet 捕获。
2. 在executeUpdate() 之后使用commit()。可能由于某些原因,您的配置设置为关闭自动提交。
3. 这个字符串是否被打印? "Data successfully registered..."
4. 最后,有什么例外吗?
这是我的数据库
CREATE TABLE `Animal` ( `name` varchar(128) NOT NULL, `breed` varchar(128) NOT NULL, `age` varchar(128) NOT NULL )
register.html填写数据
<html>
<body>
<form action="servlet/Register" method="post">
name <input type="text" name="name"/><br/><br/>
breed <input type="password" name="breed"/><br/><br/>
age <input type="password" name="age"/><br/><br/>
<br/><br/>
<input type="submit" value="register"/>
</form>
</body>
</html>
我的 servlet
package animals;
import java.io.*;
import java.sql.*;
import javax.servlet.ServletException;
import javax.servlet.http.*;
public class Register extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String name = request.getParameter("name");
String breed = request.getParameter("breed");
String age = request.getParameter("age");
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "");
PreparedStatement ps = con.prepareStatement(
"INSERT INTO Animal (name,breed,age) VALUES(?,?,?)");
ps.setString(1, name);
ps.setString(2, breed);
ps.setString(3, age);
int i = ps.executeUpdate();
if (i > 0) {
out.print("Data successfully registered...");
}
} catch (Exception e2) {
System.out.println(e2);
}
out.close();
}
}
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>Register</servlet-name>
<servlet-class>animals.Register</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Register</servlet-name>
<url-pattern>/servlet/Register</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>register.html</welcome-file>
</welcome-file-list>
</web-app>
当我填写表格并提交时,它会将我转到 /register,但它是空白的,并且不会在我的数据库中添加数据。
我 100% 确定我与 java 数据库的连接正常工作,因为我有另一个项目的登录名与数据库的连接相同,并且那个正在工作。
欢迎任何提示/评论
您可以检查的内容很少:
1. 调试代码并检查值是否被 servlet 捕获。
2. 在executeUpdate() 之后使用commit()。可能由于某些原因,您的配置设置为关闭自动提交。
3. 这个字符串是否被打印? "Data successfully registered..."
4. 最后,有什么例外吗?