java servlets页面中的空指针异常

时间:2015-10-12 06:28:50

标签: java servlets jdbc

我是Java servlets的初学者...我试图将servlet与数据库连接但是NullPointerException

我试图解决这个问题,但没有运气......

错误是

  

显示java.lang.NullPointerException     JDBCServlet.service(JDBCServlet.java:(42)

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.sql.DriverManager;//1
import java.sql.Connection;//2
import java.sql.SQLException;
import java.sql.Statement;//3
import java.sql.ResultSet;//4

public class JDBCServlet extends HttpServlet {
    Connection con;
     Statement st;
    ResultSet rs;
    String sql;

    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("JDBC Servlet Invoked");

        //1st step: load JDBC MySql Drivers
        try {
            Class.forName("com.mysql.jdbc.Driver");
            System.out.println("Drivers Loaded");
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        //2nd Step: create a connection
        try {
            con = DriverManager.getConnection("jdbc:mysql://localhost:3306/webtech1", "root", "123456");
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        String sql = "select * from user";
        try {
            st = con.createStatement();
            rs = st.executeQuery(sql);

            while(rs.next()){

                System.out.println(rs.getInt("id"));
                System.out.println(rs.getString("firstName"));
                System.out.println(rs.getString("lastName"));
                System.out.println(rs.getString("email"));
                System.out.println(rs.getString("password"));
                System.out.println(rs.getString("createdate"));
            }

        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }   
    }
}

2 个答案:

答案 0 :(得分:0)

请对con,st,rs个对象进行空检查。并且还要仔细检查你的mysql连接字符串。

答案 1 :(得分:0)

您已初始化String sql两次。一个作为财产,一个作为地方变量,即

String sql = "select * from user";

稍后,您正在调用sql(实例变量),其值确实为null,这会导致null pointer exception。您只需要从String方法的正文中删除service声明。