目录
- 前言
- 实验目的
- 实验内容
- 编程实现后台的用户管理功能
- 实验原理或流程图
- 实验原理
- 流程图
- 实验过程
- Adduser
- querAllUser
- doAddUser
- 结果展示
- 实验结论
前言
本实验的目的是让学生掌握使用JSP和JDBC技术对数据库中的记录进行修改和删除的方法。实验内容包括以下几个部分:
- 创建一个数据库表,存储学生的基本信息,如姓名、id、性别、e-mail等。
- 编写一个JSP页面,显示数据库表中的所有记录,并提供修改和删除的链接。
- 编写一个JSP页面,接收修改或删除的请求,并根据请求参数执行相应的SQL语句。
- 编写一个JSP页面,显示操作结果,并提供返回链接。
通过本实验,学生可以了解JSP和JDBC的基本原理和用法,以及如何利用它们实现对数据库的增删改查操作。
实验目的
- 理解使用JSP的核心知识和JDBC API进行数据库中数据的修改和删除操作的原理,学会相关编程方法;
- 能够根据贯穿项目案例的实际应用需要,综合运用JSP+JDBC相关知识和技术,完成数据库的连接、增加、查询、修改和删除操作。
实验内容
编程实现后台的用户管理功能
【步骤1】在数据库db_news2019中建立后台管理员表t_manager。
(1)建立管理员表t_manager, 结构如图所示。
其中:各个属性列分别表示管理员登录ID(主键),管理员真实姓名,管理员登录密码。
(2)在管理员表t_manager中录入若干条记录。
【步骤2】实现后台用户管理功能。
(1)新建项目。
(2)为项目配置构建路径,添加Apache Tomcat Server(例如:Apache Tomcat 7.0或8.5)以及MySQL驱动JAR包(例如:mysql-connector-java-5.1.45-bin.jar)。
(3)确认项目根目录下的子目录WEB-INF中包含web.xml(如果没有该文件,可从Tomcat安装目录中复制)。
(4)参考新闻管理(增查改删)案例代码,编写如下5个页面,以实现后台用户管理(增查改删)功能。
queryAllUser.jsp: 用户管理主界面
addUSer.jsp和doAddUser.jsp:增加用户表单页面和数据库操作(插入用户)页面
doDeleteUser.jsp: 删除用户页面(执行数据库删除操作)
doUpdateUser.jsp和updateUser.jsp: 修改用户信息页面(含数据库修改操作)
实验原理或流程图
实验原理
使用JDBC访问数据库的流程:
(0)加载和注册数据库驱动程序
a. 将驱动包(例如:mysql-connector-java-5.1.45-bin.jar)导入到项目的构建路径;
b. 加载、注册驱动类:Class.forName(“com.mysql.jdbc.Driver”);
(1)连接数据库(获取连接对象)
String url =
“jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8”;
String user = “root”;
String password = “admin”;//假设根用户的密码为admin
Connection conn = DriverManager.getConnection(url, user, password);
(2)操作数据库(查,增、删、改)
a.创建数据库操作对象
b.执行SQL语句
c.获得并处理结果
如果使用Statement接口:
a. 创建数据库操作对象
Statement stmt = conn.createStatement();
b. 执行SQL语句
String sql = “…”; // 根据需要构造SQL语句(不能带参数占位符)
ResultSet rs = stmt.executeQuery(sql); // 对于查询操作
int row = stmt.executeUpdate(sql); // 对于更新操作(增、删、改)
c. 获得并处理结果
对于更新操作:
if( row > 0 ){// 向页面输出更新的行数 }
对于查询操作:
while(rs.next()){
// 通过rs.getXxx方法,获取当前行的各个字段的值
…
}
如果使用PreparedStatement接口:
a. 创建数据库操作对象
String sql = “…”; // 根据需要构造SQL语句(可以带参数占位符)
PreparedStatement pstmt = conn.prepareStatement(sql);
b. 执行SQL语句
// 通过pstmt.setXxx()方法对SQL语句中的各个参数赋值(传递参数值)
…
ResultSet rs = stmt.executeQuery(); // 对于查询操作
int row = stmt.executeUpdate(); // 对于更新操作(增、删、改)
c. 获得并处理结果
对于更新操作:
if( row > 0 ){// 向页面输出更新的行数 }
对于查询操作:
while(rs.next()){
// 通过rs.getXxx()方法,获取当前行的各个字段的值。
…
}
// 当然,也可以通过rs.updateXxx()方法,修改当前行某个字段的值。
(3)释放资源
rs.close();
stmt.close(); 或 pstmt.close();
conn.close();
流程图
实验过程
根据页面的跳转流程,写出源代码
Adduser
<%@ page contentType="text/html;charset=utf-8" language="java" %>
<html>
<head>
<title>添加用户表单页面</title>
</head>
<body>
<form action="doAddUser.jsp" method="post">
<table align="center" border="0">
<tr>
<td>登录ID:</td>
<td><input type="text" name="id"></td>
</tr>
<tr>
<td>真实姓名:</td>
<td><input type="text" name="name"></td>
</tr>
<tr>
<td>性别:</td>
<td>
<label><input type="radio" name="gender" value="男">男</label>
<label><input type="radio" name="gender" value="女">女</label>
</td>
</tr>
<tr>
<td>E-Mail:</td>
<td><input type="email" name="email"></td>
</tr>
<tr>
<td>登录密码:</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td colspan="2">
<center>
<input type="submit" value="添加用户">
<input type="reset" value="重置">
</center>
</td>
</tr>
</table>
</form>
</body>
</html>
querAllUser
<%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.PreparedStatement" %>
<%@ page import="java.sql.ResultSet" %>
<%@ page import="java.sql.DriverManager" %>
<%@ page contentType="text/html;charset=utf-8" language="java" %>
<html>
<head>
<title>用户管理主界面</title>
</head>
<body>
<center>
<h2>登录成功!欢迎[<%=session.getAttribute("mname")%>]进入后台管理!</h2>
<hr>
<a href="addUser.jsp">增加用户</a>
<a href="mlogout.jsp">安全退出</a>
</center>
<%
Connection conn = null;
PreparedStatement stmt = null;
//ResultSet rs = null;
try {
String url= DriverManager.getConnection("jdbc:mysql://hostname:port/db_news2019", "root", "12345678");
Connection conn = DriverManager.getConnection(url,username,password);
stmt=conn.prepareStatement("select * from t_user");
String sql = "select * from t_user";
ResultSet rs = stmt.executeQuery(sql);
//rs=stmt.executeQuery();
Object id,name,password,sex,email,regdate;
%>
<table align="center" border="1" cellspacing="0">
<tr>
<th>登录ID</th>
<th>真实姓名</th>
<th>登录密码</th>
<th>性别</th>
<th>E-Mail</th>
<th>注册时间</th>
<th>管理员操作</th>
</tr>
<%
while(rs.next()) {
id = rs.getObject("uid");
name = rs.getObject("uname");
password = rs.getObject("upassword");
sex = rs.getObject("usex");
email = rs.getObject("uemail");
regdate = rs.getObject("uregdate");
%>
<tr>
<td><%=id%></td>
<td><%=name%></td>
<td><%=password%></td>
<td><%=sex%></td>
<td><%=email%></td>
<td><%=regdate%></td>
<td>
<a href="updateUser.jsp?id=<%=id%>&name=<%=name%>&password=<%=password%>&sex=<%=sex%>&email=<%=email%>">修改</a>
<a href="doDeleteUser.jsp?id=<%=id%>">删除</a>
</td>
</tr>
<%
}
rs.close();
stmt.close();
conn.close();
} catch (Exception e) {
out.print("查询失败!");
}
%>
</table>
</body>
</html>
doAddUser
<%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.PreparedStatement" %>
<%@ page import="java.sql.ResultSet" %>
<%@ page import="java.sql.DriverManager" %>
<%@ page contentType="text/html;charset=utf-8" language="java" %>
<html>
<head>
<title>用户管理主界面</title>
</head>
<body>
<center>
<h2>登录成功!欢迎[<%=session.getAttribute("mname")%>]进入后台管理!</h2>
<hr>
<a href="addUser.jsp">增加用户</a>
<a href="mlogout.jsp">安全退出</a>
</center>
<%
Connection conn = null;
PreparedStatement stmt = null;
//ResultSet rs = null;
try {
String url= DriverManager.getConnection("jdbc:mysql://hostname:port/db_news2019", "root", "12345678");
Connection conn = DriverManager.getConnection(url,username,password);
stmt=conn.prepareStatement("select * from t_user");
String sql = "select * from t_user";
ResultSet rs = stmt.executeQuery(sql);
//rs=stmt.executeQuery();
Object id,name,password,sex,email,regdate;
%>
<table align="center" border="1" cellspacing="0">
<tr>
<th>登录ID</th>
<th>真实姓名</th>
<th>登录密码</th>
<th>性别</th>
<th>E-Mail</th>
<th>注册时间</th>
<th>管理员操作</th>
</tr>
<%
while(rs.next()) {
id = rs.getObject("uid");
name = rs.getObject("uname");
password = rs.getObject("upassword");
sex = rs.getObject("usex");
email = rs.getObject("uemail");
regdate = rs.getObject("uregdate");
%>
<tr>
<td><%=id%></td>
<td><%=name%></td>
<td><%=password%></td>
<td><%=sex%></td>
<td><%=email%></td>
<td><%=regdate%></td>
<td>
<a href="updateUser.jsp?id=<%=id%>&name=<%=name%>&password=<%=password%>&sex=<%=sex%>&email=<%=email%>">修改</a>
<a href="doDeleteUser.jsp?id=<%=id%>">删除</a>
</td>
</tr>
<%
}
rs.close();
stmt.close();
conn.close();
} catch (Exception e) {
out.print("查询失败!");
}
%>
</table>
</body>
</html>
结果展示
实验结论
本实验通过JSP和JDBC技术实现了对数据库中的学生信息进行修改和删除的功能。实验过程中,首先创建了一个数据库和一个表,然后在JSP页面中编写了表单和链接,用于输入修改或删除的条件和数据。接着,在另一个JSP页面中,通过JDBC连接数据库,并根据表单或链接传递的参数,执行相应的SQL语句,完成对表的修改或删除操作。最后,在页面上显示操作结果和表的最新数据。本实验加深了对JSP和JDBC技术的理解和掌握,也提高了对数据库操作的能力和熟练度。