各位大侠们帮忙看下,小弟我初学,已经被这个问题困扰了一天了,硬是不知道是哪里错了。
问题如下
1.先通过以下这个html文件向其中写入数据,然后调用servlet 的post方法,向mysql数据库address表写入数据
<html>
<head>
<title>
Simple Registration
</title>
</head>
<body>
              Please register to your instructor's student address book
              <form action="http://localhost:8080/servlets-examples/servlet/SimpleRegistration"
method="POST" >
<p>Last Name <font color="pink">*</font><input type="text" name="lastname" size="20">
First Name <font color="pink">*</font><input type="text" name="firstname" size="20">
MI <font color="pink">*</font><input type="text" name="mi" size="1">
</p>
<p>Telephone <input type="text" name="telephone" size="20">
Email <input type="text" name="email" size="20">
</p>
<p>Street <input type="text" name="street" size="40"></p>
<p>City <input type="text" name="city" size="20">
State <select name="state">
<option value="GA">Georgia-GA</option>
<option value="OK">Oklahoma-OK</option>
<option value="IN">Indiana-IN</option>
</select>
Zip <input type="text" name="zip" size="10">
</p>
<p><input type="submit" value="Submit">
<input type="reset" value="Reset">
</p>
</form>
</body>
</html>
servlet代码如下:
import javax.servlet.*;
import javax.servlet.http.*;
import javax.swing.JOptionPane;
import java.sql.*;
import java.io.*;public class SimpleRegistration extends HttpServlet { private PreparedStatement pstmt; public void init() throws ServletException {
initializeJDBC();
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter(); String lastname = request.getParameter("lastname");
String firstname = request.getParameter("firstname");
String mi = request.getParameter("mi");
String telephone = request.getParameter("telephone");
String email = request.getParameter("email");
String street = request.getParameter("street");
String city = request.getParameter("city");
String state = request.getParameter("state");
String zip = request.getParameter("zip"); if (lastname.length() == 0 || firstname.length() == 0) {
out.println("Last Name and First Name are required");
return;
}
try {
out.println("开始储存数据");
storeStudent(lastname, firstname, mi, telephone, email, street,
city, state, zip); out.println(firstname + " " + lastname
+ "is now registered in the database");
} catch (SQLException e) {
// TODO 自动生成 catch 块
out.println("Error: " + e.toString());
} finally {
out.close();
} } private void storeStudent(String lastname, String firstname, String mi,
String telephone, String email, String street, String city,
String state, String zip) throws SQLException { pstmt.setString(1, lastname);
pstmt.setString(2, firstname);
pstmt.setString(3, mi);
pstmt.setString(4, telephone);
pstmt.setString(5, email);
pstmt.setString(6, street);
pstmt.setString(7, city);
pstmt.setString(8, state);
pstmt.setString(9, zip); pstmt.executeUpdate(); } private void initializeJDBC() {
try {
Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager
.getConnection("jdbc:mysql://localhost/mydatabase?user=root&password=8517870");
pstmt = conn.prepareStatement("insert into Address "
+ "(lastname, firstname,mi,telephone,email,street,city,"
+ "state,zip) values (?,?,?,?,?,?,?,?,?)");
} catch (ClassNotFoundException e) {
// TODO 自动生成 catch 块
JOptionPane.showMessageDialog(null, e.toString());
} catch (SQLException e) {
// TODO 自动生成 catch 块
JOptionPane.showMessageDialog(null, e.toString());
} }}编译也通过了,然后放下D:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\servlets-examples\WEB-INF\classes下。web.xml中也添加了   
         <servlet>
    <servlet-name>SimpleRegistration</servlet-name>
    <servlet-class>SimpleRegistration</servlet-class>
    </servlet>
   
    <servlet-mapping>
    <servlet-name>SimpleRegistration</servlet-name>
    <url-pattern>/servlet/SimpleRegistration</url-pattern>
    </servlet-mapping>现在情况就是运行html正常,然后提交之后页面就一直运行,一直没完成,然后数据就没插入。请问怎么解决。谢谢你们了,感激涕零!!!!!!!!!!!!

解决方案 »

  1.   

    看了你写的ACTION
    想问下,有没有提交到你的SERVLER中去?跟踪下。
      

  2.   

    找个人帮你配下eclipse debug环境,这种问题debug下都能出来的。
    想学J2EE, 先掌握开发工具才能事半工倍。
      

  3.   

    你好,楼主!、
    你得从你服务器里面报错的信息来找出问题在那儿啊。如果错误信息是404 话的,那很有可能是你Servlet的配置信息有错误啊。如果是Servlet内部错误的话,可能是链接数据库的错误啊。mysql 链接串最好加上编码方式。
      

  4.   

    这个问题Debug一下,就知道问题出在哪了!
      

  5.   

    servlet 的生命周期是先运行init() 方法然后才是根据你的请求来决定是dopost还是doget
    从你这个servlet来看,表单提交后会先走
    public void init() throws ServletException {
    initializeJDBC();
    }initializeJDBC()方法里此时的pstmt 还是空的,所以他不会给数据库插入任何数据
    还有,你doPost方法执行完后没进行任何跳转,所以提交表单后就会出现你说的“就一直运行,一直没完成”
      

  6.   

    感谢各位的帮助,小弟我初学,今天翻查各种 武术典籍 发现 mysql的connect  jar文件是要拷到common/lib目录下的 ,然后问题就解决了。谢谢你们了