软件工程网页设计与网站建设(JSP)实验 综合实训(二)修改和删除

软件工程网页设计与网站建设(JSP)实验 综合实训(二)修改和删除

软件工程、网页设计与网站建设(JSP)实验、综合实训(二)修改和删除、完整源码,可运行,运行截图。


实验名称

综合实训(二)修改和删除

实验目的

  • 掌握在 HTML 页面中插入 JSP 脚本 (Java 代码) 的方法;
  • 编写简单的 JSP 页面,初步掌握 JSP 网页的设计原理;
  • 熟练掌握 JSP 的声明、表达式、小脚本和注释的使用;
  • 理解 JSP 页面 (page) 指令和动作的语法格式;

实验内容

  1. 通过JSP页面访问数据库
  2. 修改和删除

实验原理或流程图

通过JSP页面访问数据库

使用 Java 语言通过 JDBC 连接到 MySQL 数据库,查询名为 test 的数据库中的 users 表中的所有数据,并将结果展示在 HTML 页面中的一个表格中。遍历 ResultSet 对象并生成 HTML 表格。

开始
加载MySQL JDBC驱动程序
创建数据库连接
创建 SQL 语句执行器
执行 SQL 查询语句
是否还有下一行数据
读取下一行数据
关闭结果集 执行器和连接
将数据插入 HTML 表格
结束
修改和删除

接收来自客户端的表单提交请求并将提交的数据更新到 MySQL 数据库的 users 表中。或者从 MySQL 数据库中删除指定 id 的用户信息,并输出删除结果。

Client Server JSP/Servlet JDBC MySQL 提交表单数据或请求删除数据 接收请求 建立数据库连接 返回连接对象 根据请求构造 SQL 语句 执行 SQL 语句 返回执行结果 返回执行结果 输出执行结果 Client Server JSP/Servlet JDBC MySQL

实验过程或源代码

通过JSP页面访问数据库

首先通过 Class.forName 方法加载 MySQL JDBC 驱动程序,然后使用 DriverManager.getConnection 方法建立与 MySQL 数据库的连接,其中包括数据库的 URL 地址、用户名和密码等信息。通过 con.createStatement 方法创建一个 Statement 对象,然后通过该对象执行一个 SQL 查询语句,即 SELECT * FROM users,将查询结果保存在一个 ResultSet 对象中。遍历 ResultSet 对象中的每一行数据,获取其中的 id、username、email 和 phone 等字段的值,并将这些值插入到 HTML 表格中的对应位置。最终生成的 HTML 代码中,每一行数据对应一个包含保存和删除按钮的表格行,可以通过浏览器进行编辑和操作。

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>用户管理系统</title>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
    <h1>用户管理系统</h1>
    <table border="1">
        <tr>
            <th>ID</th>
            <th>姓名</th>
            <th>邮箱</th>
            <th>电话</th>
            <th>操作</th>
        </tr>
        <%
            Class.forName("com.mysql.jdbc.Driver");
            Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?useSSL=false", "root", "123456");
            Statement stmt = con.createStatement();
            ResultSet rs = stmt.executeQuery("SELECT * FROM users");
            while (rs.next()) {
                int id = rs.getInt("id");
                String username = rs.getString("username");
                String email = rs.getString("email");
                String phone = rs.getString("phone");
        %>
        <tr>
            <td class="id"><%= id %></td>
            <td contenteditable="true" class="username"><%= username %></td>
            <td contenteditable="true" class="email"><%= email %></td>
            <td contenteditable="true" class="phone"><%= phone %></td>
            <td>
                <button>保存</button>
                <button>删除</button>
            </td>
        </tr>
        <% } %>
    </table>

    <script>
        $(function() {
            $('tr button:first-child').click(function() {
                var id = $(this).closest("tr").find(".id").text();
                var username = $(this).closest("tr").find(".username").text();
                var email = $(this).closest("tr").find(".email").text();
                var phone = $(this).closest("tr").find(".phone").text();
                var data = {
                    id: id,
                    username: username,
                    email: email,
                    phone: phone
                };
                $.get('save.jsp?'+$.param(data), function(response) {
                    alert(response);
                    location.reload();
                });
            });
            $('tr button:first-child').next().on('click', function() {
                var id = $(this).closest("tr").find(".id").text();
                var data = {id:id}
                $.get('delete.jsp?'+$.param(data), function(response) {
                    alert(response);
                    location.reload();
                });
            });
        });
    </script>

