软件工程网页设计与网站建设(JSP)实验 综合实训(一)增加和查询

软件工程网页设计与网站建设(JSP)实验 综合实训(一)增加和查询

软件工程,网页设计与网站建设(JSP)实验,综合实训(一)增加和查询,JDBC,数据库,MySQL,用户管理,访问统计,可运行,完整源码,运行截图。

实验名称

综合实训(一)增加和查询

实验目的

  • 掌握在HTML页面中插入JSP脚本(java代码)的方法;
  • 编写简单的JSP页面,初步掌握JSP网页的设计原理;
  • 熟练掌握JSP的声明、表达式、小脚本和注释的使用;
  • 理解JSP页面(page)指令和动作的语法格式;
  • 掌握使用JSP基础语法结合JDBC完成数据库操作的基本方法。

实验内容

  • 输入并执行counter.jsp
  • 通过 JSP 页面访问数据库
  • 增加和查询

实验原理或流程图

输入并执行counter.jsp

JSP(Java Server Pages)是一种基于Java的Web编程语言,它可以生成动态的网页内容。JSP可以和Java程序集成,因此可以使用Java编写内存存储访问计数的代码。

通过 JSP 页面访问数据库

在JSP页面中访问数据库之前,需要先建立数据库连接。连接数据库需要使用Java数据库连接(JDBC)API提供的相关类和方法。JSP页面中可以使用Java代码编写数据库查询语句,并通过JDBC API执行该语句。查询结果可以通过Java代码获取,并将其转化为HTML页面的格式。

增加和查询

使用JDBC API提供的Statement或PreparedStatement对象执行SQL INSERT语句。Statement对象用于执行静态SQL语句,而PreparedStatement对象用于执行动态SQL语句。

User JSP MySQL 提交数据 建立数据库连接 返回连接对象 创建SQL语句 设置参数 执行SQL语句 返回执行结果 关闭数据库连接 返回操作结果 User JSP MySQL

使用JDBC API提供的Statement或PreparedStatement对象执行SQL SELECT语句。执行SELECT语句后,可以使用ResultSet对象来处理查询结果。

User JSP MySQL 提交查询条件 建立数据库连接 返回连接对象 创建SQL语句 设置参数 执行SQL语句 处理结果集 返回查询结果 关闭结果集 关闭数据库连接 返回查询结果 User JSP MySQL

实验过程或源代码

输入并执行counter.jsp

代码在JSP页面中使用了内置对象application来存储访问计数器的值。当页面被访问时,JSP代码会检查计数器是否已经存在,如果不存在,则初始化为0。然后计数器加1,并将新的值存储到application对象中。最后,JSP页面会将计数器的值显示在页面上。

<%-- 记录页面访问次数 --%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<% 
  // 获取访问计数器的值
  Integer count = (Integer)application.getAttribute("visitCount");

  // 如果计数器为空,则初始化为0
  if (count == null) {
    count = new Integer(0);
  }

  // 计数器加1
  int newCount = count.intValue() + 1;
  count = new Integer(newCount);

  // 将新的计数器值存入应用程序对象中
  application.setAttribute("visitCount", count);
%>
<html>

<head>
    <title>页面访问计数器示例</title>
</head>

<body>
    <h1>页面访问次数: <%= count %>
    </h1>
</body>

</html>

通过 JSP 页面访问数据库

修改/etc/mysql/my.cnf中的配置。

[mysqld]
user=root
datadir=/ide/workspace/database/mysql/data/mysql/
bind-address=0.0.0.0

mysqld启动数据库,通过mysql -u root -p连接数据库。

use mysql;
flush privileges;
alter user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
flush privileges;
exit;

设置mysql的root用户密码并重新启动。

lsof -i:3306
kill -9 <pid>
mysqld

创建一个名为mydb的数据库,切换到mydb数据库,然后创建一个名为mytable的数据表,包含两个字段:id和name。其中,id为整数类型,自动递增,且不能为空,name为字符串类型,不能为空。id字段被设为主键。

-- 建立数据库
CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 切换到mydb数据库
USE mydb;

