jdbc增删改查代码jsp
时间: 2024-12-26 19:20:14 浏览: 10
### JSP 中使用 JDBC 实现 CRUD 操作
为了在 JSP 页面中实现基本的数据库增删改查 (CRUD) 功能,通常会结合 Servlet 和 JDBC 来完成这些操作。下面是一个简单的例子来展示如何通过 JSP 使用 JDBC 进行 CRUD 操作。
#### 创建 MySQL 数据表
假设有一个名为 `users` 的数据表用于存储用户信息:
```sql
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100)
);
```
#### 添加依赖项
确保已经按照说明将 MySQL 的 JDBC 驱动 jar 包添加到了项目的类路径中[^1]。如果希望进一步简化 JDBC 编码工作量,可以考虑引入 commons-dbutils 库[^2]。
#### 定义 User 类
定义一个 Java Bean 对象表示单个记录的数据结构:
```java
public class User {
private int id;
private String name;
private String email;
// Getters and Setters...
}
```
#### DAO 接口与实现
创建 Data Access Object (DAO),负责处理所有的数据库交互逻辑:
```java
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import javax.sql.DataSource;
import java.util.List;
public class UserDao {
private QueryRunner qr = new QueryRunner();
private DataSource dataSource; // Assume this is configured properly elsewhere
public void add(User user){
try{
qr.update(dataSource.getConnection(),
"INSERT INTO users(name, email) VALUES (?, ?)",
user.getName(), user.getEmail());
} catch(Exception e){
throw new RuntimeException(e);
}
}
public List<User> findAll(){
try{
return qr.query(
dataSource.getConnection(),
"SELECT * FROM users",
new BeanListHandler<>(User.class));
}catch(Exception e){
throw new RuntimeException(e);
}
}
public User findById(int id){
try{
return qr.query(
dataSource.getConnection(),
"SELECT * FROM users WHERE id=?",
new BeanHandler<>(User.class),id);
}catch(Exception e){
throw new RuntimeException(e);
}
}
public void update(User user){
try{
qr.update(dataSource.getConnection(),
"UPDATE users SET name=?,email=? WHERE id=?",
user.getName(),user.getEmail(),user.getId());
}catch(Exception e){
throw new RuntimeException(e);
}
}
public void deleteById(int id){
try{
qr.update(dataSource.getConnection(),"DELETE FROM users WHERE id=?",id);
}catch(Exception e){
throw new RuntimeException(e);
}
}
}
```
#### 处理请求的 Servlet
编写 Servlet 来接收来自前端页面的操作指令并调用相应的业务方法:
```java
@WebServlet("/user/*")
public class UserController extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {
processRequest(req,resp);
}
@Override
protected void doPost(HttpServletRequest req,HttpServletResponse resp)throws ServletException, IOException {
processRequest(req,resp);
}
private void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String action=request.getPathInfo().substring(1);
switch(action.toLowerCase()){
case "":
listUsers(request,response);break;
case "add":
addUser(request,response);break;
case "edit":
editUser(request,response);break;
case "delete":
deleteUser(request,response);break;
default:
notFound(response);
}
}
// Implement methods like listUsers, addUser etc.
}
```
#### 构建视图层(JSP)
最后,在 JSP 文件里构建 HTML 表格显示查询结果以及提供链接让用户执行其他 CRUD 操作:
```jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>User Management</title></head>
<body>
<h2>List of Users:</h2>
<table border='1'>
<tr><th>ID</th><th>Name</th><th>Email</th><th>Action</th></tr>
<c:forEach var="u" items="${requestScope.users}">
<tr>
<td>${u.id}</td>
<td>${u.name}</td>
<td>${u.email}</td>
<td>
<a href="/user/edit?id=${u.id}">Edit</a>
<form style="display:inline;" method="post">
<input type="hidden" name="_method" value="delete"/>
<button onclick="return confirm('Are you sure?')" formaction="/user/delete/${u.id}" type="submit">Delete</button>
</form>
</td>
</tr>
</c:forEach>
</table>
<!-- Add more forms here for adding/updating records -->
</body>
</html>
```
此示例展示了完整的流程,从设置环境到具体的功能实现。当然实际开发过程中还需要注意异常处理、安全性等问题,并且可能需要根据具体的框架或技术栈调整部分细节。
阅读全文