</body>
</html>

修改和删除

删除 delete.jsp

加载 MySQL JDBC 驱动。通过 DriverManager.getConnection() 方法建立数据库连接,其中包含了连接数据库的 URL、用户名和密码等信息。创建 SQL DELETE 语句,使用 ? 占位符代表待设置的参数。创建 PreparedStatement 对象,将 SQL 语句和占位符参数传入,并使用 setInt() 方法设置占位符参数的值。执行 SQL 语句,使用 executeUpdate() 方法返回受影响的行数。关闭 PreparedStatement 和数据库连接。输出删除结果,如果受影响的行数大于 0,则表示删除成功,否则表示删除失败。

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<%@ page import="java.util.*" %>
<%
    // 获取 id 参数值
    String id = request.getParameter("id");
    
    // 加载 JDBC 驱动
    Class.forName("com.mysql.jdbc.Driver");
    
    // 建立数据库连接
    Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123456");
    
    // 创建 SQL DELETE 语句
    String sql = "DELETE FROM users WHERE id = ?";
    
    // 创建 PreparedStatement 对象并设置参数
    PreparedStatement pstmt = conn.prepareStatement(sql);
    pstmt.setInt(1, Integer.parseInt(id));
    
    // 执行 SQL 语句并获取结果
    int result = pstmt.executeUpdate();
    
    // 关闭数据库连接
    pstmt.close();
    conn.close();
    
    // 输出删除结果
    if (result > 0) {
        out.println("删除成功");
    } else {
        out.println("删除失败");
    }
%>

修改 save.jsp

解析 URL 参数为一个 HashMap 对象。连接 MySQL 数据库,使用 PreparedStatement 对象执行 SQL UPDATE 语句,将表单数据更新到数据库中。如果更新操作成功,则输出“数据已保存”。如果更新操作出错,则打印错误信息到页面上。关闭 PreparedStatement 和 Connection 对象,释放资源。

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<%@ page import="java.util.*" %>
<%


    // 解析 URL 参数为一个 HashMap 对象
    Map<String, String[]> paramMap = request.getParameterMap();
    Map<String, String> params = new HashMap<>();
    for (String key : paramMap.keySet()) {
        String[] values = paramMap.get(key);
        if (values != null && values.length > 0) {
            params.put(key, values[0]);
        }
    }
    // 连接数据库
    String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8";
    String user = "root";
    String password = "123456";
    Connection conn = null;
    PreparedStatement pstmt = null;
    try {
        Class.forName("com.mysql.jdbc.Driver");
        conn = DriverManager.getConnection(url, user, password);

        // 更新数据到数据库
        String sql = "UPDATE users SET username=?, email=?, phone=? WHERE id=?";
        pstmt = conn.prepareStatement(sql);
        pstmt.setString(1, params.get("username"));
        pstmt.setString(2, params.get("email"));
        pstmt.setString(3, params.get("phone"));
        pstmt.setInt(4, Integer.parseInt(params.get("id")));
        pstmt.executeUpdate();

        out.println("数据已保存");
    } catch (Exception e) {
        e.printStackTrace();
        out.println("保存数据出错:" + e.getMessage());
    } finally {
        if (pstmt != null) {
            pstmt.close();
        }
        if (conn != null) {
            conn.close();
        }
    }
%>


实验结论及心得

通过JSP页面访问数据库,修改和删除数据库。掌握在 HTML 页面中插入 JSP 脚本 (Java 代码) 的方法;编写简单的 JSP 页面,初步掌握 JSP 网页的设计原理;熟练掌握 JSP 的声明、表达式、小脚本和注释的使用;理解 JSP 页面 (page) 指令和动作的语法格式。

附件

答疑

评论区可以答疑

源码

[https://gitcode.net/unrcvd/jsp/-/tree/master/ex3](综合实训(二)修改和删除 源码)

DB建表语句
CREATE DATABASE test CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

use test;

CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(50) NOT NULL,
  `email` varchar(50) DEFAULT NULL,
  `phone` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;

INSERT INTO users (username, email, phone) VALUES ('张三', 'zhangsan@example.com', '13800000001');
INSERT INTO users (username, email, phone) VALUES ('李四', 'lisi@example.com', '13900000002');
INSERT INTO users (username, email, phone) VALUES ('王五', 'wangwu@example.com', '15800000003');

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值