jsp中,增删改查应该怎么实现
时间: 2024-03-16 11:43:00 浏览: 17
在 JSP 中实现增删改查操作通常需要使用 Java Servlet 和 JDBC 技术。下面是一个简单的示例代码,演示如何在 JSP 页面中实现增删改查操作:
### 添加数据
#### JSP 页面
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>添加学生信息</title>
</head>
<body>
<h1>添加学生信息</h1>
<form method="post" action="addStudent">
<label>姓名:</label>
<input type="text" name="name"><br>
<label>年龄:</label>
<input type="text" name="age"><br>
<label>性别:</label>
<input type="radio" name="gender" value="male">男
<input type="radio" name="gender" value="female">女<br>
<input type="submit" value="添加">
</form>
</body>
</html>
```
#### Servlet 代码
```java
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/addStudent")
public class AddStudentServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String name = request.getParameter("name");
int age = Integer.parseInt(request.getParameter("age"));
String gender = request.getParameter("gender");
Connection conn = null;
PreparedStatement stmt = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "password");
stmt = conn.prepareStatement("INSERT INTO students(name, age, gender) VALUES (?, ?, ?)");
stmt.setString(1, name);
stmt.setInt(2, age);
stmt.setString(3, gender);
stmt.executeUpdate();
response.sendRedirect("viewAllStudents.jsp");
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
response.sendRedirect("addStudent.jsp");
} finally {
try {
if(stmt != null) stmt.close();
if(conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
```
### 删除数据
#### JSP 页面
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>删除学生信息</title>
</head>
<body>
<h1>删除学生信息</h1>
<form method="post" action="deleteStudent">
<label>学生ID:</label>
<input type="text" name="id"><br>
<input type="submit" value="删除">
</form>
</body>
</html>
```
#### Servlet 代码
```java
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/deleteStudent")
public class DeleteStudentServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int id = Integer.parseInt(request.getParameter("id"));
Connection conn = null;
PreparedStatement stmt = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "password");
stmt = conn.prepareStatement("DELETE FROM students WHERE id = ?");
stmt.setInt(1, id);
stmt.executeUpdate();
response.sendRedirect("viewAllStudents.jsp");
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
response.sendRedirect("deleteStudent.jsp");
} finally {
try {
if(stmt != null) stmt.close();
if(conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
```
### 修改数据
#### JSP 页面
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>修改学生信息</title>
</head>
<body>
<h1>修改学生信息</h1>
<form method="post" action="updateStudent">
<label>学生ID:</label>
<input type="text" name="id"><br>
<label>姓名:</label>
<input type="text" name="name"><br>
<label>年龄:</label>
<input type="text" name="age"><br>
<label>性别:</label>
<input type="radio" name="gender" value="male">男
<input type="radio" name="gender" value="female">女<br>
<input type="submit" value="修改">
</form>
</body>
</html>
```
#### Servlet 代码
```java
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/updateStudent")
public class UpdateStudentServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int id = Integer.parseInt(request.getParameter("id"));
String name = request.getParameter("name");
int age = Integer.parseInt(request.getParameter("age"));
String gender = request.getParameter("gender");
Connection conn = null;
PreparedStatement stmt = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "password");
stmt = conn.prepareStatement("UPDATE students SET name = ?, age = ?, gender = ? WHERE id = ?");
stmt.setString(1, name);
stmt.setInt(2, age);
stmt.setString(3, gender);
stmt.setInt(4, id);
stmt.executeUpdate();
response.sendRedirect("viewAllStudents.jsp");
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
response.sendRedirect("updateStudent.jsp");
} finally {
try {
if(stmt != null) stmt.close();
if(conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
```
### 查找数据
#### JSP 页面
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>查找学生信息</title>
</head>
<body>
<h1>查找学生信息</h1>
<form method="get" action="searchStudent">
<label>关键字:</label>
<input type="text" name="keyword"><br>
<input type="submit" value="查找">
</form>
</body>
</html>
```
#### Servlet 代码
```java
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/searchStudent")
public class SearchStudentServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String keyword = request.getParameter("keyword");
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
List<Student> studentList = new ArrayList<>();
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "password");
stmt = conn.prepareStatement("SELECT * FROM students WHERE name LIKE ?");
stmt.setString(1, "%" + keyword + "%");
rs = stmt.executeQuery();
while(rs.next()) {
Student student = new Student();
student.setId(rs.getInt("id"));
student.setName(rs.getString("name"));
student.setAge(rs.getInt("age"));
student.setGender(rs.getString("gender"));
studentList.add(student);
}
request.setAttribute("studentList", studentList);
request.getRequestDispatcher("viewAllStudents.jsp").forward(request, response);
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
response.sendRedirect("searchStudent.jsp");
} finally {
try {
if(rs != null) rs.close();
if(stmt != null) stmt.close();
if(conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
```
在上述示例代码中,我们创建了四个不同的 Servlet 来处理添加、删除、修改、和查找操作。对于每个操作,我们都首先获取用户输入的数据,然后使用 JDBC 技术将数据插入到数据库中或者从数据库中获取数据,最后将结果发送回到 JSP 页面上进行显示。请注意,上述示例代码仅提供了基本的操作,您需要编写适当的 Java 代码来执行实际操作。