配置Tomcat以便我可以将JSP页面连接到MySQL

时间:2010-12-01 11:58:11

标签: java mysql jsp jdbc

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

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


更新:我已尝试插入Tomcat安装root的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)

1 个答案:

答案 0 :(得分:4)

假设ClassNotFoundException指的是JDBC驱动程序com.mysql.jdbc.Driver,则意味着Connector-J JAR文件未正确放置在类路径中。

事实上,将它放在Tomcat的/lib文件夹中可以解决这个问题。但是,由于您似乎已经完成了此操作,因此这只能意味着您根本没有放置正确的JAR文件,或者您所谈论的/lib文件夹实际上是错误的文件夹。对于Tomcat 6.0或更新版本,它应该是Tomcat安装文件夹中的/lib文件夹(它应该已经存在,您不应该自己创建!)。对于Tomcat 5.5或更早版本,它应该是Tomcat安装文件夹中的/shared/lib文件夹(同样,它应该已经存在)。

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


更新:根据您的stacktrace:

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

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