HTTP Status 500 - --------------------------------------------------------------------------------type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception java.lang.NullPointerException
org.jingguan.lohas.jdbc.DBConn.insertUser(DBConn.java:41)
org.jingguan.lohas.bo.ReUser.doPost(ReUser.java:30)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.13 logs.
--------------------------------------------------------------------------------Apache Tomcat/6.0.13

解决方案 »

  1.   

    上次我做了个网站,要连接TOMCAT。配置SERVLET,和JDBC
    然后我刚刚新建了WEB项目,又写了SERVLET和JDBC。会不会跟这个有关?
      

  2.   

    register.jsp
    <body>
      <form action = "servlet/ReUser" method="post">
       <table width="672" height="267" align="center" >
     
       <tr><td align="center"><br><br><br>用户注册<br><br><br><br><br></td></tr>
       <tr><td>昵称:<input type="text" name="userName"/> * 昵称由2到24个字符组成</td></tr>
       <tr><td> 密 码: <input type="password" name="userPwd"/>  * 密码必须是6到16个字符,建议使用英文和符号混合</td></tr>
           <tr><td align="center"> <input type="submit" name="userName" value="注册新用户"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="reset" name="userName" value="重写"/></td></tr>   </table>
       </form>
      </body>
      

  3.   

    servlet下的
    ReUser.java
    public class ReUser extends HttpServlet {
    /**
     * 
     */
    private static final long serialVersionUID = 1L; public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    String userName = request.getParameter("userName");
    String userPwd = request.getParameter("userPwd");
    DBConn conn = new DBConn();
    conn.getConn();
    conn.insertUser(userName,userPwd);
    conn.closeConn();
    } }
      

  4.   

    org.jingguan.lohas.jdbc.DBConn.insertUser(DBConn.java:41) 
    这里出现空指针,去看看谁是空的,修改过来就成啦
      

  5.   


    没有空指针啊。。
    public void insertUser(String userName, String userPwd) {
    try {
    stmt = conn.createStatement();
    stmt.execute("insert into users(userName,userPwd)values" + "('"
    + userName + "','" + userPwd + "')");
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
      

  6.   

    你从那个servlet中输出一下前台传过来的值,我看你的submit名字也是userName,你改个别的名字,不要和input 的那个重名
      

  7.   


    楼主你的conn对象应该没有附上值。如果这个方法里面有空指针的话,唯一可能为空的就是conn对象,检查一下获取conn的方法,以及conn对象的传递过程。
      

  8.   

    呵呵,这种NullPointerException在开发过程中会经常遇到,靠观察代码
    寻找太累人了,建议楼主debug跟踪一下,很容易就找到问题所在了。
      

  9.   

    java.lang.NullPointerException
    org.jingguan.lohas.jdbc.DBConn.insertUser(DBConn.java:41) 
    很明显的错误啊,楼主查一下看看那个地方有哪些可能出现null错误
      

  10.   

    赋值了。 这个登录模块和代码都是拷贝的我另外一个项目里面的。我那个项目里能正确和数据库交互。。在这个里就不行。。
    package org.jg.lohas.jdbc;import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;//1.加载厂商驱动
    //2.加载jdbc包
    //3.载入驱动对象
    public class DBConn {
    // 4.将驱动对象加载到内存中去
    private Connection conn;
    private Statement stmt;
    static {
    try {   
    Class.forName("com.mysql.jdbc.Driver");
    } catch (ClassNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    } // 5.建立连接
    public void getConn() {
    try {
    conn = DriverManager.getConnection(
    "jdbc:mysql://localhost:3306/test", "root", "");
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    } // 6.执行操作
    public void insertUser(String userName, String userPwd) {

    try {
    stmt = conn.createStatement();
    stmt.execute("insert into users values" + "('" + userName + "','" + userPwd + "')");
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }

    }

    public boolean IsUser(String userName, String userPwd) {
    boolean flag = false;
    try {
    stmt = conn.createStatement();
    ResultSet rs = stmt
    .executeQuery("select * from users where userName='"
    + userName + "' and userPwd='" + userPwd + "'");
    if (rs != null && rs.next()) {
    flag = true;
    } } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    return flag;
    }

    public void insertLog(String titleName,String contents){
    try {
    stmt = conn.createStatement();
    stmt.execute("insert into blog(titleName,contents)values" + "('"
    + titleName + "','" + contents + "')");
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    // 关闭
    public void closeConn() {
    try {
    if (stmt != null) {
    stmt.close();
    }
    if (conn != null) {
    conn.close();
    }
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }}
      

  11.   


        // 5.建立连接
        public Connection getConn() {
            try {
                conn = DriverManager.getConnection(
                        "jdbc:mysql://localhost:3306/test", "root", "");
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return conn;
        }
        // 6.执行操作
        public void insertUser(String userName, String userPwd) {
            
                try {
                    stmt = this.getConn().createStatement();
                    stmt.execute("insert into users values" + "('"    + userName + "','" + userPwd + "')");
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            
        }改成方法直接返回conn对象试试,我还是觉得conn是null.