-- 建立数据表
CREATE TABLE mytable (
  id INT NOT NULL AUTO_INCREMENT,
  name VARCHAR(50) NOT NULL,
  PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

使用以下SQL语句向mytable表中插入几条数据,将向mytable表中插入5条数据,分别为John、Mary、Tom、Lucy和David。id字段会自动递增。

INSERT INTO mytable (name) VALUES ('John');
INSERT INTO mytable (name) VALUES ('Mary');
INSERT INTO mytable (name) VALUES ('Tom');
INSERT INTO mytable (name) VALUES ('Lucy');
INSERT INTO mytable (name) VALUES ('David');

使用Class.forName方法注册MySQL JDBC驱动程序。然后使用DriverManager.getConnection方法获取数据库连接,并使用Connection.createStatement方法创建Statement对象。使用Statement.executeQuery方法查询数据库,并使用ResultSet.next方法遍历查询结果。最后关闭ResultSet、Statement和Connection对象。

<%@ page import="java.sql.*" %>
<html>
<head><title>Java JDBC</title></head>
<body>
<%
  Connection conn = null;
  Statement stmt = null;
  ResultSet rs = null;

  try {
    // 注册JDBC驱动程序
    Class.forName("com.mysql.jdbc.Driver");

    // 获取数据库连接
    String url = "jdbc:mysql://localhost:3306/mydb";
    String username = "root";
    String password = "123456";
    conn = DriverManager.getConnection(url, username, password);

    // 查询数据库
    stmt = conn.createStatement();
    rs = stmt.executeQuery("SELECT * FROM mytable");

    // 输出查询结果
    out.println("<table>");
    out.println("<tr><th>id</th><th>name</th></tr>");
    while (rs.next()) {
      int id = rs.getInt("id");
      String name = rs.getString("name");
      out.println("<tr><td>" + id + "</td><td>" + name + "</td></tr>");
    }
    out.println("</table>");
  } catch (Exception e) {
    out.println("Error: " + e.getMessage());
    e.printStackTrace();
  } finally {
    // 关闭数据库连接
    try {
      if (rs != null) rs.close();
      if (stmt != null) stmt.close();
      if (conn != null) conn.close();
    } catch (Exception e) {
      out.println("Error: " + e.getMessage());
      e.printStackTrace();
    }
  }
%>
</body>
</html>

增加和查询

用户管理页面包括两个表单,一个用于添加用户,另一个用于查询用户。

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>用户管理</title>
</head>
<body>
    <h1>用户管理</h1>
    <form action="addUser.jsp" method="post">
        <h2>添加用户</h2>
        <label for="name">姓名:</label>
        <input type="text" name="name" required>
        <br>
        <label for="email">邮箱:</label>
        <input type="email" name="email" required>
        <br>
        <label for="phone">电话:</label>
        <input type="number" name="phone" required>
        <br>
        <button type="submit">添加</button>
    </form>
    <br>
    <form action="queryUser.jsp" method="post">
        <h2>查询用户</h2>
        <label for="name">姓名:</label>
        <input type="text" name="name" required>
        <br>
        <button type="submit">查询</button>
    </form>
</body>
</html>


用户管理页面,用于添加用户到MySQL数据库中。在添加用户部分,首先获取用户通过表单输入的姓名、年龄和邮箱等信息,然后使用 JDBC 连接 MySQL 数据库,将用户信息插入到 users 表中。如果插入成功,则显示“添加用户成功”,否则显示“添加用户失败”。最后关闭数据库连接。

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<%
Class.forName("com.mysql.jdbc.Driver");
String name = request.getParameter("name");
String email = request.getParameter("email");
String phone = request.getParameter("phone");

// 建立数据库连接
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "123456";
Connection conn = DriverManager.getConnection(url, user, password);

// 创建SQL语句
String sql = "INSERT INTO users (name, email, phone) VALUES (?, ?, ?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, name);
pstmt.setString(2, email);
pstmt.setString(3, phone);

// 执行SQL语句
int count = pstmt.executeUpdate();

// 关闭数据库连接
pstmt.close();
conn.close();
%>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>添加用户</title>
</head>
<body>
    <h1>添加用户</h1>
    <% if (count > 0) { %>
        <p>添加用户成功。</p>
    <% } else { %>
        <p>添加用户失败。</p>
    <% } %>
    <a href="index.jsp">返回</a>
</body>
</html>


用户管理页面,用于从 MySQL 数据库中查询用户信息。在查询用户部分,同样是先获取用户输入的姓名,然后使用 JDBC 连接 MySQL 数据库,执行查询语句,查找 users 表中符合姓名条件的用户,并将查询结果显示在页面上。如果没有找到符合条件的用户,则显示“没有找到符合条件的用户”。最后关闭数据库连接。

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<%
Class.forName("com.mysql.jdbc.Driver");
String name = request.getParameter("name");

// 建立数据库连接
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "123456";
Connection conn = DriverManager.getConnection(url, user, password);

// 创建SQL语句
String sql = "SELECT * FROM users WHERE name = ?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, name);

// 执行SQL语句
ResultSet rs = pstmt.executeQuery();

// 显示查询结果
%>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>查询用户</title>
</head>
<body>
    <h1>查询用户</h1>
    <h2>查询结果</h2>
    <table border="1">
        <tr>
            <th>ID</th>
            <th>姓名</th>
            <th>邮箱</th>
            <th>电话</th>
        </tr>
        <% while (rs.next()) { %>
            <tr>
                <td><%= rs.getInt("id") %></td>
                <td><%= rs.getString("name") %></td>
                <td><%= rs.getString("email") %></td>
                <td><%= rs.getString("phone") %></td>
            </tr>
        <% } %>
    </table>
    <% if (!rs.next()) { %>
        <p>没有找到符合条件的用户。</p>
    <% } %>
    <% rs.close(); %>
    <a href="index.jsp">返回</a>
</body>
</html>

实验结论及心得

总体来说,通过 JDBC 实现了基本的增删查改功能。掌握在HTML页面中插入JSP脚本(java代码)的方法;编写简单的JSP页面,初步掌握JSP网页的设计原理;熟练掌握JSP的声明、表达式、小脚本和注释的使用;理解JSP页面(page)指令和动作的语法格式;掌握使用JSP基础语法结合JDBC完成数据库操作的基本方法。

附件

疑问

有疑问可以评论区留言。

源码

lib驱动 mysql-connector-j-8.0.32.jar JDBC驱动
src源码 软件工程网页设计与网站建设(JSP)实验 综合实训(一)增加和查询

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值