2015-05-04 21 views
0

我正在嘗試使用servlet和jdbc連接到MySQL數據庫的簡單登錄身份驗證。執行它Tomcat服務器上後,我收到以下錯誤:java.lang.ClassNotFoundException:在jdbc.DatabaseAccess.doGet(DatabaseAccess.java:25)

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Unknown Source) 
    at jdbc.DatabaseAccess.doGet(DatabaseAccess.java:25) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:624) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:620) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    at java.lang.Thread.run(Unknown Source) 
May 04, 2015 6:06:29 PM org.apache.catalina.core.StandardContext reload 
INFO: Reloading Context with name [/servelt] has started 
May 04, 2015 6:06:29 PM org.apache.catalina.core.StandardContext reload 
INFO: Reloading Context with name [/servelt] is completed 
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Unknown Source) 
    at jdbc.DatabaseAccess.doGet(DatabaseAccess.java:25) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:624) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:620) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    at java.lang.Thread.run(Unknown Source) 

我分享所有文件的內容: DatabaseAccess.java

package jdbc; 
import java.io.*; 
import javax.servlet.*; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.*; 
import java.sql.*; 
@WebServlet("/DatabaseAccess") 
public class DatabaseAccess extends HttpServlet 
{ 
    @Override 
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
      throws ServletException, IOException 
    { 
      resp.setContentType("text/html"); 
      PrintWriter out = resp.getWriter(); 
      String title = "Database connect"; 
      String docType ="<!doctype html>\n"; 
      out.println(docType +"<html>\n" +"<head><title>" + title + "</title></head>\n" +"<body>\n" + 
       "<h1 align=\"center\">" + title + "</h1>\n"); 
      try 
      { 
      Class.forName("com.mysql.jdbc.Driver"); 
      Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","root"); 
      Statement stmt=con.createStatement(); 
      ResultSet rs=stmt.executeQuery("select * from student"); 
      while(rs.next()){ 
       int id = rs.getInt("id"); 
       int marks = rs.getInt("marks"); 
       String name = rs.getString("name"); 
       out.println("ID: " + id + "<br>"); 
       out.println(", name: " + name + "<br>"); 
       out.println(", marks: " + marks + "<br>"); 
      } 
      out.println("</body></html>"); 
      rs.close(); 
      stmt.close(); 
      con.close(); 
     } 
     catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 

    } 

} 

的web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> 
    <display-name>servelt</display-name> 
    <welcome-file-list> 
    <welcome-file>index.html</welcome-file> 
    <welcome-file>index.htm</welcome-file> 
    <welcome-file>index.jsp</welcome-file> 
    <welcome-file>default.html</welcome-file> 
    <welcome-file>default.htm</welcome-file> 
    <welcome-file>default.jsp</welcome-file> 

    <servlet> 
    <servlet-name>DatabaseAccess</servlet-name> 
    <servlet-class>jdbc.DatabaseAccess</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>DatabaseAccess</servlet-name> 
    <url-pattern>/DatabaseAccess</url-pattern> 
    </servlet-mapping> 


</web-app> 

請幫我解決這個問題。

回答

0

你的MySQL連接器jar添加到WEB-INF \ lib文件夾通過tomcat的

0

異常加載是java.lang.ClassNotFoundException:添加相應的罐子在您的lib文件夾或類路徑

+0

已經添加到它,儘管我得到了異常 –

0

你的源代碼是correct.The例外表明,MySQL的連接器是不是在你的libraries.You必須添加MySQL JDBC連接到你的應用程序的classpath WEB -INF/lib目錄。如果你只添加類路徑和單獨運行的任何方法,不會產生異常但是如果你打電話給servlet或jsp他的方法你會得到error.For解決方案,你必須添加mysql jdbc連接器jar也WEB-INF/lib

相關問題