JDBC增删查改操作-jsp实验-实现页面跳转

实验 JDBC增删查改操作
一、实验目的
1、掌握JDBC增删查改MySQL或者sql server数据库表的方法。
2、在增删查改页面间跳转
二、实验内容
在MySQL或者sql server中创建一张表,之后使用JDBC进行增删查改。(功能不限),包括:
(1)表设计
(2)JDBC连接到MySQL 或者sql server
(3)suc.jsp页面列出表中所有记录。每行记录后面有删除链接,链接中附加username字段,单击后跳转到delete.jsp。另有插入、查询按钮,单击后分别跳转到insert.jsp、query.jsp。
(4)delete.jsp页面:从URL中提取username字段,删除数据库表中该username对应的记录。删除成功后,显示删除成功,之后重定向到list.jsp。
(5)insert.jsp:设计表单,单击提交按钮后,插入到数据库表中。插入成功后,显示插入成功, 之后重定向到list.jsp。
(6)query.jsp:设计表单,比如查询姓名,单击查询按钮后,检索数据库表记录,用列表显示结果。
三、实验成果
(按序编号列出各项,截图代码及运行结果以验证)
1、数据库表设计截图

-- 创建表
CREATE TABLE UserInfo (
    id INT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(50) NOT NULL,
    password VARCHAR(50) NOT NULL,
    email VARCHAR(100),
    age INT
)default CHARSET=utf8;

2、JDBC连接数据库
编写一个Java类,用于连接到MySQL数据库。在该类中,实现数据库连接的方法,以及增删查改的相关方法。

package com.wmc.javabean;

/**
 * @version 1.0
 * @Author wmc
 * @Date 2023/12/6 17:01
 * @注释
 */
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DBConnector {
    static {
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
            throw new RuntimeException("Unable to load MySQL JDBC driver. Check your classpath.");
        }
    }

    private static final String JDBC_URL = "jdbc:mysql://localhost:3306/javaweb?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC";
    private static final String JDBC_USER = "root";
    private static final String JDBC_PASSWORD = "123456";

    public static Connection getConnection() throws SQLException {
        return DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASSWORD);
    }
}

3、suc.jsp页面
在suc.jsp页面中,列出表中所有记录,并提供删除、插入、查询的链接。

<%--
  Created by IntelliJ IDEA.
  User: Lenovo
  Date: 2023/12/6
  Time: 17:03
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.sql.*" %>
<%@ page import="com.wmc.javabean.DBConnector" %>

