【问题标题】:Configure Tomcat so that I can connect a JSP page to MySQL配置 Tomcat,以便我可以将 JSP 页面连接到 MySQL
【发布时间】:2011-05-18 11:14:42
【问题描述】:

我需要使用DriverManager.getConnection() 方法从JSP 页面连接到MySQL 数据库。我已将 MySQL Connector-J JAR 文件放在 Tomcat 库中。我运行了与普通 Java 应用程序相同的代码并且它可以工作,这让我认为 Tomcat 存在问题。我遇到了很多异常,第一个是ClassNotFoundException,然后是很多JasperException

您能否告诉我在配置 servlet 以从 JSP 页面与 MySQL 交互时需要遵循的步骤?


更新:我已经尝试放入Tomcat安装根目录的lib文件夹以及/WEB-INF/lib,但问题仍然存在。 jar 文件名为mysql-connector-java-5.1.13-bin.jar。这是正确的吗?

这是我得到的例外

java.lang.ClassNotFoundException: com.mysql.jdbc.driver
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491)
    at org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:128)
    at org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:66)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:169)
    at org.apache.jsp.index_jsp._jspService(index_jsp.java:75)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    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:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Thread.java:619)

【问题讨论】:

  • 哪个代码?我没有看到任何;)
  • 那么,找不到哪个类?即,显示完整的堆栈跟踪以及发生这种情况的相关代码。同时显示获取连接的代码,(仅 DriverManager.getConnection() 是不够的)
  • 您有多个用户帐户。请返回您发布此问题的 PC/网络浏览器。然后使用 OpenID 注册您的帐户,然后您就可以从其他所有 PC/网络浏览器登录同一个帐户,还可以编辑/评论您自己的问题。

标签: java mysql jsp jdbc


【解决方案1】:

假设ClassNotFoundException指的是JDBC驱动@​​987654322@,则说明Connector-J JAR文件没有正确放置在classpath中。

事实上,将它放在Tomcat 的/lib 文件夹中应该可以解决这个问题。但是,既然您似乎已经这样做了,那么这只能意味着您根本没有将正确的 JAR 文件放在那里,或者您正在谈论的 /lib 文件夹实际上是错误的文件夹。对于 Tomcat 6.0 或更高版本,它应该是 Tomcat 安装文件夹中的 /lib 文件夹(它应该已经存在,您不应该自己创建一个!)。对于 Tomcat 5.5 或更早版本,它应该是 Tomcat 安装文件夹内的 /shared/lib 文件夹(同样,它应该已经存在)。

另一种方法是将 JAR 文件放在 Web 应用程序的 /WEB-INF/lib 文件夹中。唯一的缺点是 JAR 文件将最终出现在所使用的 webapp 的类路径中。对于同一个 servletcontainer 中的所有其他 webapp,您必须复制 JAR 文件。此外,您将无法利用 Tomcat 提供的连接池工具来提高连接性能。


更新:根据您的堆栈跟踪:

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

类名错误。 Java 区分大小写。应该是com.mysql.jdbc.Driver

【讨论】:

    猜你喜欢
    • 2011-08-06
    • 1970-01-01
    • 2021-01-09
    • 1970-01-01
    • 2014-06-22
    • 2014-06-24
    • 2013-08-29
    • 2011-03-29
    相关资源
    最近更新 更多