java - 无法将 servlet 连接到数据库

标签 java mysql servlets model-view-controller

我实际上正在开发一个 Servlet/MVC/Mysql 迷你项目,我面临着一个非常奇怪的问题。

我有一个类Catalogue,其中包含我的模型方法,这些方法从数据库中插入、更新、删除,我还有另一个带有静态方法的类Utility这将我连接到数据库。

因此,当我在 main 方法中执行 Catalogue 方法时,它们工作正常, 但是当我通过 servlet 运行相同的方法时,我得到一个空指针异常。

这是我的日志:

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at mod.catal.Utilitaire.<clinit>(Utilitaire.java:7)
at mod.catal.Catalogue.selectCategories(Catalogue.java:46)
at mod.catal.Catalogue.selectCatByKeyword(Catalogue.java:43)
at CatalogueServlet.doPost(CatalogueServlet.java:36)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:643)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)


déc. 16, 2013 12:54:51 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet catalServlet threw exception
java.lang.NullPointerException
at mod.catal.Catalogue.selectCategories(Catalogue.java:50)
at mod.catal.Catalogue.selectCatByKeyword(Catalogue.java:43)
at CatalogueServlet.doPost(CatalogueServlet.java:36)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:643)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)

返回错误的行是:

Connection conn=Utilitaire.getConnection();
PreparedStatement ps=conn.prepareStatement(requete);

仅当我在 Web 容器上运行应用程序时,conn 返回 null,否则它可以正常工作,正如我之前提到的。

此外,我已经将 mysql_connector 添加到 Eclipse 作为 外部

最佳答案

Also I've already added mysql_connector to eclipse as an external.

从那时起你一定做错了

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

表示该类不在类路径上。获取连接器并将其添加到 WEB-INF/lib(如果该文件夹不存在,请创建它)。

将其添加为外部库可能会将其添加到 Eclipse-Tomcat 插件构建路径,但不会将其添加到在 Web 容器上运行的导出的 war 中。

关于java - 无法将 servlet 连接到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20602056/

相关文章:

java - 应用程序按电源按钮崩溃

servlets - ServletConfig 与 ServletContext

java - 使用 Apache Tomcat 7.0.40.0 时 servlet 中的文件上传错误

java - 如何在 Play JPA 中保存对象列表

java - 如何在 session 中设置值?

java - java中如何处理字节序列?

java - 实现基本的 REST API - ServletException

java - 用户将字母插入数组并控制输入Java是否有重复和顺序

php - Magento 数据库中是否有一个字段保存订单发货的日期?

MySQL - 如何在 SQL 中根据给定条件获取重复记录之一?