使用JSP实现MySQL数据库管理,需要结合JDBC技术和JSP页面交互功能。以下是关键步骤和示例代码:
一、基础环境准备
- 数据库配置:创建MySQL数据库(示例数据库名
test_db)
CREATE DATABASE test_db;
USE test_db;
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE
);
- JDBC驱动:下载MySQL Connector/J并放入
WEB-INF/lib/
二、核心功能实现
1. 数据库连接类 DBConnection.jsp
<%@ page import="java.sql.*" %>
<%!
public Connection getConnection() throws SQLException {
String url = "jdbc:mysql://localhost:3306/test_db?useSSL=false";
String user = "root";
String password = "your_password";
return DriverManager.getConnection(url, user, password);
}
%>
2. 数据查询功能 listUsers.jsp
<%@ include file="DBConnection.jsp" %>
<table border="1">
<tr>
<th>ID</th>
<th>Name</th>
<th>Email</th>
</tr>
<%
try (Connection conn = getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM users")) {
while (rs.next()) {
%>
<tr>
<td><%= rs.getInt("id") %></td>
<td><%= rs.getString("name") %></td>
<td><%= rs.getString("email") %></td>
</tr>
<%
}
} catch (SQLException e) {
e.printStackTrace();
}
%>
</table>
3. 数据插入功能 addUser.jsp
<%@ include file="DBConnection.jsp" %>
<%
if ("POST".equals(request.getMethod())) {
String name = request.getParameter("name");
String email = request.getParameter("email");
try (Connection conn = getConnection();
PreparedStatement pstmt = conn.prepareStatement(
"INSERT INTO users (name, email) VALUES (?, ?)")) {
pstmt.setString(1, name);
pstmt.setString(2, email);
pstmt.executeUpdate();
response.sendRedirect("listUsers.jsp");
} catch (SQLException e) {
e.printStackTrace();
}
}
%>
<form method="POST">
Name: <input type="text" name="name"><br>
Email: <input type="email" name="email"><br>
<input type="submit" value="Add User">
</form>
三、高级功能扩展
- 分页查询:
SELECT * FROM users LIMIT <%= (page-1)*pageSize %>, <%= pageSize %>
- 事务处理:
<%
try (Connection conn = getConnection()) {
conn.setAutoCommit(false);
// 执行多个SQL操作
conn.commit();
} catch (SQLException e) {
conn.rollback();
}
%>
- 连接池配置:在
context.xml中添加:
<Resource
name="jdbc/testDB"
auth="Container"
type="javax.sql.DataSource"
maxTotal="100"
maxIdle="30"
driverClassName="com.mysql.cj.jdbc.Driver"
url="jdbc:mysql://localhost:3306/test_db"
/>
四、安全注意事项
-
防止SQL注入:
- 使用
PreparedStatement替代字符串拼接
PreparedStatement pstmt = conn.prepareStatement( "SELECT * FROM users WHERE email = ?"); pstmt.setString(1, request.getParameter("email")); - 使用
-
输入验证:
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> <c:if test="${fn:length(param.email) > 100}"> <p>Email too long!</p> </c:if> -
错误处理:
<%@ page errorPage="error.jsp" %>
五、部署运行
- 将JSP文件放入Tomcat的
webapps/YourProject/ - 启动Tomcat服务器
- 访问
http://localhost:8080/YourProject/addUser.jsp
最佳实践建议:
- 使用MVC模式分离业务逻辑(Servlet)和视图(JSP)
- 通过DAO模式封装数据库操作
- 重要操作添加权限验证
- 敏感数据使用HTTPS传输
完整项目结构示例:
WebContent/
├── WEB-INF/
│ ├── lib/mysql-connector-java-8.0.28.jar
│ └── web.xml
├── users/
│ ├── listUsers.jsp
│ ├── addUser.jsp
│ └── editUser.jsp
└── DBConnection.jsp
708

被折叠的 条评论
为什么被折叠?



