gpt4 book ai didi

java - 尝试从 servlet 调用 JDBC 时抛出 NullPointerException

转载 作者:行者123 更新时间:2023-11-29 03:44:02 25 4
gpt4 key购买 nike

我正在运行我的 servlet RegistrationServlet ,我尝试创建一个数据库对象

这是 servlet:

@WebServlet("/register")
public class RegistrationServlet extends HttpServlet
{
private static final long serialVersionUID = 1L;

@Override

public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException
{
// create a new connection to mysql database , with this we put the new client in the database

Database myDabatase = null;

try {
myDabatase = new Database();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} // create a new database

myDabatase.createDatabaseAndTables(); // create the tables of the database


HttpSession session = request.getSession();
synchronized(session)
{


boolean returnValue = myDabatase.addNewClient("david", "cole", "jamie", "123456789", "johnny", "blabla");

if (returnValue == true) // client was added
{
String addressPath = "/WEB-INF/results/show-name.jsp";
RequestDispatcher dispatcher = request.getRequestDispatcher(addressPath);
dispatcher.forward(request, response);
}

else if (returnValue == false) // client was not added becuase he's already registered
{

}


}
}

}

这是完整的类(class):

但是当我在我的 servlet 中执行该行时:

boolean returnValue = myDabatase.addNewClient("david", "cole", "jamie", "123456789", "johnny", "blabla");

我得到一个 NullPointerException 说:

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1711)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at db.Database.<init>(Database.java:18)
at servlets.RegistrationServlet.doGet(RegistrationServlet.java:28)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

这让我想到了这条线:

Class.forName("com.mysql.jdbc.Driver");

Database 类的构造函数中,正如您在跟踪跟踪中所见:

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

但是,当我执行与主程序相同的程序时:

public class Main {

public static void main(String [ ] args) throws Exception
{

Database myConnection = new Database();
myConnection.createDatabaseAndTables();
boolean returnValue = myConnection.addNewClient("david", "cole", "jamie", "123456789", "johnny", "blabla");

}

}

一切正常,我没有收到 NullPointerException。

那么如果我从一个 servelt 做同样的事情有什么问题呢?为什么会出现 NullPointerException?

问候

最佳答案

当您运行 servlet 时,类路径中缺少 MySQL 驱动程序。可能需要将包含驱动程序的 JAR 文件添加到 Web 应用程序的 WEB-INF/lib 目录中。

关于java - 尝试从 servlet 调用 JDBC 时抛出 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11820259/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com