2010-12-01 3 views
0

Мне нужно подключиться к базе данных MySQL с JSP-страницы с помощью метода DriverManager.getConnection(). Я поместил файл MySQL Connector-J JAR в библиотеку Tomcat. Я запустил тот же код, что и обычное Java-приложение, и он работает, что заставляет меня думать, что есть проблема с Tomcat. Я получаю много исключений, первый из которых ClassNotFoundException, followd by many JasperException.Настройка Tomcat, чтобы я мог подключить JSP-страницу к MySQL

Не могли бы вы рассказать мне о шагах, которые мне понадобятся при настройке сервлета для взаимодействия с MySQL со страницы JSP?


Update: Я попытался положить в папку Lib Tomcat установить корень, а также /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) 
+0

какой код? Я их не вижу;) – Bozho 2010-12-01 12:43:35

ответ

4

Предполагая, что ClassNotFoundException ссылается на драйвер JDBC com.mysql.jdbc.Driver, то это означает, что файл JAR соединителя-J не был помещен в путь к классам правильно.

Фактически, размещение этой папки в папке Tomcat /lib должно устранить эту проблему. Однако, поскольку вы, похоже, уже сделали это, это может означать только то, что вы вообще не поместили нужный JAR-файл, или что папка /lib, о которой вы говорите, на самом деле является неправильной папкой. В случае Tomcat 6.0 или новее это должна быть папка /lib внутри установочной папки Tomcat (она уже должна существовать, вы не должны создавать ее самостоятельно!). В случае Tomcat 5.5 или старше, это должна быть папка /shared/lib внутри установочной папки Tomcat (опять же, она уже должна быть там).

Альтернативой является размещение файла JAR в папке /WEB-INF/lib вашего веб-приложения. Единственный недостаток заключается в том, что JAR-файл будет в конечном итоге попадать только в путь к классам используемого webapp. Для всех других webapps в том же самом servletcontainer вы должны дублировать JAR-файл. Кроме того, вы не сможете использовать предоставляемые Tomcat средства объединения пулов для повышения производительности соединения.


Update: согласно вашему StackTrace:

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

Имя класса неверно. Java чувствительна к регистру. Он должен быть com.mysql.jdbc.Driver.

Смежные вопросы