当前位置: 首页 > 知识库问答 >
问题:

无法连接到jsp中的数据库

谭健柏
2023-03-14

我正在尝试学习jsp页面中的数据库连接。下面是我的代码:

这是我的servlet:

protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    PrintWriter out = response.getWriter();

    out.println("servlet");

    String username=request.getParameter("username"), password=request.getParameter("password");
    out.println("Username: "+username+" Password: "+password);

    CheckUser(username,password);
}

protected void CheckUser(String username, String password)
{
    dbConnect.connect();

}

下面是我的dbConnect类:

import java.sql.DriverManager;

import com.mysql.jdbc.Connection;


public class dbConnect {

  static String dbUrl="jdbc:mysql://localhost:3306/Bank";
  String username="root";
  String password="";

  static Connection con=null;

  public static void connect()
  {
      try {
       Class.forName("com.mysql.jdbc.Driver").newInstance();
       con=(Connection) DriverManager.getConnection(dbUrl);
       System.out.println("Connected!");

      } 
      catch (Exception e) {

          System.out.println("not connected");

      }
  }

}

问题是,在connect()函数中,当涉及行class.forName(“com.mysql.jdbc.driver”)时。newInstance();它会产生一个错误并进入catch块。这里出了什么问题,有人能帮忙吗?多谢了。

编辑:我按照Nambari说的做了,现在我在行con=(Connection)drivermanager.getConnection(dbUrl)中得到错误;这里有个例外:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Access denied for user ''@'localhost' to database 'bank'
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:353)
at com.mysql.jdbc.Util.getInstance(Util.java:336)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1031)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:957)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2938)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:855)
at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:3337)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1217)
at com.mysql.jdbc.Connection.createNewIO(Connection.java:1930)
at com.mysql.jdbc.Connection.<init>(Connection.java:716)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:353)
at com.mysql.jdbc.Connection.getInstance(Connection.java:295)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:207)
at dbConnect.connect(dbConnect.java:18)
at loginServlet.CheckUser(loginServlet.java:41)
at loginServlet.service(loginServlet.java:36)
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(Thread.java:662)

未连接

共有1个答案

裴心思
2023-03-14

替换e.printstacktrace();而不是朴素的system.out.println();以查看错误以及有关如何解决错误的消息。顺便说一下,您似乎缺少了数据库连接jar(在本例中,是连接到MySQL的jar),这个jar和其他第三方库应该放在WEB-INF/lib目录中。

对于第二个错误,您忘记使用userpassword变量。把它改成

con=(Connection) DriverManager.getConnection(dbUrl, user, password);

注意,如果您使用数据库连接池,就可以摆脱所有这些问题。参考将jdbc连接代码放在servlet类中是个好主意吗?了解处理数据库连接的最佳方法。

 类似资料:
  • 根本原因 com.mysql.jdbc.exceptions.mysqlSyntaxerRoreXception:用户“@'localhost”对数据库“mysqluser=root”的访问被拒绝 注意:GlassFish Server Open Source Edition 4.0日志中提供了异常及其根本原因的完整堆栈跟踪。GlassFish服务器开源4.0版 我的数据库没有任何密码。我是通过以

  • 我已经写出了我的数据库,它可以运行(在MySql上),并创建了我自己的jsp程序,但当我试图测试数据库和文件之间的连接时,我发现了这个错误 HTTP状态500-无法为JSP编译类: 类型异常报告 消息无法为JSP编译类: 说明服务器遇到内部错误,无法满足此请求。 例外 org.apache.jasper.无法为JSP编译类: 在生成的java文件中的第:[14]行发生错误:[C:\Program

  • 我正在尝试与Linux中的mysql数据库连接。我知道我在包含jar文件时犯了错误。我不知道如何在linux中引用这些jar文件,就像我们在eclipse或NetBeans中引用它们一样。我正在使用Tomat7运行这些jsp页面。 类型异常报告 消息处理第9行的JSP page/first.JSP时发生异常 说明服务器遇到内部错误,导致它无法完成此请求。 例外情况 JasperException:

  • 本教程假定您已经了解了 JDBC 应用程序的工作方式。在您开始学习 JSP 数据库访问之前,请访问 Java MySQL 连接 来设置相关驱动及配置。 注意: 你可以下载本站提供的 jar 包:mysql-connector-java-5.1.39-bin.jar 下载后把 mysql-connector-java-5.1.39-bin.jar 拷贝到 tomcat 下 lib 目录。 从基本概念

  • 我现在面临这个问题已经有几天了。我正在尝试连接到计算机上的。但我没法把这事搞定。请参阅我运行的以下命令和错误消息。 警告:全局可写的配置文件“/etc/MySQL/my.cnf”被忽略错误2002(HY000):无法通过套接字“/var/run/mysqld/mysqld.sock”连接到本地MySQL服务器(111) 警告:全局可写的配置文件“/etc/MySQL/my.cnf”被忽略输入密码:

  • 我一直在努力使用数据库URL概述部分提到的以下连接字符串从Spring Boot应用程序连接H2数据库: 我还尝试了许多不同的tcp(服务器模式)连接组合,但仍然出现错误,例如“连接中断:”java。网运行Spring Boot app时,SocketTimeoutException:连接超时:localhost:9092”。 那么,如何解决这个问题并通过服务器模式连接到H2数据库呢?