软件工程网页设计与网站建设(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语句。
使用JDBC API提供的Statement或PreparedStatement对象执行SQL SELECT语句。执行SELECT语句后,可以使用ResultSet对象来处理查询结果。
实验过程或源代码
输入并执行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)实验 综合实训(一)增加和查询