目录
连接数据库的工作原理
在 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 连接和查询
- 步骤:
- 加载驱动(
Class.forName
)。 - 创建连接(
DriverManager.getConnection
)。 - 执行查询(
Statement
或PreparedStatement
)。 - 处理结果(
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 标签(可选)
- 步骤:
- 配置数据源。
- 使用
<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>
参考资料
- Oracle 官方文档
- JDBC Overview
- 出站链接:https://docs.oracle.com/javase/8/docs/technotes/guides/jdbc/
- 提供 JDBC 的官方说明。
- JavaTpoint JSP 教程
- JSP Database Connectivity
- 出站链接:https://www.javatpoint.com/jsp-jdbc
- 讲解 JSP 连接数据库的方法。
- MySQL Connector/J
- MySQL JDBC Driver
- 出站链接:https://dev.mysql.com/doc/connector-j/en/
- MySQL JDBC 驱动的官方文档。
注意事项
- 安全性:避免在 JSP 中硬编码数据库凭证,建议使用数据源(
DataSource
)或配置文件。 - 生产环境:推荐将数据库逻辑移到 Servlet 或服务层,避免直接在 JSP 中操作。
如果需要更复杂的查询或连接池配置,请告诉我!
发表回复