我正在尝试使用 HTML 表单写入 MySql 数据库,使用 Jquery 我无法让 servlet 写入数据库。我没有看到任何明显的我做错了。这是 servlet 的代码和 HTML 文件的代码。
小服务程序:
package com.david.servlets;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;
/**
* Servlet implementation class myForm
*/
public class myForm extends HttpServlet {
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
//Get parameters
String id = request.getParameter("ID");
String fname = request.getParameter("FirstName");
String lname = request.getParameter("LastName");
//Get Connection
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Found a driver");
Connection dbConnect = null;
try {
dbConnect = getConnection("localhost", 7001);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Made a connection");
//Create Query
String query = "INSERT INTO test.customer (ID, FirstName, LastName) " +
"VALUES (" + id + ", " + fname + ", " + lname + ")";
PreparedStatement dbStatement = null;
try {
dbStatement = dbConnect.prepareStatement(query);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//Execute Query
try {
dbStatement.executeUpdate(query);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//close connection
try {
dbStatement.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
dbConnect.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public Connection getConnection(String server, int port)
throws SQLException, NamingException {
Context ctx = null;
Hashtable ht = new Hashtable();
ht.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
ht.put(Context.PROVIDER_URL, "t3://"+server+":"+port);
ctx = new InitialContext(ht);
DataSource ds = (javax.sql.DataSource) ctx.lookup ("localmysql");
Connection conn = ds.getConnection();
//conn.setAutoCommit( true );
return conn;
}
}
HTML:
<html>
<head>
<title>myForm</title>
<script src="http://ajax.microsoft.com/ajax/jquery/jquery-1.4.2.js" type="text/javascript"></script>
<script type="text/javascript">
$("#submit").click(function () {
Var ID = $("#ID").val();
Var FirstName = $("#FirstName").val();
Var LastName = $("#LastName").val();
$.post("myForm", $("form").serialize(), insertCallback);
});
function insertCallback(result) {
if (result == "success") {
alert("Record added!");
} else {
alert("Could not add Record!");
}
}
</script>
</head>
<body>
<form action="myForm" method="POST">
ID: <input type="number" name="ID">
FirstName: <input type="text" name="FirstName"> <br>
LastName: <input type="text" name="LastName"> <br>
<input type="button" value="submit">
</form>
</body>
</html>