jsp连接MySQL数据库完整教程(附代码示例)

admin javascript教程 3


是不是写 JSP 页面时想存数据到数据库,结果连连接都搞不定?试了好几次要么报 “ClassNotFoundException”,要么数据库连不上?新手学 JSP 最头疼的就是这一步了,明明语法都懂,一到数据库连接就卡壳。今天兔子哥就把自己踩过的坑、总结的经验全分享出来,从准备工作到代码示例,一步一步教你搞定 JSP 连接 MySQL,看完保准你少走弯路!
先说说为啥 JSP 要连数据库。你想啊,做个用户登录功能,用户名密码总得存在地方吧;搞个商品展示页面,商品信息总不能写死在代码里吧?数据库就是用来存这些数据的,JSP 负责显示,数据库负责存,两者连起来才能做动态网站。之前有个朋友学 JSP,页面做得花里胡哨,就是不会连数据库,结果项目只能看看静态效果,根本没法用,多可惜。


准备工作:这些工具和文件得备齐


连数据库前先把 “家伙事儿” 备齐,少一样都可能出问题:
必备物品推荐版本作用新手容易搞错的点
MySQL 数据库8.0 版本存数据的 “仓库”安装时没记密码,后期登录不了
JDBC 驱动 jar 包mysql-connector-java-8.0.30让 JSP 和 MySQL “说话” 的桥梁版本和 MySQL 不匹配,8.0 用老驱动会报错
开发工具Eclipse/IDEA写代码的工具没把 jar 包加到项目里
数据库可视化工具Navicat/MySQL Workbench方便建表、看数据连接时端口号填错(默认 3306)

兔子哥当初第一次连数据库时,就因为 jar 包版本不对,MySQL 用 8.0 却下了 5.1 的驱动,报了一堆奇怪的错,后来换了对应版本才好。记住啊,MySQL 8.0 以上就得用 8.x 版本的驱动,别图省事随便下一个。还有 jar 包的位置,得放在项目的 WebContent/WEB-INF/lib 文件夹里,放错地方项目找不到,肯定报 “类找不到” 的错。


第一步:先建个数据库和表,数据有地方存


总不能连个空数据库吧?先动手建个简单的用户表练手。
打开你的数据库工具,新建一个数据库,名字叫 “jspdemo”,然后执行这段 SQL 建表:
sql
CREATE DATABASE jspdemo;USE jspdemo;CREATE TABLE user (id INT PRIMARY KEY AUTO_INCREMENT,username VARCHAR(20) NOT NULL,password VARCHAR(20) NOT NULL);-- 插两条测试数据INSERT INTO user (username, password) VALUES ('test1', '123456');INSERT INTO user (username, password) VALUES ('test2', '654321');

建表时注意字段名别写错,username 和 password 都是字符串类型,长度设 20 足够用。新手常犯的错是忘了加 “USE jspdemo”,结果表建到别的数据库里去了,后面查数据当然查不到。建完表记得用 “SELECT * FROM user;” 看看数据有没有插进去,确认没问题再往下走。


第二步:写 JSP 代码连接数据库,核心步骤详解


重点来了,这部分代码得仔细看,每一步都有讲究。
先新建一个 JSP 文件,名叫 “dbTest.jsp”,代码分五步走:
  1. 加载驱动:告诉程序用哪个驱动连接 MySQL,MySQL 8.0 的驱动类是 “com.mysql.cj.jdbc.Driver”,别写成老版本的 “com.mysql.jdbc.Driver”,不然会警告。
  2. 创建连接:用 DriverManager.getConnection () 获取连接,URL 格式得记牢:“jdbc:mysql://localhost:3306/jspdemo?useSSL=false&serverTimezone=Asia/Shanghai”,这里的 “jspdemo” 是数据库名,serverTimezone 必须加,不然会报时区错误。
  3. 执行 SQL:用 Statement 或 PreparedStatement 执行查询,这里先简单点用 Statement 查 user 表的所有数据。
  4. 处理结果:用 ResultSet 接收查询结果,循环输出到页面上。
  5. 关闭资源:用完的 ResultSet、Statement、Connection 一定要关掉,不然会占资源,数据库连接数有限,不关的话多试几次就连不上了。

完整代码示例放这了,关键地方都标了注释:
jsp
<%@ page import="java.sql.*" %>

数据库连接测试

<%Connection conn = null;Statement stmt = null;ResultSet rs = null;try {// 1.加载驱动Class.forName("com.mysql.cj.jdbc.Driver");// 2.创建连接(替换成你的数据库密码)String url = "jdbc:mysql://localhost:3306/jspdemo?useSSL=false&serverTimezone=Asia/Shanghai";String user = "root";String password = "你的数据库密码";conn = DriverManager.getConnection(url, user, password);// 3.执行查询stmt = conn.createStatement();String sql = "SELECT * FROM user";rs = stmt.executeQuery(sql);// 4.输出结果out.println("");out.println("");while(rs.next()){int id = rs.getInt("id");String username = rs.getString("username");String pwd = rs.getString("password");out.println("");}out.println("
ID用户名密码
"+id+""+username+""+pwd+"
");} catch (Exception e) {// 打印错误信息,方便排查e.printStackTrace();out.println("连接失败:" + e.getMessage());} finally {// 5.关闭资源,顺序别搞反try { if(rs!=null) rs.close(); } catch(Exception e){}try { if(stmt!=null) stmt.close(); } catch(Exception e){}try { if(conn!=null) conn.close(); } catch(Exception e){}}%>

把代码里的 “你的数据库密码” 换成你自己的 MySQL 密码,然后启动 Tomcat 访问这个 JSP,能看到用户表数据就说明成功了!


常见错误解析:连不上数据库?多半是这几个原因


是不是按步骤来还是报错?别慌,看看你是不是中了这几个 “坑”:
  • ClassNotFoundException:十有八九是 jar 包没放对位置,或者驱动类名写错了,检查 lib 文件夹里有没有 jar 包,类名是不是 “com.mysql.cj.jdbc.Driver”。
  • 连接被拒绝:可能 MySQL 没启动,或者 URL 里的端口号不对,默认 3306,要是你安装时改了端口就得写改过的。
  • 时区错误:URL 里没加 serverTimezone=Asia/Shanghai,MySQL 8.0 必须指定时区,加上就好。
  • 密码错误:连接时的 password 参数和你 MySQL 的 root 密码对不上,忘了密码就去重置一下,别硬试。

兔子哥当初就因为 MySQL 没启动,对着代码查了半小时,后来才发现服务没开,现在每次连接前都先看看任务管理器里 MySQL 服务是不是在运行,省了不少事。


最后说点掏心窝子的建议。别把所有代码都堆在 JSP 里,实际开发中会把数据库连接的代码单独放一个工具类,JSP 只负责显示,这样改密码、换数据库时不用到处找代码。还有啊,关闭资源的代码一定要写在 finally 里,就算中间报错了也能保证资源被关掉。多试几次,每次报错都记下来,下次遇到就知道怎么解决了。数据库连接是 JSP 开发的基础,这步搞定了,后面做登录、注册、商品展示都顺理成章,加油,你离能做完整项目又近了一步!

标签: mysql-connector-java-8.0.30 ClassNotFoundException

发布评论 0条评论)

  • Refresh code

还木有评论哦,快来抢沙发吧~