servlet 连接mysql数据库时出现错误,麻烦高手帮看看
对数据库实现插入操作
浏览器显示下面信息
type Exception reportmessagedescription The server encountered an internal error () that prevented it from fulfilling this request.exceptionjavax.servlet.ServletException: Servlet.init() for servlet insert threw exception
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:877)
org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:594)
org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1675)
java.lang.Thread.run(Thread.java:619)
root causejava.lang.NullPointerException
java.lang.Class.forName0(Native Method)
java.lang.Class.forName(Class.java:169)
org.sunxin.lesson.jsp.bookstore.insert.init(insert.java:31)
javax.servlet.GenericServlet.init(GenericServlet.java:212)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:877)
org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:594)
org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1675)
java.lang.Thread.run(Thread.java:619)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.35 logs.  
addStuInfo.jsp页面
<%@ page contentType="text/html" language="java" import="java.util.*"    pageEncoding="GB2312"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>
    <script type="text/javascript"">
    function validate()
    {
    var id = document.forms[0].id.value;
    var name = document.forms[0].name.value;
    var age = document.forms[0].age.value;
    var major = document.forms[0].major.value;
    if(id <= 0){
     alert("学号不能为空,请输入学号!");
     return false;
    }
    else if(name.length <= 0){
     alert("姓名不能为空,请输入姓名!");
     return false;
    }
    else if(age <= 0){
     alert("请输入合法年龄!");
     return false;
    }        else if(major.length <= 0){
     alert("专业不能为空,请输入所学专业!");
     return false;
    }    else{
     return true;
    }
     //document.getElementById("form").submit();
    }
    </script>
  <head>
    <base href="<%=basePath%>">
    
    <title>Welcome,home</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">    
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
  </head>
  
  <body background="pic/background.jpg"><br/><br/>
  
    <center>
        <div>主页<p>
            <form name="form1" action="servlet/insert" method="post" onsubmit="return validate()">
        <h4>  学号:<input type="text" name="id" class="{required:true}"></input><br></h4>
<h4>  姓名:<input type="text" name="name"></input><br></h4>
<h4>  年龄:<input type="text" name="age"></input><br></h4>
<h4>  性别:<input type="radio" name="gender" value="男">男
       <input type="radio" name="gender" value="女">女<br></h4>
<h4>  专业:<input type="text" name="major"></input><br></h4>
<input type=submit><input type=reset>            </form>
        </div>
        </center>
  </body>
</html>servlet程序
insert.javapackage org.sunxin.lesson.jsp.bookstore;import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class insert extends HttpServlet
{
    private String url;
    private String user;
    private String password;
    private String id;
    private String name;
    private String age;
    private String gender;
    private String major;
    
    /**
     *
     * @throws ServletException
     */
    @Override
   public void init() throws ServletException
    {
        String driverClass=getInitParameter("driverClass");
        url=getInitParameter("url");
        user=getInitParameter("user");
        password=getInitParameter("password");
        try
        {
            Class.forName(driverClass);
        }
        catch(ClassNotFoundException ce)
        {
            throw new UnavailableException("加载数据库驱动失败!");
        }
    }
    
    /**
     *
     * @param req
     * @param resp
     * @throws ServletException
     * @throws IOException
     */
    @Override
    public void doPost(HttpServletRequest req, HttpServletResponse resp)
               throws ServletException,IOException
    {
        Connection conn=null;
        Statement stmt=null;
        try
        {
            conn=DriverManager.getConnection(url,user,password);
            stmt=conn.createStatement();
           // stmt.executeUpdate("create database bookstore");
            stmt.executeUpdate("use jsp");
          //  stmt.executeUpdate("create table bookinfo(id INT not null primary key,title VARCHAR(50) not null,author VARCHAR(50) not null,bookconcern VARCHAR(100) not null,publish_date DATE not null,price FLOAT(4,2) not null,amount SMALLINT,re VARCHAR(200)) ENGINE=InnoDB");
            stmt.addBatch("insert into student(id,name,age,gender,major) values(" + id + ",'" + name + "'," + age + ",'" + gender + "','" + major + "')");
           // stmt.addBatch("insert into bookinfo values(2,'JSP深入编程','李四','李四出版社','2004-10-1',56.00,20,null)");
          //  stmt.addBatch("insert into bookinfo values(3,'J2EE高级编程','王五','王五出版社','2005-3-1',78.00,10,null)");
            stmt.executeBatch();
            
            PrintWriter out=resp.getWriter();
            out.println("success!");
            out.close();
        }
        catch(SQLException se)
        {
            se.printStackTrace();
        }
        finally
        {
            if(stmt!=null)
            {
                try
                {
                    stmt.close();
                }
                catch(SQLException se)
                {
                    se.printStackTrace();
                }
                stmt=null;
            }
            if(conn!=null)
            {
                try
                {
                    conn.close();
                }
                catch(SQLException se)
                {
                    se.printStackTrace();
                }
                conn=null;
            }
        }
    }
}
部署信息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>CreateDBServlet</servlet-name>
        <servlet-class>org.sunxin.lesson.jsp.bookstore.CreateDBServlet</servlet-class>
        <init-param>
            <param-name>driverClass</param-name>
            <param-value>com.mysql.jdbc.Driver</param-value>
        </init-param>
        <init-param>
            <param-name>url</param-name>
            <param-value>jdbc:mysql://localhost:3306/mysql</param-value>
        </init-param>
        <init-param>
            <param-name>user</param-name>
            <param-value>root</param-value>
        </init-param>
        <init-param>
            <param-name>password</param-name>
            <param-value>123456</param-value>
        </init-param>
    </servlet>
    <servlet>
        <servlet-name>insert</servlet-name>
        <servlet-class>org.sunxin.lesson.jsp.bookstore.insert</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>insert1</servlet-name>
        <servlet-class>org.sunxin.lesson.jsp.bookstore.insert1</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>CreateDBServlet</servlet-name>
        <url-pattern>/CreateDBServlet</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>insert</servlet-name>
        <url-pattern>/servlet/insert</url-pattern>
    </servlet-mapping>
   
</web-app>

解决方案 »

  1.   

    sql语句那几个注释是怎么回事,是不是这里有问题
      

  2.   

    我才学了几天,代码是改别人的,那里原本是通过在代码中插入到mysql的,我想把它改成在表单里写入,即想用表单“提交”调用servlet来实现插入操作,麻烦帮看看哪里出错了
      

  3.   

    ava.lang.Class.forName(Class.java:169)
    有空指针啊!
      

  4.   

    还是不知道怎么改,就知道这里错了
    try
      {
         Class.forName(driverClass);
       }
    为什么