必须先建立稳定JDBC连接,否则SQL操作会抛异常;需添加MySQL驱动jar或Maven依赖,配置正确URL参数,用Class.forName加载驱动,按ResultSet→Statement→Connection顺序关闭资源。

要在JSP页面中直接执行数据库查询、登录验证或动态展示数据,必须先建立稳定可用的JDBC连接,否则所有SQL操作都会抛出空指针或ClassNotFoundException异常。
准备MySQL JDBC驱动
下载 mysql-connector-java-8.0.33.jar(或更高兼容版本),放入Web项目的 WEB-INF/lib 目录下。若使用Maven,则在pom.xml中添加依赖:<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.33</version></dependency>。这一步漏掉,后续所有Class.forName都会失败。
确认jar包已加载:重启Tomcat后,在控制台查看是否有“Loaded JDBC driver”类日志;没有则说明驱动未生效。
编写JSP连接代码
在JSP页面顶部添加Java导入和连接逻辑:
① 使用<%@ page import="java.sql.*" %>导入必要类;
② 定义数据库连接参数:
URL必须包含useSSL=false&serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8,否则MySQL 8.0+会拒绝连接或出现中文乱码;
③ 加载驱动并获取连接:Class.forName("com.mysql.cj.jdbc.Driver");Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/testdb?useSSL=false&serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8", "root", "123456");
【注意:DriverManager.getConnection()中的URL参数顺序不能颠倒,缺一不可,否则连接超时或报时区错误】
执行简单查询并输出结果
方法一:用Statement执行静态SQL
创建Statement对象:Statement stmt = conn.createStatement();
执行查询:ResultSet rs = stmt.executeQuery("SELECT id, name FROM users");
将一个或多个视频上传至YouTube。当用户想“上传到YouTube”“发YouTube”“批量上传”“upload to YouTube”“post videos to YouTube”或发布到YouTube时使用此技能。
遍历输出:while(rs.next()) { out.print(rs.getInt("id") + " - " + rs.getString("name") + "<br>"); }
方法二:用PreparedStatement防SQL注入(推荐用于含用户输入的场景)
声明预编译语句:String sql = "SELECT * FROM users WHERE username = ?";
获取PreparedStatement:PreparedStatement ps = conn.prepareStatement(sql);
设置参数:ps.setString(1, request.getParameter("u")); // 假设从表单取值
执行并处理结果:ResultSet rs = ps.executeQuery();
关闭资源防止内存泄漏
必须按 ResultSet → Statement → Connection 逆序关闭,否则连接池耗尽后页面将卡死或报“Too many connections”错误。
在finally块中写:
if (rs != null) rs.close();
if (stmt != null) stmt.close();
if (conn != null && !conn.isClosed()) conn.close();

