<%
    Connection connection = null;
    Statement statement = null;
    ResultSet resultSet = null;

    try {
        connection = DBConnector.getConnection();
        statement = connection.createStatement();
        resultSet = statement.executeQuery("SELECT * FROM UserInfo");

        while (resultSet.next()) {
            out.println("ID: " + resultSet.getInt("id") + "<br>");
            out.println("Username: " + resultSet.getString("username") + "<br>");
            out.println("Password: " + resultSet.getString("password") + "<br>");
            out.println("Email: " + resultSet.getString("email") + "<br>");
            out.println("Age: " + resultSet.getInt("age") + "<br>");

            // Add delete link
            out.println("<a href='/JdbcCrud/delete.jsp?username=" + resultSet.getString("username") + "'>删除</a><br><br>");
        }
%>

<a href="/JdbcCrud/insert.jsp">插入</a><br>
<a href="/JdbcCrud/query.jsp">查询</a><br>

<%
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        try {
            if (resultSet != null) resultSet.close();
            if (statement != null) statement.close();
            if (connection != null) connection.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
%>

4、delete.jsp页面
在delete.jsp页面中,从URL中提取username字段,删除数据库表中该username对应的记录。

<%--
  Created by IntelliJ IDEA.
  User: Lenovo
  Date: 2023/12/6
  Time: 17:08
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.sql.*" %>
<%@ page import="com.wmc.javabean.DBConnector " %>

<%
  String username = request.getParameter("username");

  if (username != null) {
    Connection connection = null;
    PreparedStatement preparedStatement = null;

    try {
      connection = DBConnector.getConnection();
      String deleteQuery = "DELETE FROM UserInfo WHERE username = ?";
      preparedStatement = connection.prepareStatement(deleteQuery); // 防止SQL注入
      preparedStatement.setString(1, username);
      int rowsAffected = preparedStatement.executeUpdate();

      if (rowsAffected > 0) {
        out.println("删除成功!");
        response.sendRedirect("suc.jsp");
      } else {
        out.println("删除失败!");
      }
    } catch (SQLException e) {
      e.printStackTrace();
    } finally {
      try {
        if (preparedStatement != null) preparedStatement.close();
        if (connection != null) connection.close();
      } catch (SQLException e) {
        e.printStackTrace();
      }
    }
  }
%>

5、insert.jsp
在insert.jsp页面中,设计表单,插入数据到数据库表中。

<%--
  Created by IntelliJ IDEA.
  User: Lenovo
  Date: 2023/12/6
  Time: 17:11
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" %>
<%@ page import="java.sql.*" %>
<%@ page import="com.wmc.javabean.DBConnector " %>

<!-- 前端表单输入框 -->
<%@page language="java" pageEncoding="utf-8"%>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>插入</title>
</head>
<body>
<form action="insert.jsp" method="post">
    用户名: <input type="text" name="username" required><br>
    密码: <input type="password" name="password" required><br>
    邮箱: <input type="email" name="email"><br>
    年龄: <input type="number" name="age"><br>
    <input type="submit" value="Insert">
</form>
</body>
</html>


<%
    if (request.getMethod().equals("POST")) {
        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");

        String username = request.getParameter("username");
        String password = request.getParameter("password");
        String email = request.getParameter("email");
        int age = Integer.parseInt(request.getParameter("age"));

        Connection connection = null;
        PreparedStatement preparedStatement = null;

        try {
            connection = DBConnector.getConnection();
            String insertQuery = "INSERT INTO UserInfo (username, password, email, age) VALUES (?, ?, ?, ?)";
            preparedStatement = connection.prepareStatement(insertQuery);
            preparedStatement.setString(1, username);
            preparedStatement.setString(2, password);
            preparedStatement.setString(3, email);
            preparedStatement.setInt(4, age);

            int rowsAffected = preparedStatement.executeUpdate();

            if (rowsAffected > 0) {
                out.println("插入成功!");
                response.sendRedirect("suc.jsp");
            } else {
                out.println("插入失败!");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                if (preparedStatement != null) preparedStatement.close();
                if (connection != null) connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
%>


6、query.jsp
在query.jsp页面中,设计表单,查询数据库表记录。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.sql.*" %>
<%@ page import="com.wmc.javabean.DBConnector" %>

<!-- HTML form for query -->
<form action="query.jsp" method="get">
  通过用户名查询: <input type="text" name="username" required>
  <input type="submit" value="查询">
</form>

<%
  if ("GET".equals(request.getMethod())) {
    String username = request.getParameter("username");

    Connection connection = null;
    PreparedStatement preparedStatement = null;
    ResultSet resultSet = null;

    try {
      connection = DBConnector.getConnection();
      String query = "SELECT * FROM userInfo WHERE username = ?";
      preparedStatement = connection.prepareStatement(query);
      preparedStatement.setString(1, username);

      resultSet = preparedStatement.executeQuery();

      // Move resultSet.next() outside the loop to check if there are results
      if (resultSet.next()) {
        // Print the first row of the result
        out.println("ID: " + resultSet.getInt("id") + "<br>");
        out.println("Username: " + resultSet.getString("username") + "<br>");
        out.println("Password: " + resultSet.getString("password") + "<br>");
        out.println("Email: " + resultSet.getString("email") + "<br>");
        out.println("Age: " + resultSet.getInt("age") + "<br><br>");

        // Loop through the remaining rows
        while (resultSet.next()) {
          out.println("ID: " + resultSet.getInt("id") + "<br>");
          out.println("Username: " + resultSet.getString("username") + "<br>");
          out.println("Password: " + resultSet.getString("password") + "<br>");
          out.println("Email: " + resultSet.getString("email") + "<br>");
          out.println("Age: " + resultSet.getInt("age") + "<br><br>");
        }
      } else {
        out.println("未找到匹配的记录。");
      }
    } catch (SQLException e) {
      e.printStackTrace();
    } finally {
      try {
        if (resultSet != null) resultSet.close();
        if (preparedStatement != null) preparedStatement.close();
        if (connection != null) connection.close();
      } catch (SQLException e) {
        e.printStackTrace();
      }
    }
  }
%>

运行结果:
主页面:
在这里插入图片描述

点击插入:
在这里插入图片描述
在这里插入图片描述

点击查询:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

删除:

在这里插入图片描述
在这里插入图片描述

三、实验心得
实验总结: 数据库表设计:
了解如何设计数据库表,包括字段的类型、约束、主键等。 设计良好的数据库表结构对数据管理和操作至关重要。 JDBC连接数据库:
了解如何使用JDBC连接MySQL或SQL Server数据库。 JDBC提供了Connection、PreparedStatement等类,用于执行SQL语句。 页面间跳转:
学会使用JSP页面创建用户界面,通过按钮和链接实现页面间的跳转。 使用response.sendRedirect()实现页面跳转。 数据的增删查改:
实现了基本的增删查改功能,了解如何使用SQL语句进行数据操作。 使用PreparedStatement防止SQL注入攻击。 异常处理:
学会在JSP中处理SQL异常,保证程序的稳定性。 使用try-catch块捕获异常,及时定位问题。 页面显示与编码:
确保前端页面和后端代码的字符编码一致,避免中文乱码问题。 设置页面的contentType为UTF-8。 心得体会: 理解数据库设计原则:
学会设计规范的数据库表结构,合理选择字段类型,设定适当的约束。 熟悉JDBC基础操作:
通过实践掌握了JDBC的基本操作,包括连接数据库、执行SQL语句、处理结果集等。 强化编程实践:
实验中涉及了前后端的交互,强化了编程实践和代码调试的能力。 异常处理重要性:
了解异常处理的重要性,能够在程序中添加合适的异常处理代码,增强程序的健壮性。 界面交互设计:
通过实现页面跳转和用户交互,理解了如何设计友好的界面,提升用户体验。 对整个开发流程的认识:
了解了从数据库设计到前后端交互再到页面显示的整个开发流程,对于全栈开发有了更全面的认识。
总体而言,通过实践项目,你应该对JDBC的基本操作、数据库设计和前后端交互有了更深入的理解,这对于进一步学习和实践Java Web开发是很有帮助的。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: JSPJavaServer Pages)是一种动态网页技术,可以将Java代码嵌入到HTML页面中,用于生成动态内容。 Servlet是Java编写的服务器端程序,用于处理客户端请求并返回响应。 JDBCJava Database Connectivity)是Java提供的一种访问数据库的标准接口,可以通过Java程序连接和操作各种关系型数据库。 增删查改是数据库操作的四种基本操作,分别是插入数据、删除数据、查询数据和更新数据。在Java中,可以通过JDBC连接数据库,使用SQL语句进行增删查改操作。 ### 回答2: JSPJava Server Pages)、Servlet、JDBCJava Database Connectivity)是Java Web开发中常用的技术。其中,JSP是用于生成Web页面的技术,Servlet是用于处理服务器端请求的技术,JDBC是用于与数据库进行交互的技术。在Java Web应用程序中,经常需要对数据库进行增删查改操作,以下是详细说明: 1.数据的增加 在Java Web开发中,一般使用JDBC来连接数据库进行数据操作。增加数据操作一般使用Insert语句。在Servlet中,可以通过request对象获取到需要保存的参数值,然后调用JDBC提供的API来进行数据插入。 2.数据的删除 删除数据也是通过JDBC来进行数据操作,使用Delete语句。在Servlet中,可以通过request对象获取到需要删除的参数值,然后调用JDBC提供的API来进行数据删除。 3.数据的查询 查询数据是常见的操作,也是通过JDBC来进行数据操作,使用Select语句。在Servlet中,可以通过request对象获取到需要查询的参数值,然后调用JDBC提供的API来进行数据查询。查询结果一般保存为List或Bean对象,最后通过request对象将结果传递给JSP页面进行显示。 4.数据的修改 修改数据也是使用JDBC来进行操作,使用Update语句。在Servlet中,可以通过request对象获取到需要修改的参数值,然后调用JDBC提供的API来进行数据修改。 总结起来,JSP、Servlet、JDBC都是Java Web开发中非常重要的技术,通过它们的综合应用可以实现各种增删查改的数据操作。如何有效利用这些技术,有效开发出稳定高效的Java Web应用程序,需要一定的实践经验和积累。 ### 回答3: 首先要了解的是JSP、Servlet和JDBCJSPJava服务器页面的缩写,Servlet是Java Servlet的缩写,JDBCJava Database Connectivity的缩写。JSP和Servlet是Java Web开发的重要组成部分,而JDBC是用于Java与数据库的连接和操作的工具。 在Java Web开发中,我们通常需要从数据库中获取数据、插入数据、修改数据和删除数据。这时我们就需要使用JDBC来连接数据库,JSP和Servlet来与用户交互实现数据的增删查改。 增加数据,通常使用表单来让用户输入数据,通过Servlet获取到这些数据,再使用JDBC的插入语句将数据插入到数据库中。 删除数据,通常通过用户的操作来确定要删除哪条数据,然后使用JDBC的删除语句将该数据从数据库中删除。 查找数据,通常通过用户的操作来确定要查找哪些数据,然后使用JDBC的查询语句从数据库中获取到这些数据,再通过JSP来展示给用户。 修改数据,通常需要先使用JDBC获取到要修改的数据,再通过Servlet获取到用户输入的新数据,最后使用JDBC的更新语句将数据更新到数据库中。 需要注意的是,在使用JDBC连接数据库时,需要先创建数据库连接、创建Statement或PreparedStatement对象,再执行相关的SQL语句。在用完之后,一定要关闭Statement、PreparedStatement和Connection对象,以防止内存泄漏。 总之,JSP、Servlet和JDBCJava Web开发中必不可少的技术。通过它们的结合使用,开发出能够与用户交互并对数据库进行操作的Web应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

余生羁绊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值