鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: zqy173590939

[学习笔记] 专用

[复制链接]
发表于 2024-1-6 23:07:10 | 显示全部楼层
FishC 发表于 2024-1-5 15:15
抱歉,之前的回答有些内容被截断了。根据你提供的代码,该系统是一个教师岗位管理系统,主要由管理员和 ...

private void createManagerOperationPage(Stage stage){
        Pane MangerOperationRoot = new Pane();

        Image backgroundImage = new Image("file:src/main/java/img/beijing.jpg");
        ImageView backgroundView = new ImageView(backgroundImage);
        backgroundView.setFitWidth(800);
        backgroundView.setFitHeight(600);
        MangerOperationRoot.getChildren().add(backgroundView);
        // 创建菜单栏
        MenuBar menuBar = new MenuBar();
        Menu exitMenu = new Menu("退出系统");
        MenuItem exitMenuItem = new MenuItem("退出系统");
        exitMenu.getItems().add(exitMenuItem);

        exitMenuItem.setOnAction(actionEvent -> {
            stage.setScene(root.getScene());
        });
        Menu queryFlowerMenu = new Menu("查询鲜花");
        MenuItem queryFlowerItem = new MenuItem("查询");
        queryFlowerMenu.getItems().add(queryFlowerItem);
        queryFlowerItem.setOnAction(actionEvent -> {
            MangerOperationRoot.getChildren().removeIf(node -> node != menuBar && node != backgroundView);
            queryFlower(MangerOperationRoot,0);
        });
        Menu addFlowerMenu = new Menu("增加鲜花");
        MenuItem addFlowItem = new MenuItem("增加鲜花");
        MenuItem addStockFlowItem = new MenuItem("进货");
        addFlowerMenu.getItems().addAll(addFlowItem,addStockFlowItem);
        addFlowItem.setOnAction(actionEvent -> {
            MangerOperationRoot.getChildren().removeIf(node -> node != menuBar && node != backgroundView);
            addFlow(MangerOperationRoot);
        });
        addStockFlowItem.setOnAction(actionEvent -> {
            MangerOperationRoot.getChildren().removeIf(node -> node != menuBar && node != backgroundView);
            purchase(MangerOperationRoot);
        });
        Menu deleteFlowerMenu = new Menu("删除鲜花");
        MenuItem deleteFlowItem = new MenuItem("删除鲜花");
        deleteFlowerMenu.getItems().add(deleteFlowItem);
        deleteFlowItem.setOnAction(actionEvent -> {
            MangerOperationRoot.getChildren().removeIf(node -> node != menuBar && node != backgroundView);
            deleteFlower(MangerOperationRoot);
        });
        Menu changeFlowMenu = new Menu("修改鲜花");
        MenuItem changeFlowItem = new MenuItem("修改鲜花");
        changeFlowMenu.getItems().add(changeFlowItem);
        changeFlowItem.setOnAction(actionEvent -> {
            MangerOperationRoot.getChildren().removeIf(node -> node != menuBar && node != backgroundView);
            changeFlower(MangerOperationRoot);
        });
        Menu financialStatement = new Menu("财务报表");
        MenuItem financialStatementItem = new MenuItem("查看财务报表");
        financialStatement.getItems().add(financialStatementItem);
        financialStatementItem.setOnAction(actionEvent -> {
            MangerOperationRoot.getChildren().removeIf(node -> node != menuBar && node != backgroundView);
            seeFinancialStatement(MangerOperationRoot);
        });
        Menu manageAccountMenu = new Menu("管理账号");
        MenuItem addAccountItem = new MenuItem("添加管理员");
        addAccountItem.setOnAction(actionEvent -> {
            MangerOperationRoot.getChildren().removeIf(node -> node != menuBar && node != backgroundView);
            TextInputDialog dialog = new TextInputDialog();
            dialog.setTitle("请输入用户名");
            dialog.setHeaderText("请输入用户名:");
            String userName = dialog.showAndWait().orElse("");
            Connection connection = null;
            try {
                connection = DriverManager.getConnection(url, user, dbPassword);
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
            if (!userName.isEmpty()) {
                // 添加查询语句,查询数据库中是否存在该用户名
                String querySql = "SELECT * FROM usertable WHERE username = ?";
                try (PreparedStatement queryStatement = connection.prepareStatement(querySql)) {
                    queryStatement.setString(1, userName);
                    ResultSet resultSet = queryStatement.executeQuery();
                    if (!resultSet.next()) {
                        // 如果查询结果为空,则弹出提示框提醒无此账号
                        Alert alert = new Alert(Alert.AlertType.INFORMATION);
                        alert.setTitle("提示");
                        alert.setHeaderText(null);
                        alert.setContentText("无此账号");
                        alert.showAndWait();
                    }
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                String updateSql = "UPDATE usertable SET rightcontrol = ? WHERE username = ?";
                try (PreparedStatement updateStatement = connection.prepareStatement(updateSql)) {
                    updateStatement.setInt(1, 0);
                    updateStatement.setString(2, userName);
                    updateStatement.executeUpdate();
                    // 如果查询结果为空,则弹出提示框提醒无此账号
                    Alert alert = new Alert(Alert.AlertType.INFORMATION);
                    alert.setTitle("提示");
                    alert.setHeaderText(null);
                    alert.setContentText("添加成功");
                    alert.showAndWait();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        });
        MenuItem deleteAccountItem = new MenuItem("删除管理员");
        manageAccountMenu.getItems().addAll(addAccountItem,deleteAccountItem);
        deleteAccountItem.setOnAction(actionEvent -> {
            MangerOperationRoot.getChildren().removeIf(node -> node != menuBar && node != backgroundView);
            TextInputDialog dialog = new TextInputDialog();
            dialog.setTitle("请输入用户名");
            dialog.setHeaderText("请输入用户名:");
            String userName = dialog.showAndWait().orElse("");
            Connection connection = null;
            try {
                connection = DriverManager.getConnection(url, user, dbPassword);
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
            if (!userName.isEmpty()) {
                if (userName.equals("000001")){
                    // 如果查询结果为空,则弹出提示框提醒无此账号
                    Alert alert = new Alert(Alert.AlertType.INFORMATION);
                    alert.setTitle("提示");
                    alert.setHeaderText(null);
                    alert.setContentText("该账号不可被删除");
                    alert.showAndWait();
                }else{
                    // 添加查询语句,查询数据库中是否存在该用户名
                    String querySql = "SELECT * FROM usertable WHERE username = ?";
                    try (PreparedStatement queryStatement = connection.prepareStatement(querySql)) {
                        queryStatement.setString(1, userName);
                        ResultSet resultSet = queryStatement.executeQuery();
                        if (!resultSet.next()) {
                            // 如果查询结果为空,则弹出提示框提醒无此账号
                            Alert alert = new Alert(Alert.AlertType.INFORMATION);
                            alert.setTitle("提示");
                            alert.setHeaderText(null);
                            alert.setContentText("无此账号");
                            alert.showAndWait();
                        }
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                    String updateSql = "UPDATE usertable SET rightcontrol = ? WHERE username = ?";
                    try (PreparedStatement updateStatement = connection.prepareStatement(updateSql)) {
                        updateStatement.setInt(1, 1);
                        updateStatement.setString(2, userName);
                        updateStatement.executeUpdate();
                        // 如果查询结果为空,则弹出提示框提醒无此账号
                        Alert alert = new Alert(Alert.AlertType.INFORMATION);
                        alert.setTitle("提示");
                        alert.setHeaderText(null);
                        alert.setContentText("删除成功");
                        alert.showAndWait();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
            }
        });
        menuBar.getMenus().addAll(exitMenu,addFlowerMenu,deleteFlowerMenu,changeFlowMenu,queryFlowerMenu,manageAccountMenu,financialStatement);
        MangerOperationRoot.getChildren().add(menuBar);
        Scene MangerOperationScene = new Scene(MangerOperationRoot,800,600);
        stage.setScene(MangerOperationScene);
    }

    private void seeFinancialStatement(Pane managerOperationRoot) {
        BorderPane borderPane = new BorderPane();

        TableView<Flower> financialTable = new TableView<>();

        TableColumn<Flower, String> idColumn = new TableColumn<>("ID");
        idColumn.setCellValueFactory(new PropertyValueFactory<>("id"));

        TableColumn<Flower, String> flowerNameColumn = new TableColumn<>("Flower Name");
        flowerNameColumn.setCellValueFactory(new PropertyValueFactory<>("flowername"));

        TableColumn<Flower, Integer> priceColumn = new TableColumn<>("Price");
        priceColumn.setCellValueFactory(new PropertyValueFactory<>("price"));

        TableColumn<Flower, Integer> stockColumn = new TableColumn<>("Stock");
        stockColumn.setCellValueFactory(new PropertyValueFactory<>("stock"));

        TableColumn<Flower, Integer> salesVolumeColumn = new TableColumn<>("Sales Volume");
        salesVolumeColumn.setCellValueFactory(new PropertyValueFactory<>("salesvolume"));

        TableColumn<Flower, Integer> purchasingPriceColumn = new TableColumn<>("Purchasing Price");
        purchasingPriceColumn.setCellValueFactory(new PropertyValueFactory<>("purchasingPrice"));

        TableColumn<Flower, Integer> profitColumn = new TableColumn<>("Profit");
        profitColumn.setCellValueFactory(new PropertyValueFactory<>("profit"));

        TableColumn<Flower, Integer> totalProfitColumn = new TableColumn<>("Total Profit");
        totalProfitColumn.setCellValueFactory(new PropertyValueFactory<>("totalprofit"));

        // 添加列到表格
        financialTable.getColumns().addAll(idColumn, flowerNameColumn, priceColumn, stockColumn, salesVolumeColumn, purchasingPriceColumn, profitColumn, totalProfitColumn);

        // 从数据库中获取财务报表数据
        List<Flower> financialRecords = getFinancialRecordsFromDatabase();

        // 将数据添加到表格中
        financialTable.getItems().addAll(financialRecords);
        
        
        // 将表格放在布局的中间位置
        borderPane.setCenter(financialTable);

        // 将布局添加到界面中
        managerOperationRoot.getChildren().add(borderPane);
    }修改代码,禁止表格遮挡菜单栏
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-6 23:07:26 | 显示全部楼层
qifenxian 发表于 2024-01-06 23:07
private void createManagerOperationPage(Stage stag ...


好的,要禁止表格遮挡菜单栏,你可以将菜单栏放在布局的顶部,并将表格放在布局的中间区域。这样,菜单栏就会一直显示在顶部,而不会被表格遮挡。

下面是修改后的代码示例:

  1. private void createManagerOperationPage(Stage stage){
  2.     Pane ManagerOperationRoot = new Pane();
  3.     Image backgroundImage = new Image("file:src/main/java/img/beijing.jpg");
  4.     ImageView backgroundView = new ImageView(backgroundImage);
  5.     backgroundView.setFitWidth(800);
  6.     backgroundView.setFitHeight(600);
  7.     ManagerOperationRoot.getChildren().add(backgroundView);

  8.     BorderPane borderPane = new BorderPane();

  9.     // 创建菜单栏
  10.     MenuBar menuBar = new MenuBar();
  11.     Menu exitMenu = new Menu("退出系统");
  12.     MenuItem exitMenuItem = new MenuItem("退出系统");
  13.     exitMenu.getItems().add(exitMenuItem);
  14.     exitMenuItem.setOnAction(actionEvent -> {
  15.         stage.setScene(root.getScene());
  16.     });

  17.     //...
  18.     // 其他菜单项的创建

  19.     menuBar.getMenus().addAll(exitMenu, addFlowerMenu, deleteFlowerMenu, changeFlowMenu, queryFlowerMenu, manageAccountMenu, financialStatement);

  20.     // 将菜单栏放在布局的顶部
  21.     borderPane.setTop(menuBar);

  22.     TableView financialTable = new TableView();
  23.     // ...

  24.     // 将表格放在布局的中间位置
  25.     borderPane.setCenter(financialTable);

  26.     ManagerOperationRoot.getChildren().add(borderPane);

  27.     Scene ManagerOperationScene = new Scene(ManagerOperationRoot, 800, 600);
  28.     stage.setScene(ManagerOperationScene);
  29. }
复制代码


通过将菜单栏放在布局的顶部,表格放在布局的中间位置,你可以确保菜单栏一直显示在最顶部,并且不会被表格遮挡。希望对你有所帮助!如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-26 21:52:53 | 显示全部楼层
@FishC
实验目的:在MySQL中创建一张表,之后使用JDBC进行增删查改。
(1)表设计:数据内容自定义,给出创建表的数据库语句
(2)JDBC连接到MySQL,数据库驱动为8.0.33,给出需要添加的依赖
(3)在index.jsp中心位置设计四个超链接,分别对应suc.jsp、delete.jsp、insert.jsp、query.jsp,
(3.5)在suc.jsp页面列出表中所有记录,每行记录后面有删除链接,链接中附加username字段,单击后跳转到delete.jsp。另有插入、查询按钮,单击后分别跳转到insert.jsp、query.jsp。
(4)delete.jsp页面:从URL中提取username字段,删除数据库表中该username对应的记录。删除成功后,显示删除成功,之后重定向到list.jsp。
(5)insert.jsp:设计表单,单击提交按钮后,插入到数据库表中。插入成功后,显示插入成功,设计3秒后返回,重定向到suc.jsp,并刷新页面显示最新数据。
(6)query.jsp:设计表单,比如查询姓名,单击查询按钮后,检索数据库表记录,用列表显示结果。

为上述实验项目编写代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-26 21:53:14 | 显示全部楼层
zqy173590939 发表于 2024-03-26 21:52
@FishC
实验目的:在MySQL中创建一张表,之后使用JDB ...


(1)表设计:假设要创建一个名为"students"的表,包含三个字段:id、name、age。

CREATE TABLE students(
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50),
    age INT
);

(2)JDBC连接到MySQL,需要添加mysql-connector-java依赖。在项目的pom.xml文件中添加以下内容:

<dependencies>
    ...
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.33</version>
    </dependency>
    ...
</dependencies>

(3)index.jsp:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4.     <title>Index</title>
  5. </head>
  6. <body>
  7.     <div align="center">
  8.         <h1>Welcome to the Student Management System</h1>
  9.         <br>
  10.         <a href="suc.jsp">View All Students</a><br>
  11.         <a href="delete.jsp">Delete Student</a><br>
  12.         <a href="insert.jsp">Insert Student</a><br>
  13.         <a href="query.jsp">Query Students</a><br>
  14.     </div>
  15. </body>
  16. </html>
复制代码


(3.5)suc.jsp:

  1. <%@ page import="java.sql.*" %>
  2. <%@ page import="javax.sql.*" %>
  3. <%@ page import="java.io.*" %>
  4. <%@ page import="java.util.*" %>
  5. <%@ page import="com.mysql.jdbc.Driver" %>

  6. <%
  7.     Connection conn = null;
  8.     Statement stmt = null;
  9.     ResultSet rs = null;
  10.    
  11.     try {
  12.         Class.forName("com.mysql.jdbc.Driver");
  13.         conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/testdatabase", "root", "password");
  14.         
  15.         stmt = conn.createStatement();
  16.         rs = stmt.executeQuery("SELECT * FROM students");
  17.         
  18.         out.println("<table border='1'>");
  19.         out.println("<tr><td>ID</td><td>Name</td><td>Age</td><td>Delete</td></tr>");
  20.         while (rs.next()) {
  21.             int id = rs.getInt("id");
  22.             String name = rs.getString("name");
  23.             int age = rs.getInt("age");
  24.             
  25.             out.println("<tr><td>" + id + "</td><td>" + name + "</td><td>" + age + "</td><td><a href='delete.jsp?username=" + name + "'>Delete</a></td></tr>");
  26.         }
  27.         out.println("</table>");
  28.         
  29.         out.println("<br>");
  30.         out.println("<form action='insert.jsp' method='get'>");
  31.         out.println("<input type='submit' value='Insert'>");
  32.         out.println("</form>");
  33.         
  34.         out.println("<br>");
  35.         out.println("<form action='query.jsp' method='get'>");
  36.         out.println("Name: <input type='text' name='name'>");
  37.         out.println("<input type='submit' value='Query'>");
  38.         out.println("</form>");
  39.     } catch (ClassNotFoundException e) {
  40.         e.printStackTrace();
  41.     } catch (SQLException e) {
  42.         e.printStackTrace();
  43.     } finally {
  44.         try {
  45.             if(rs != null) {
  46.                 rs.close();
  47.             }
  48.             if(stmt != null) {
  49.                 stmt.close();
  50.             }
  51.             if(conn != null) {
  52.                 conn.close();
  53.             }
  54.         } catch (SQLException e) {
  55.             e.printStackTrace();
  56.         }
  57.     }
  58. %>
复制代码


(4)delete.jsp:

  1. <%@ page import="java.sql.*" %>
  2. <%@ page import="javax.sql.*" %>
  3. <%@ page import="java.io.*" %>
  4. <%@ page import="java.util.*" %>
  5. <%@ page import="com.mysql.jdbc.Driver" %>

  6. <%
  7.     String username = request.getParameter("username");
  8.    
  9.     Connection conn = null;
  10.     Statement stmt = null;
  11.    
  12.     try {
  13.         Class.forName("com.mysql.jdbc.Driver");
  14.         conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/testdatabase", "root", "password");
  15.         
  16.         stmt = conn.createStatement();
  17.         stmt.executeUpdate("DELETE FROM students WHERE name='" + username + "'");
  18.         
  19.         out.println("Delete successful!");
  20.         response.sendRedirect("suc.jsp");
  21.     } catch (ClassNotFoundException e) {
  22.         e.printStackTrace();
  23.     } catch (SQLException e) {
  24.         e.printStackTrace();
  25.     } finally {
  26.         try {
  27.             if(stmt != null) {
  28.                 stmt.close();
  29.             }
  30.             if(conn != null) {
  31.                 conn.close();
  32.             }
  33.         } catch (SQLException e) {
  34.             e.printStackTrace();
  35.         }
  36.     }
  37. %>
复制代码


(5)insert.jsp:

  1. <%@ page import="java.sql.*" %>
  2. <%@ page import="javax.sql.*" %>
  3. <%@ page import="java.io.*" %>
  4. <%@ page import="java.util.*" %>
  5. <%@ page import="com.mysql.jdbc.Driver" %>

  6. <%
  7.     String name = request.getParameter("name");
  8.     String age = request.getParameter("age");
  9.    
  10.     Connection conn = null;
  11.     Statement stmt = null;
  12.    
  13.     try {
  14.         Class.forName("com.mysql.jdbc.Driver");
  15.         conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/testdatabase", "root", "password");
  16.         
  17.         stmt = conn.createStatement();
  18.         stmt.executeUpdate("INSERT INTO students(name, age) VALUES('" + name + "', " + age + ")");
  19.         
  20.         out.println("Insert successful!");
  21.         response.setHeader("Refresh", "3; URL=suc.jsp");
  22.     } catch (ClassNotFoundException e) {
  23.         e.printStackTrace();
  24.     } catch (SQLException e) {
  25.         e.printStackTrace();
  26.     } finally {
  27.         try {
  28.             if(stmt != null) {
  29.                 stmt.close();
  30.             }
  31.             if(conn != null) {
  32.                 conn.close();
  33.             }
  34.         } catch (SQLException e) {
  35.             e.printStackTrace();
  36.         }
  37.     }
  38. %>
复制代码


(6)query.jsp:

  1. <%@ page import="java.sql.*" %>
  2. <%@ page import="javax.sql.*" %>
  3. <%@ page import="java.io.*" %>
  4. <%@ page import="java.util.*" %>
  5. <%@ page import="com.mysql.jdbc.Driver" %>

  6. <%
  7.     String name = request.getParameter("name");
  8.    
  9.     Connection conn = null;
  10.     Statement stmt = null;
  11.     ResultSet rs = null;
  12.    
  13.     try {
  14.         Class.forName("com.mysql.jdbc.Driver");
  15.         conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/testdatabase", "root", "password");
  16.         
  17.         stmt = conn.createStatement();
  18.         rs = stmt.executeQuery("SELECT * FROM students WHERE name = '" + name + "'");
  19.         
  20.         out.println("<table border='1'>");
  21.         out.println("<tr><td>ID</td><td>Name</td><td>Age</td></tr>");
  22.         while (rs.next()) {
  23.             int id = rs.getInt("id");
  24.             String studentName = rs.getString("name");
  25.             int age = rs.getInt("age");
  26.             
  27.             out.println("<tr><td>" + id + "</td><td>" + studentName + "</td><td>" + age + "</td></tr>");
  28.         }
  29.         out.println("</table>");
  30.     } catch (ClassNotFoundException e) {
  31.         e.printStackTrace();
  32.     } catch (SQLException e) {
  33.         e.printStackTrace();
  34.     } finally {
  35.         try {
  36.             if(rs != null) {
  37.                 rs.close();
  38.             }
  39.             if(stmt != null) {
  40.                 stmt.close();
  41.             }
  42.             if(conn != null) {
  43.                 conn.close();
  44.             }
  45.         } catch (SQLException e) {
  46.             e.printStackTrace();
  47.         }
  48.     }
  49. %>
复制代码


希望以上代码能够帮助您完成实验项目。请注意,为了简化问题,我假设数据库名为testdatabase,并且用户名为root,密码为password。在实际应用中,请根据自己的实际情况进行相应修改。此外,为了简单起见,上述代码没有考虑安全性和异常处理等方面的问题,实际开发中需要进行适当的改进。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-26 22:40:35 | 显示全部楼层
FishC 发表于 2024-3-26 21:53
(1)表设计:假设要创建一个名为"students"的表,包含三个字段:id、name、age。

CREATE TABLE stu ...

@FishC
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.sql.*" %>
<%@ page import="javax.sql.*" %>
<%@ page import="java.io.*" %>
<%@ page import="java.util.*" %>
<%@ page import="com.mysql.jdbc.Driver" %>

<%
    String name = request.getParameter("name");
    String age = request.getParameter("age");

    Connection conn = null;
    Statement stmt = null;

    try {
        Class.forName("com.mysql.jdbc.Driver");
        conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/javaweb?useUnicode=true&characterEncoding=UTF-8", "root", "123456");

        stmt = conn.createStatement();
        stmt.executeUpdate("INSERT INTO students(name, age) VALUES('" + name + "', " + age + ")");

        out.println("Insert successful!");
        response.setHeader("Refresh", "3; URL=suc.jsp");
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        try {
            if(stmt != null) {
                stmt.close();
            }
            if(conn != null) {
                conn.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
%>
修改代码,insert.jsp目前没有实际功能,在suc.jsp点击insert转跳至adddata.jsp,根据数据库表:
CREATE TABLE students(
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50),
    age INT
);
的样式,设计输入框,用户输入数据后,点击提交,把数据保存到数据库中,并跳至insert.jsp界面,显示insert successful,三秒后自动转跳回suc.jsp,刷新界面显示最新数据
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-26 22:40:56 | 显示全部楼层
zqy173590939 发表于 2024-03-26 22:40
@FishC








修改代码,insert.jsp目前没 ...


首先,您需要在adddata.jsp页面添加输入框和提交按钮,以便用户输入数据并保存到数据库中。然后,在insert.jsp页面中显示插入成功的消息,并设置页面自动跳转回suc.jsp页面。

下面是一个示例代码:

adddata.jsp:
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2.     pageEncoding="UTF-8"%>
  3. <!DOCTYPE html>
  4. <html>
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  7. <title>Add Data</title>
  8. </head>
  9. <body>
  10.     <h1>Add Data</h1>
  11.     <form action="insert.jsp" method="post">
  12.         <label>Name:</label>
  13.         <input type="text" name="name" required><br>
  14.         <label>Age:</label>
  15.         <input type="number" name="age" required><br>
  16.         <input type="submit" value="Submit">
  17.     </form>
  18. </body>
  19. </html>
复制代码


insert.jsp:
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2.     pageEncoding="UTF-8"%>
  3. <%@ page import="java.sql.*" %>
  4. <!DOCTYPE html>
  5. <html>
  6. <head>
  7. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  8. <title>Insert</title>
  9. </head>
  10. <body>
  11.     <%
  12.         String name = request.getParameter("name");
  13.         int age = Integer.parseInt(request.getParameter("age"));

  14.         String driver = "com.mysql.jdbc.Driver";
  15.         String url = "jdbc:mysql://localhost:3306/test";
  16.         String user = "root";
  17.         String password = "123456";

  18.         try {
  19.             Class.forName(driver);
  20.             Connection conn = DriverManager.getConnection(url, user, password);
  21.             String insertSql = "INSERT INTO students (name, age) VALUES (?, ?)";
  22.             PreparedStatement pstmt = conn.prepareStatement(insertSql);
  23.             pstmt.setString(1, name);
  24.             pstmt.setInt(2, age);
  25.             pstmt.executeUpdate();
  26.             pstmt.close();
  27.             conn.close();
  28.         } catch (Exception e) {
  29.             e.printStackTrace();
  30.         }
  31.     %>
  32.     <h1>Insert Successful</h1>
  33.     <script>
  34.         setTimeout(function() {
  35.             window.location.href = "suc.jsp";
  36.         }, 3000);
  37.     </script>
  38. </body>
  39. </html>
复制代码


在这个示例中,我们首先从adddata.jsp页面获取用户输入的姓名和年龄,然后使用JDBC连接到数据库,并将数据插入students表。当插入成功后,我们在insert.jsp页面显示"Insert Successful"消息,并在3秒后自动跳转回suc.jsp页面。

您需要将示例代码中的数据库连接属性(driver, url, user, password)根据您的实际情况进行修改。同时,确保已经导入了MySQL的JDBC驱动程序。

希望这个示例代码能帮助到您。如果有任何问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-26 22:49:16 | 显示全部楼层
@FishC
CREATE TABLE students(
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50),
    age INT
);
数据库表格已经设计完成。

实验目的:在MySQL中创建一张表,之后使用JDBC进行增删查改。
(1)表设计:数据内容自定义,给出创建表的数据库语句
(2)JDBC连接到MySQL,数据库驱动为8.0.33,给出需要添加的依赖
(3)在index.jsp中心位置设计四个超链接,分别对应suc.jsp、delete.jsp、insert.jsp、query.jsp,
(3.5)在suc.jsp页面列出表中所有记录,每行记录后面有删除链接,链接中附加username字段,单击后跳转到delete.jsp。另有插入、查询按钮,单击后分别跳转到insert.jsp、query.jsp。
(4)delete.jsp页面:从URL中提取username字段,删除数据库表中该username对应的记录。删除成功后,显示删除成功,之后重定向到list.jsp。
(5)insert.jsp:设计表单。在suc.jsp点击insert转跳至adddata.jsp界面,该界面中有数据输入文本框,单击提交按钮后,插入到数据库表中。插入成功后转跳至insert.jsp,显示插入成功,设计3秒后返回,重定向到suc.jsp,并刷新页面显示最新数据。
(6)query.jsp:设计表单,比如查询姓名,单击查询按钮后,检索数据库表记录,用列表显示结果。
要求全程编码格式支持utf8
为上述实验项目编写代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-26 22:49:42 | 显示全部楼层
zqy173590939 发表于 2024-03-26 22:49
@FishC
CREATE TABLE students(
    id INT PRIMARY ...


(1) 创建表的数据库语句:

  1. CREATE TABLE students(
  2.     id INT PRIMARY KEY AUTO_INCREMENT,
  3.     name VARCHAR(50) CHARACTER SET utf8,
  4.     age INT
  5. ) CHARACTER SET utf8;
复制代码


(2) JDBC连接MySQL所需的依赖,可以在项目的pom.xml文件中添加如下依赖:

  1. <!-- MySQL Connector/J -->
  2. <dependency>
  3.     <groupId>mysql</groupId>
  4.     <artifactId>mysql-connector-java</artifactId>
  5.     <version>8.0.33</version>
  6. </dependency>
复制代码


(3) 在index.jsp中,设计四个超链接:

  1. <a href="suc.jsp">显示表格记录</a>
  2. <a href="delete.jsp">删除记录</a>
  3. <a href="insert.jsp">插入记录</a>
  4. <a href="query.jsp">查询记录</a>
复制代码


(3.5) 在suc.jsp页面列出表中所有记录,并为每行记录后面添加删除链接、插入按钮和查询按钮:

  1. <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
  2. <%@ page import="java.sql.*, javax.sql.*" %>
  3. <%
  4.     // 连接数据库
  5.     Class.forName("com.mysql.cj.jdbc.Driver");
  6.     String url = "jdbc:mysql://localhost:3306/databaseName?useUnicode=true&characterEncoding=utf8";
  7.     String username = "yourUsername";
  8.     String password = "yourPassword";
  9.     Connection conn = DriverManager.getConnection(url, username, password);

  10.     // 查询数据并显示在页面上
  11.     Statement stmt = conn.createStatement();
  12.     String sql = "SELECT * FROM students";
  13.     ResultSet rs = stmt.executeQuery(sql);
  14. %>
  15. <table>
  16.     <tr>
  17.         <th>ID</th>
  18.         <th>姓名</th>
  19.         <th>年龄</th>
  20.         <th>操作</th>
  21.     </tr>
  22.     <% while (rs.next()) { %>
  23.     <tr>
  24.         <td><%= rs.getInt("id") %></td>
  25.         <td><%= rs.getString("name") %></td>
  26.         <td><%= rs.getInt("age") %></td>
  27.         <td><a href="delete.jsp?username=<%= rs.getString("name") %>">删除</a></td>
  28.     </tr>
  29.     <% } %>
  30. </table>
  31. <a href="insert.jsp">插入</a>
  32. <a href="query.jsp">查询</a>

  33. <%
  34.     // 关闭连接
  35.     rs.close();
  36.     stmt.close();
  37.     conn.close();
  38. %>
复制代码


(4) delete.jsp页面:从URL中提取username字段,删除数据库表中该username对应的记录,删除成功后,显示删除成功,之后重定向到list.jsp。

  1. <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
  2. <%@ page import="java.sql.*, javax.sql.*" %>
  3. <%
  4.     // 从URL中提取username字段
  5.     String username = request.getParameter("username");
  6.     if (username != null) {
  7.         // 连接数据库
  8.         Class.forName("com.mysql.cj.jdbc.Driver");
  9.         String url = "jdbc:mysql://localhost:3306/databaseName?useUnicode=true&characterEncoding=utf8";
  10.         String dbUsername = "yourUsername";
  11.         String dbPassword = "yourPassword";
  12.         Connection conn = DriverManager.getConnection(url, dbUsername, dbPassword);

  13.         // 删除记录
  14.         String sql = "DELETE FROM students WHERE name = ?";
  15.         PreparedStatement pstmt = conn.prepareStatement(sql);
  16.         pstmt.setString(1, username);
  17.         pstmt.executeUpdate();

  18.         // 关闭连接
  19.         pstmt.close();
  20.         conn.close();
  21.     }
  22. %>
  23. <h1>删除成功!</h1>
  24. <%
  25.     response.sendRedirect("list.jsp");
  26. %>
复制代码


(5) insert.jsp:设计表单,在suc.jsp点击插入转跳至insert.jsp界面,该界面中有数据输入文本框,单击提交按钮后,插入到数据库表中。插入成功后转跳至insert.jsp,显示插入成功,设计3秒后返回,重定向到suc.jsp,并刷新页面显示最新数据。

  1. <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
  2. <%@ page import="java.sql.*, javax.sql.*, java.util.Timer, java.util.TimerTask" %>
  3. <%
  4.     // 从suc.jsp页面获取插入的数据
  5.     String name = request.getParameter("name");
  6.     String age = request.getParameter("age");
  7.     if (name != null && age != null) {
  8.         // 连接数据库
  9.         Class.forName("com.mysql.cj.jdbc.Driver");
  10.         String url = "jdbc:mysql://localhost:3306/databaseName?useUnicode=true&characterEncoding=utf8";
  11.         String dbUsername = "yourUsername";
  12.         String dbPassword = "yourPassword";
  13.         Connection conn = DriverManager.getConnection(url, dbUsername, dbPassword);

  14.         // 插入记录
  15.         String sql = "INSERT INTO students (name, age) VALUES (?, ?)";
  16.         PreparedStatement pstmt = conn.prepareStatement(sql);
  17.         pstmt.setString(1, name);
  18.         pstmt.setInt(2, Integer.parseInt(age));
  19.         pstmt.executeUpdate();

  20.         // 关闭连接
  21.         pstmt.close();
  22.         conn.close();

  23.         // 计时器,延迟3秒后重定向到suc.jsp
  24.         Timer timer = new Timer();
  25.         TimerTask task = new TimerTask() {
  26.             public void run() {
  27.                 try {
  28.                     response.sendRedirect("suc.jsp");
  29.                 } catch (Exception e) {
  30.                     e.printStackTrace();
  31.                 }
  32.             }
  33.         };
  34.         timer.schedule(task, 3000);
  35.     }
  36. %>
  37. <h1>插入成功!</h1>
  38. <form action="insert.jsp" method="post">
  39.     姓名:<input type="text" name="name"><br>
  40.     年龄:<input type="text" name="age"><br>
  41.     <input type="submit" value="提交">
  42. </form>
复制代码


(6) query.jsp:设计表单,比如查询姓名,单击查询按钮后,检索数据库表记录,用列表显示结果。

  1. <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
  2. <%@ page import="java.sql.*, javax.sql.*" %>
  3. <%
  4.     String keyword = request.getParameter("keyword");

  5.     if (keyword != null) {
  6.         // 连接数据库
  7.         Class.forName("com.mysql.cj.jdbc.Driver");
  8.         String url = "jdbc:mysql://localhost:3306/databaseName?useUnicode=true&characterEncoding=utf8";
  9.         String username = "yourUsername";
  10.         String password = "yourPassword";
  11.         Connection conn = DriverManager.getConnection(url, username, password);

  12.         // 查询数据并显示在页面上
  13.         String sql = "SELECT * FROM students WHERE name LIKE ?";
  14.         PreparedStatement pstmt = conn.prepareStatement(sql);
  15.         pstmt.setString(1, "%" + keyword + "%");
  16.         ResultSet rs = pstmt.executeQuery();
  17. %>
  18. <ul>
  19.     <% while (rs.next()) { %>
  20.     <li><%= rs.getString("name") %></li>
  21.     <% } %>
  22. </ul>
  23. <%
  24.         // 关闭连接
  25.         rs.close();
  26.         pstmt.close();
  27.         conn.close();
  28.     }
  29. %>
  30. <form action="query.jsp" method="get">
  31.     查询姓名:<input type="text" name="keyword">
  32.     <input type="submit" value="查询">
  33. </form>
复制代码


以上是给出的一个简单示例,仅供参考。您可以根据实际需求进行适当修改和完善。请注意替换代码中的数据库连接信息(url、username、password)和数据库名(databaseName)。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-26 22:56:37 | 显示全部楼层
@FishC
CREATE TABLE students(
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50),
    age INT
);
数据库表格已经设计完成。

实验目的:在MySQL中创建一张表,之后使用JDBC进行增删查改。
(1)表设计:数据内容自定义,给出创建表的数据库语句
(2)JDBC连接到MySQL,数据库驱动为8.0.33,给出需要添加的依赖
(3)在index.jsp中心位置设计四个超链接,分别对应suc.jsp、delete.jsp、insert.jsp、query.jsp,
(3.5)在suc.jsp页面列出表中所有记录,每行记录后面有删除链接,链接中附加username字段,单击后跳转到delete.jsp。另有插入、查询按钮,单击后分别跳转到insert.jsp、query.jsp。
(4)delete.jsp页面:从URL中提取username字段,删除数据库表中该username对应的记录。删除成功后,显示删除成功,之后重定向到list.jsp。
(5)adddata.jsp和insert.jsp:设计表单。在suc.jsp点击insert转跳至adddata.jsp界面,该界面中有数据输入文本框,单击提交按钮后,插入到数据库表中。在adddata.jsp界面插入成功后转跳至insert.jsp,显示插入成功,设计3秒后返回,重定向到suc.jsp,并刷新页面显示最新数据。如果插入失败则在insert.jsp输出插入失败。
(6)query.jsp:设计表单,比如查询姓名,单击查询按钮后,检索数据库表记录,用列表显示结果。
要求全程编码格式支持utf8
为上述实验项目编写代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-26 22:57:10 | 显示全部楼层
zqy173590939 发表于 2024-03-26 22:56
@FishC
CREATE TABLE students(
    id INT PRIMARY ...


(1) 表设计:

  1. CREATE TABLE students(
  2.     id INT PRIMARY KEY AUTO_INCREMENT,
  3.     name VARCHAR(50),
  4.     age INT
  5. );
复制代码


(2) JDBC连接到MySQL,需要添加MySQL的Java驱动依赖,可以使用以下Maven依赖项:

  1. <dependency>
  2.     <groupId>mysql</groupId>
  3.     <artifactId>mysql-connector-java</artifactId>
  4.     <version>8.0.33</version>
  5. </dependency>
复制代码


(3) 在index.jsp中心位置设计四个超链接:

  1. <a href="suc.jsp">显示记录</a>
  2. <a href="delete.jsp?username=xxx">删除记录</a>
  3. <a href="insert.jsp">插入记录</a>
  4. <a href="query.jsp">查询记录</a>
复制代码

其中,"xxx"需要替换为要删除的记录的username。

(3.5) 在suc.jsp页面列出表中所有记录:

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

  3. <%
  4.     // 数据库连接信息
  5.     String url = "jdbc:mysql://localhost:3306/your_database_name?useUnicode=true&characterEncoding=UTF-8";
  6.     String username = "your_username";
  7.     String password = "your_password";

  8.     // 查询数据库中的记录
  9.     try {
  10.         Class.forName("com.mysql.jdbc.Driver");
  11.         Connection conn = DriverManager.getConnection(url, username, password);
  12.         Statement stmt = conn.createStatement();
  13.         String sql = "SELECT * FROM students";
  14.         ResultSet rs = stmt.executeQuery(sql);

  15.         // 显示记录
  16.         while (rs.next()) {
  17.             int id = rs.getInt("id");
  18.             String name = rs.getString("name");
  19.             int age = rs.getInt("age");

  20.             out.println("ID: " + id + "<br>");
  21.             out.println("姓名: " + name + "<br>");
  22.             out.println("年龄: " + age + "<br>");

  23.             // 删除链接
  24.             String deleteUrl = "delete.jsp?username=" + name;
  25.             out.println("<a href='" + deleteUrl + "'>删除</a>");
  26.             out.println("<hr>");
  27.         }

  28.         rs.close();
  29.         stmt.close();
  30.         conn.close();
  31.     } catch (Exception e) {
  32.         out.println("数据库连接失败:" + e.getMessage());
  33.     }
  34. %>

  35. <form action="insert.jsp" method="get">
  36.     <input type="submit" value="插入">
  37. </form>

  38. <form action="query.jsp" method="get">
  39.     <input type="submit" value="查询">
  40. </form>
复制代码


(4) delete.jsp页面:

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

  3. <%
  4.     // 数据库连接信息
  5.     String url = "jdbc:mysql://localhost:3306/your_database_name?useUnicode=true&characterEncoding=UTF-8";
  6.     String username = "your_username";
  7.     String password = "your_password";

  8.     // 获取待删除的用户名
  9.     String deleteUsername = request.getParameter("username");

  10.     // 删除记录
  11.     try {
  12.         Class.forName("com.mysql.jdbc.Driver");
  13.         Connection conn = DriverManager.getConnection(url, username, password);
  14.         Statement stmt = conn.createStatement();
  15.         String sql = "DELETE FROM students WHERE name = '" + deleteUsername + "'";
  16.         int result = stmt.executeUpdate(sql);

  17.         if (result > 0) {
  18.             out.println("删除成功!");
  19.         } else {
  20.             out.println("删除失败!");
  21.         }

  22.         stmt.close();
  23.         conn.close();
  24.     } catch (Exception e) {
  25.         out.println("数据库连接失败:" + e.getMessage());
  26.     }
  27. %>

  28. <meta http-equiv="refresh" content="3;url=suc.jsp">
复制代码


(5) adddata.jsp和insert.jsp:

adddata.jsp:

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

  3. <%
  4.     // 数据库连接信息
  5.     String url = "jdbc:mysql://localhost:3306/your_database_name?useUnicode=true&characterEncoding=UTF-8";
  6.     String username = "your_username";
  7.     String password = "your_password";

  8.     // 获取表单数据
  9.     String name = request.getParameter("name");
  10.     int age = Integer.parseInt(request.getParameter("age"));

  11.     // 插入记录
  12.     try {
  13.         Class.forName("com.mysql.jdbc.Driver");
  14.         Connection conn = DriverManager.getConnection(url, username, password);
  15.         Statement stmt = conn.createStatement();
  16.         String sql = "INSERT INTO students (name, age) VALUES ('" + name + "', " + age + ")";
  17.         int result = stmt.executeUpdate(sql);

  18.         response.sendRedirect("insert.jsp");
  19.     } catch (Exception e) {
  20.         out.println("数据库连接失败:" + e.getMessage());
  21.     }
  22. %>
复制代码


insert.jsp:

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

  3. <%
  4.     // 数据库连接信息
  5.     String url = "jdbc:mysql://localhost:3306/your_database_name?useUnicode=true&characterEncoding=UTF-8";
  6.     String username = "your_username";
  7.     String password = "your_password";

  8.     // 显示插入成功信息
  9.     String message = request.getParameter("message");
  10.     if (message != null && !message.isEmpty()) {
  11.         out.println(message);
  12.     }

  13.     // 显示表单
  14.     out.println("<form action='adddata.jsp' method='post'>");
  15.     out.println("姓名:<input type='text' name='name'><br>");
  16.     out.println("年龄:<input type='text' name='age'><br>");
  17.     out.println("<input type='submit' value='提交'>");
  18.     out.println("</form>");

  19.     // 刷新按钮
  20.     out.println("<form action='suc.jsp' method='get'>");
  21.     out.println("<input type='submit' value='刷新'>");
  22.     out.println("</form>");
  23. %>
复制代码


(6) query.jsp:

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

  3. <%
  4.     // 数据库连接信息
  5.     String url = "jdbc:mysql://localhost:3306/your_database_name?useUnicode=true&characterEncoding=UTF-8";
  6.     String username = "your_username";
  7.     String password = "your_password";

  8.     // 获取查询关键字
  9.     String keyword = request.getParameter("keyword");

  10.     // 查询记录
  11.     try {
  12.         Class.forName("com.mysql.jdbc.Driver");
  13.         Connection conn = DriverManager.getConnection(url, username, password);
  14.         Statement stmt = conn.createStatement();
  15.         String sql = "SELECT * FROM students WHERE name LIKE '%" + keyword + "%'";
  16.         ResultSet rs = stmt.executeQuery(sql);

  17.         // 显示查询结果
  18.         while (rs.next()) {
  19.             int id = rs.getInt("id");
  20.             String name = rs.getString("name");
  21.             int age = rs.getInt("age");

  22.             out.println("ID: " + id + "<br>");
  23.             out.println("姓名: " + name + "<br>");
  24.             out.println("年龄: " + age + "<br>");
  25.             out.println("<hr>");
  26.         }

  27.         rs.close();
  28.         stmt.close();
  29.         conn.close();
  30.     } catch (Exception e) {
  31.         out.println("数据库连接失败:" + e.getMessage());
  32.     }
  33. %>

  34. <form action="query.jsp" method="get">
  35.     姓名关键字:<input type="text" name="keyword">
  36.     <input type="submit" value="查询">
  37. </form>
复制代码


以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-28 16:55:07 | 显示全部楼层
@FishC
一、实验目的
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、数据库表设计截图
数据库表设计如下:


2、效果展示及截图
演示效果:

一共使用了六个页面:
index.jsp是初始界面,也是欢迎界面,包含转跳至suc,jsp、delete.jsp、insert.jsp、query.jsp四个界面的超链接。

suc,jsp是数据库浏览界面,在此界面可以管理(添加,插入,删除)信息。

根据实验要求,点击删除按钮可直接删除对应行的个人信息。
对32行点击删除,弹出提示信息:

3秒后自动转跳会suc.jsp页面,并显示更新后的信息。

点击插入,转跳至insert.jsp页面。

输入要添加的信息,点击提交:

点击提交后回到insert.jsp页面:

此时点击刷新回到suc.jsp并显示刷新后的数据:

点击查询按钮,转跳至query.jsp页面:

输入我们需要查询的数据:

点击提交进行查询:

根据查询结果可以看出此处是支持模糊查询的。

上述是一次Javaweb实验,用第一人称视角进行实验总结
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-28 16:55:38 | 显示全部楼层
zqy173590939 发表于 2024-03-28 16:55
@FishC
一、实验目的
1、掌握JDBC增删查改MySQL或 ...


看起来你已经成功完成了JDBC连接MySQL或SQL Server数据库,并且实现了增删查改的功能。这是一个很好的成果!以下是回答你提到问题的解决方案。

1. 首先,关于数据库表的设计,你可以使用MySQL Workbench或SQL Server Management Studio等工具进行表设计。根据你的需求,选择合适的字段和数据类型创建表。

2. 关于JDBC连接数据库的方法,你可以使用以下代码示例:

  1. import java.sql.Connection;
  2. import java.sql.DriverManager;
  3. import java.sql.SQLException;

  4. public class DBUtil {
  5.     private static final String URL = "jdbc:mysql://localhost:3306/my_db"; // MySQL数据库的URL
  6.     private static final String USERNAME = "root";
  7.     private static final String PASSWORD = "123456";

  8.     public static Connection getConnection() {
  9.         Connection conn = null;
  10.         try {
  11.             Class.forName("com.mysql.jdbc.Driver"); // 加载MySQL驱动
  12.             conn = DriverManager.getConnection(URL, USERNAME, PASSWORD); // 建立数据库连接
  13.         } catch (ClassNotFoundException e) {
  14.             e.printStackTrace();
  15.         } catch (SQLException e) {
  16.             e.printStackTrace();
  17.         }
  18.         return conn;
  19.     }
  20. }
复制代码


其中`URL`、`USERNAME`和`PASSWORD`需要根据你的数据库配置进行修改。

3. 在`suc.jsp`页面中列出表中所有记录并实现删除功能,你可以使用以下代码示例:

  1. <%@ page import="java.sql.*" %>
  2. <%
  3.     Connection conn = DBUtil.getConnection();
  4.     Statement stmt = conn.createStatement();
  5.     ResultSet rs = stmt.executeQuery("SELECT * FROM my_table");

  6.     while (rs.next()) {
  7.         String username = rs.getString("username");
  8.         String deleteURL = "delete.jsp?username=" + username;
  9. %>
  10.     <p><%= username %> [<a href="<%= deleteURL %>">删除</a>]</p>
  11. <%
  12.     }
  13.     rs.close();
  14.     stmt.close();
  15.     conn.close();
  16. %>
复制代码


此代码从数据库中查询所有记录,并将每个记录的用户名和相应的删除链接输出到页面上。

4. 在`delete.jsp`页面中删除指定的记录,可以使用以下代码示例:

  1. <%@ page import="java.sql.*" %>
  2. <%
  3.     String username = request.getParameter("username");

  4.     Connection conn = DBUtil.getConnection();
  5.     Statement stmt = conn.createStatement();
  6.     stmt.executeUpdate("DELETE FROM my_table WHERE username = '" + username + "'");

  7.     response.sendRedirect("suc.jsp?msg=删除成功");
  8. %>
复制代码


该代码解析URL中的用户名参数,然后连接数据库并执行相应的删除操作。删除成功后,使用`response.sendRedirect()`将用户重定向到`suc.jsp`页面,并显示成功删除的消息。

5. 在`insert.jsp`页面中插入记录,可以使用以下代码示例:

  1. <%@ page import="java.sql.*" %>
  2. <%
  3.     String username = request.getParameter("username");
  4.     String password = request.getParameter("password");

  5.     Connection conn = DBUtil.getConnection();
  6.     Statement stmt = conn.createStatement();
  7.     stmt.executeUpdate("INSERT INTO my_table (username, password) VALUES ('" + username + "', '" + password + "')");

  8.     response.sendRedirect("suc.jsp?msg=插入成功");
  9. %>
复制代码


该代码从表单中获取用户名和密码参数,并将它们插入到数据库表中。插入成功后,使用`response.sendRedirect()`将用户重定向到`suc.jsp`页面,并显示成功插入的消息。

6. 在`query.jsp`页面中查询记录,可以使用以下代码示例:

  1. <%@ page import="java.sql.*" %>
  2. <%
  3.     String keyword = request.getParameter("keyword");

  4.     Connection conn = DBUtil.getConnection();
  5.     Statement stmt = conn.createStatement();
  6.     ResultSet rs = stmt.executeQuery("SELECT * FROM my_table WHERE username LIKE '%" + keyword + "%'");

  7.     while (rs.next()) {
  8.         String username = rs.getString("username");
  9. %>
  10.     <p><%= username %></p>
  11. <%
  12.     }
  13.     rs.close();
  14.     stmt.close();
  15.     conn.close();
  16. %>
复制代码


该代码从表单中获取关键字参数,并根据关键字在数据库中执行模糊查询。查询结果将作为列表显示在页面上。

希望以上信息能对你有所帮助,如果还有其他问题,请随时提问!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 5 天前 | 显示全部楼层
@FishC
E:\python project\first>pip install setuptools
ERROR: Exception:
Traceback (most recent call last):
  File "E:\python project\first\venv\Lib\site-packages\pip\_internal\cli\base_command.py", line 160, in exc_logging_wrapper
    status = run_func(*args)
             ^^^^^^^^^^^^^^^
  File "E:\python project\first\venv\Lib\site-packages\pip\_internal\cli\req_command.py", line 247, in wrapper
    return func(self, options, args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "E:\python project\first\venv\Lib\site-packages\pip\_internal\commands\install.py", line 326, in run
    session = self.get_default_session(options)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "E:\python project\first\venv\Lib\site-packages\pip\_internal\cli\req_command.py", line 98, in get_default_session
    self._session = self.enter_context(self._build_session(options))
                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "E:\python project\first\venv\Lib\site-packages\pip\_internal\cli\req_command.py", line 125, in _build_session
    session = PipSession(
              ^^^^^^^^^^^
  File "E:\python project\first\venv\Lib\site-packages\pip\_internal\network\session.py", line 343, in __init__
    self.headers["User-Agent"] = user_agent()
                                 ^^^^^^^^^^^^
  File "E:\python project\first\venv\Lib\site-packages\pip\_internal\network\session.py", line 175, in user_agent
    setuptools_dist = get_default_environment().get_distribution("setuptools")
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "E:\python project\first\venv\Lib\site-packages\pip\_internal\metadata\importlib\_envs.py", line 188, in get_distribution
    return next(matches, None)
           ^^^^^^^^^^^^^^^^^^^
  File "E:\python project\first\venv\Lib\site-packages\pip\_internal\metadata\importlib\_envs.py", line 183, in <genexpr>
    matches = (
              ^
  File "E:\python project\first\venv\Lib\site-packages\pip\_internal\metadata\base.py", line 612, in iter_all_distributions
    for dist in self._iter_distributions():
  File "E:\python project\first\venv\Lib\site-packages\pip\_internal\metadata\importlib\_envs.py", line 176, in _iter_distributions
    for dist in finder.find_eggs(location):
  File "E:\python project\first\venv\Lib\site-packages\pip\_internal\metadata\importlib\_envs.py", line 146, in find_eggs
    yield from self._find_eggs_in_zip(location)
  File "E:\python project\first\venv\Lib\site-packages\pip\_internal\metadata\importlib\_envs.py", line 123, in _find_eggs_in_zip
    from pip._vendor.pkg_resources import find_eggs_in_zip
  File "E:\python project\first\venv\Lib\site-packages\pip\_vendor\pkg_resources\__init__.py", line 2164, in <module>
    register_finder(pkgutil.ImpImporter, find_on_path)
                    ^^^^^^^^^^^^^^^^^^^
AttributeError: module 'pkgutil' has no attribute 'ImpImporter'. Did you mean: 'zipimporter'?
Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "E:\python project\first\venv\Scripts\pip.exe\__main__.py", line 7, in <module>
  File "E:\python project\first\venv\Lib\site-packages\pip\_internal\cli\main.py", line 70, in main
    return command.main(cmd_args)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "E:\python project\first\venv\Lib\site-packages\pip\_internal\cli\base_command.py", line 101, in main
    return self._main(args)
           ^^^^^^^^^^^^^^^^
  File "E:\python project\first\venv\Lib\site-packages\pip\_internal\cli\base_command.py", line 216, in _main
    self.handle_pip_version_check(options)
  File "E:\python project\first\venv\Lib\site-packages\pip\_internal\cli\req_command.py", line 179, in handle_pip_version_check
    session = self._build_session(
              ^^^^^^^^^^^^^^^^^^^^
  File "E:\python project\first\venv\Lib\site-packages\pip\_internal\cli\req_command.py", line 125, in _build_session
    session = PipSession(
              ^^^^^^^^^^^
  File "E:\python project\first\venv\Lib\site-packages\pip\_internal\network\session.py", line 343, in __init__
    self.headers["User-Agent"] = user_agent()
                                 ^^^^^^^^^^^^
  File "E:\python project\first\venv\Lib\site-packages\pip\_internal\network\session.py", line 175, in user_agent
    setuptools_dist = get_default_environment().get_distribution("setuptools")
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "E:\python project\first\venv\Lib\site-packages\pip\_internal\metadata\importlib\_envs.py", line 188, in get_distribution
    return next(matches, None)
           ^^^^^^^^^^^^^^^^^^^
  File "E:\python project\first\venv\Lib\site-packages\pip\_internal\metadata\importlib\_envs.py", line 183, in <genexpr>
    matches = (
              ^
  File "E:\python project\first\venv\Lib\site-packages\pip\_internal\metadata\base.py", line 612, in iter_all_distributions
    for dist in self._iter_distributions():
  File "E:\python project\first\venv\Lib\site-packages\pip\_internal\metadata\importlib\_envs.py", line 176, in _iter_distributions
    for dist in finder.find_eggs(location):
  File "E:\python project\first\venv\Lib\site-packages\pip\_internal\metadata\importlib\_envs.py", line 146, in find_eggs
    yield from self._find_eggs_in_zip(location)
  File "E:\python project\first\venv\Lib\site-packages\pip\_internal\metadata\importlib\_envs.py", line 123, in _find_eggs_in_zip
    from pip._vendor.pkg_resources import find_eggs_in_zip
  File "E:\python project\first\venv\Lib\site-packages\pip\_vendor\pkg_resources\__init__.py", line 2164, in <module>
    register_finder(pkgutil.ImpImporter, find_on_path)
                    ^^^^^^^^^^^^^^^^^^^
AttributeError: module 'pkgutil' has no attribute 'ImpImporter'. Did you mean: 'zipimporter'?

检查上述错误原因
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 5 天前 | 显示全部楼层
zqy173590939 发表于 2024-04-23 17:25
@FishC
E:\python project\first>pip install setupt ...


这个错误是由于Python环境中的某些模块出现了问题所导致的。根据错误信息,有一个名为`pkgutil`的模块没有`ImpImporter`属性,而是应该是`zipimporter`。

解决这个问题的方法是更新`setuptools`模块。可以使用以下命令来更新:

  1. pip install --upgrade setuptools
复制代码


如果更新`setuptools`没有解决问题,可以尝试卸载并重新安装`setuptools`模块:

  1. pip uninstall setuptools
  2. pip install setuptools
复制代码


希望这个解决方案能帮到你!如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 5 天前 | 显示全部楼层
FishC 发表于 2024-4-23 17:25
这个错误是由于Python环境中的某些模块出现了问题所导致的。根据错误信息,有一个名为`pkgutil`的模块 ...

E:\python project\first>pip uninstall setuptools
ERROR: Exception:
Traceback (most recent call last):
  File "E:\python project\first\venv\Lib\site-packages\pip\_internal\cli\base_command.py", line 160, in exc_logging_wrapper
    status = run_func(*args)
             ^^^^^^^^^^^^^^^
  File "E:\python project\first\venv\Lib\site-packages\pip\_internal\commands\uninstall.py", line 61, in run
    session = self.get_default_session(options)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "E:\python project\first\venv\Lib\site-packages\pip\_internal\cli\req_command.py", line 98, in get_default_session
    self._session = self.enter_context(self._build_session(options))
                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "E:\python project\first\venv\Lib\site-packages\pip\_internal\cli\req_command.py", line 125, in _build_session
    session = PipSession(
              ^^^^^^^^^^^
  File "E:\python project\first\venv\Lib\site-packages\pip\_internal\network\session.py", line 343, in __init__
    self.headers["User-Agent"] = user_agent()
                                 ^^^^^^^^^^^^
  File "E:\python project\first\venv\Lib\site-packages\pip\_internal\network\session.py", line 175, in user_agent
    setuptools_dist = get_default_environment().get_distribution("setuptools")
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "E:\python project\first\venv\Lib\site-packages\pip\_internal\metadata\importlib\_envs.py", line 188, in get_distribution
    return next(matches, None)
           ^^^^^^^^^^^^^^^^^^^
  File "E:\python project\first\venv\Lib\site-packages\pip\_internal\metadata\importlib\_envs.py", line 183, in <genexpr>
    matches = (
              ^
  File "E:\python project\first\venv\Lib\site-packages\pip\_internal\metadata\base.py", line 612, in iter_all_distributions
    for dist in self._iter_distributions():
  File "E:\python project\first\venv\Lib\site-packages\pip\_internal\metadata\importlib\_envs.py", line 176, in _iter_distributions
    for dist in finder.find_eggs(location):
  File "E:\python project\first\venv\Lib\site-packages\pip\_internal\metadata\importlib\_envs.py", line 146, in find_eggs
    yield from self._find_eggs_in_zip(location)
  File "E:\python project\first\venv\Lib\site-packages\pip\_internal\metadata\importlib\_envs.py", line 123, in _find_eggs_in_zip
    from pip._vendor.pkg_resources import find_eggs_in_zip
  File "E:\python project\first\venv\Lib\site-packages\pip\_vendor\pkg_resources\__init__.py", line 2164, in <module>
    register_finder(pkgutil.ImpImporter, find_on_path)
                    ^^^^^^^^^^^^^^^^^^^
AttributeError: module 'pkgutil' has no attribute 'ImpImporter'. Did you mean: 'zipimporter'?
这又是什么意思?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 5 天前 | 显示全部楼层
zqy173590939 发表于 2024-04-23 17:26
E:\python project\first>pip uninstall setuptools
...


这个错误是在尝试卸载`setuptools`模块时出现的。同样,它与Python环境中的某些模块存在问题有关。

建议尝试使用以下方法来解决问题:
1. 确保你使用的是最新版本的pip。可以通过运行`python -m pip install --upgrade pip`来更新pip。
2. 如果pip仍然无法正常工作,请尝试重新安装Python环境。
   - 首先,删除现有的Python环境。
   - 然后,重新安装Python,并确保在安装过程中勾选正确的选项(例如“Add Python to PATH”)。
3. 如果上述方法都没有解决问题,请考虑使用虚拟环境(virtualenv)来管理你的项目。首先创建一个新的虚拟环境,然后使用该环境进行开发。

希望以上方法能够帮助你解决问题!如果还有其他疑问,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 01:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表