目录

  1. 连接数据库的工作原理
  2. 实现数据库连接的步骤
  1. 示例代码
  2. 参考资料

连接数据库的工作原理

在 JSP 中,连接数据库通常通过 JDBC(Java Database Connectivity)实现。JSP 页面使用 Java 脚本调用 JDBC API,加载数据库驱动、建立连接、执行 SQL 查询并处理结果。另一种方式是使用 JSTL 的 <sql> 标签简化操作,但生产环境中建议将数据库逻辑放入 Servlet 或服务层。


实现数据库连接的步骤

2.1 添加数据库驱动依赖

  • MySQL 示例(Maven):
  <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.33</version>
  </dependency>

2.2 配置数据库连接参数

  • 参数
  • URL:如 jdbc:mysql://localhost:3306/mydb
  • 用户名和密码:数据库的访问凭证。
  • 示例
  String url = "jdbc:mysql://localhost:3306/mydb";
  String username = "root";
  String password = "yourpassword";

2.3 使用 JDBC 连接和查询

  • 步骤
  1. 加载驱动(Class.forName)。
  2. 创建连接(DriverManager.getConnection)。
  3. 执行查询(StatementPreparedStatement)。
  4. 处理结果(ResultSet)。
  • 示例
  <%@ page import="java.sql.*" %>
  <%
      String url = "jdbc:mysql://localhost:3306/mydb";
      String username = "root";
      String password = "yourpassword";
      try {
          Class.forName("com.mysql.cj.jdbc.Driver");
          Connection conn = DriverManager.getConnection(url, username, password);
          Statement stmt = conn.createStatement();
          ResultSet rs = stmt.executeQuery("SELECT * FROM users");
          while (rs.next()) {
              out.println("ID: " + rs.getInt("id") + ", Name: " + rs.getString("name") + "<br>");
          }
          rs.close();
          stmt.close();
          conn.close();
      } catch (Exception e) {
          out.println("数据库错误: " + e.getMessage());
      }
  %>

2.4 使用 JSTL SQL 标签(可选)

  • 步骤
  1. 配置数据源。
  2. 使用 <sql:query> 执行查询。
  • 示例
  <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
  <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
  <sql:setDataSource var="db" driver="com.mysql.cj.jdbc.Driver"
                     url="jdbc:mysql://localhost:3306/mydb"
                     user="root" password="yourpassword" />
  <sql:query var="result" dataSource="${db}">
      SELECT * FROM users;
  </sql:query>
  <c:forEach var="row" items="${result.rows}">
      ID: ${row.id}, Name: ${row.name}<br>
  </c:forEach>

示例代码

  • JDBC 示例(dbConnect.jsp):
  <%@ page contentType="text/html;charset=UTF-8" %>
  <%@ page import="java.sql.*" %>
  <h3>用户列表</h3>
  <%
      String url = "jdbc:mysql://localhost:3306/mydb";
      String username = "root";
      String password = "yourpassword";
      try {
          Class.forName("com.mysql.cj.jdbc.Driver");
          Connection conn = DriverManager.getConnection(url, username, password);
          Statement stmt = conn.createStatement();
          ResultSet rs = stmt.executeQuery("SELECT * FROM users");
          while (rs.next()) {
              out.println("ID: " + rs.getInt("id") + ", Name: " + rs.getString("name") + "<br>");
          }
          rs.close();
          stmt.close();
          conn.close();
      } catch (Exception e) {
          out.println("连接失败: " + e.getMessage());
      }
  %>
  • JSTL SQL 示例(dbJstl.jsp):
  <%@ page contentType="text/html;charset=UTF-8" %>
  <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
  <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
  <sql:setDataSource var="db" driver="com.mysql.cj.jdbc.Driver"
                     url="jdbc:mysql://localhost:3306/mydb"
                     user="root" password="yourpassword" />
  <h3>用户列表 (JSTL)</h3>
  <sql:query var="result" dataSource="${db}">
      SELECT * FROM users;
  </sql:query>
  <table border="1">
      <tr><th>ID</th><th>Name</th></tr>
      <c:forEach var="row" items="${result.rows}">
          <tr><td>${row.id}</td><td>${row.name}</td></tr>
      </c:forEach>
  </table>

参考资料

  1. Oracle 官方文档
  1. JavaTpoint JSP 教程
  1. MySQL Connector/J

注意事项

  • 安全性:避免在 JSP 中硬编码数据库凭证,建议使用数据源(DataSource)或配置文件。
  • 生产环境:推荐将数据库逻辑移到 Servlet 或服务层,避免直接在 JSP 中操作。

如果需要更复杂的查询或连接池配置,请告诉我!