Eclipse中利用JSP把mysql-connector-java-8.0.13.jar放到WebContent\WEB-INF\lib中连接MySQL数据库时Connection conn = DriverManager.getConnection(url,username,password)报错的解决办法
开发环境:
1、系统:windows 7/8/10均可
2、jdk:1.8.0_144
3、服务器:apache-tomcat-9.0.8
4、IDE:eclipse+jsp
0、网页代码如下:
<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %> <%@ page language="java" import="java.util.*"%> <%@ page import="java.sql.*" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>小脚本测试</title> <meta name="website" content="http://www.crazyit.org" /> </head> <body> <% // 注册数据库驱动 Class.forName("com.mysql.jdbc.Driver"); // 获取数据库连接 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/bookshop","root","123456"); // 创建Statement Statement stmt = conn.createStatement(); // 执行查询 ResultSet rs = stmt.executeQuery("select * from news_inf"); %> <table bgcolor="#ff0000" border="5" width="500"> <% // 遍历结果集 while(rs.next()) {%> <tr> <!-- 输出结果集 --> <td><%=rs.getString(1)%></td> <td><%=rs.getString(2)%></td> </tr> <%}%> </table> </body> </html>
在jsp页面中把mysql-connector-java-8.0.13.jar放到WebContent\WEB-INF\lib中,再连接MySQL数据库时Connection conn = DriverManager.getConnection(url,username,password)报如下的错误:
Type Exception Report
Message An exception occurred processing [connDb.jsp] at line [15]
Description The server encountered an unexpected condition that prevented it from fulfilling the request.
Exception
org.apache.jasper.JasperException: An exception occurred processing [connDb.jsp] at line [15]
// 注册数据库驱动
Class.forName("com.mysql.jdbc.Driver");
// 获取数据库连接
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/bookshop","root","123456");//这句代码报错
// 创建Statement
Statement stmt = conn.createStatement();
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:593)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:467)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
1解决办法:
1.1、将下载好的包添加进项目,操作如下:
这里我用的是eclipse,其他编译器导入方法自行搜索查询。
然后点击:Add External JARS
添加完之后如下图:
然后项目文件夹下就会多出:
1.2、具体代码修改如下:
// 注册数据库驱动 Class.forName("com.mysql.cj.jdbc.Driver"); // 获取数据库连接 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/bookshop","root","123456");
上述代码修改原因如下:
首先这种写法会报错 :
意思就是:com.mysql.jdbc.Driver 这种写法已经弃用了,最新的写法是:com.mysql.cj
.jdbc.Driver
然后这个报错就解决了。再运行,又会报错:
这个mysql官网也提到了,是因为 mysql 返回的时区有问题,所以这里需要显示指定时区:在url上加参数serverTimezone=GMT(如果想返回北京时间,则:serverTimezone=GMT%2B8)。
1.3运行结果如下:
参考链接: