我发现了有些人喜欢静静看博客不聊天呐,
但是ta会点赞。
这样的人呢帅气低调有内涵,
美丽大方很优雅。
说的就是你,
不用再怀疑哦
目的:
1、熟悉JDBC的数据库访问模式。
2、掌握预处理语句的使用
实验要求:
- 使用Tomcat作为Web服务器
- 通过JDBC访问数据库,实现增删改查功能的实现
- 要求提交实验报告,将代码和实验结果页面截图放入报告中
实验内容:
编写一个网页,实现根据输入学生姓名的模糊查询,如果查找不到就显示“查无此人”
这个代码不能通过姓氏查询名字,在别的电脑却可以
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<form method="post">
<label>查找的姓名:</label>
<input type="text" name="name">
<input type="submit" value="查询">
</form>
<h1>查询结果</h1>
<table border="1">
<tr>
<th>编号</th>
<th>姓名</th>
<th>性别</th>
</tr>
<%
request.setCharacterEncoding("UTF-8");
// 数据库连接信息
String url = "jdbc:mysql://localhost:3306/dbjsp?useUnicode=true&characterEncoding=utf8";
String user = "root";
String password = "";
String name = request.getParameter("name");
try {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection(url, user, password);
String sql = "SELECT * FROM student WHERE name = ?";
PreparedStatement pst = conn.prepareStatement(sql);
pst.setString(1, name);
//out.println(pst);
ResultSet rs = pst.executeQuery();
// 检查结果集是否有数据
if (rs.next()) {
int id = rs.getInt("id");
String dbname = rs.getString("name");
String sex = rs.getString("sex");
%>
<tr>
<td><%= id %></td>
<td><%= dbname %></td>
<td><%= sex %></td>
</tr>
<%
} else {
out.println("查无此人");
}
// 关闭资源
rs.close();
pst.close();
conn.close();
} catch (Exception e) {
out.println("查询出错:" + e.getMessage());
}
%>
</table>
</body>
</html>
实现学生注册和登录功能,输入学生学号(stuId)和密码(stuPwd),如果学号不存在,跳转到注册界面,完成注册功能;如果学号存在,密码匹配显示“登录成功”,否则显示“登录失败”。注:要求用PreparedStatement实现。
2.1.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>学生登录</title>
<style>
.center{
text-align: center;
}
.login-btn {
background-color: #4CAF50; /* 添加你想要的颜色 */
color: white;
padding: 10px 20px;
border: none;
cursor: pointer;
border-radius: 5px;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 16px;
margin-top: 10px; /* 如果需要,可以调整按钮与输入框之间的间距 */
}
</style>
</head>
<body>
<div class="center" >
<h2>学生登录</h2>
<form method="post">
学号:<input type="text" name="stuId"><br>
密码:<input type="password" name="stuPwd"><br>
<input type="submit" value="登录" class="login-btn">
</form>
</div>
<%
try {
request.setCharacterEncoding("UTF-8");
String stuId = request.getParameter("stuId");
String stuPwd = request.getParameter("stuPwd");
// 数据库连接信息
if (stuId != null && stuPwd != null) {
String url = "jdbc:mysql://localhost:3306/dbjsp?serverTimezone=UTC";
String user = "root";
String password = "";
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection(url, user, password);
String sql = "SELECT * FROM student2 WHERE id = ?";
PreparedStatement pst = conn.prepareStatement(sql);
pst.setString(1, stuId);
ResultSet rs = pst.executeQuery();
// 输出查询结果
if (rs.next()) {
// 如果学号存在,检查密码是否匹配
String dbPwd = rs.getString("password");
if (dbPwd.equals(stuPwd)) {
// 密码匹配,登录成功
%>
<script>
alert("登录成功");
</script>
<%
} else {
// 密码不匹配,登录失败
%>
<script>
alert("登录失败");
</script>
<%
}
} else{
// 学号不存在,重定向到注册页面
response.sendRedirect("register.jsp");
}
// 关闭资源
if (rs != null)
rs.close();
if (pst != null)
pst.close();
if (conn != null)
conn.close();
}
} catch (Exception e) {
out.println(e.getMessage());
}
%>
</body>
</html>
register.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>学生登录</title>
<style>
.center{
text-align: center;
}
.login-btn {
padding: 10px 20px;
border: none;
cursor: pointer;
border-radius: 5px;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 16px;
margin-top: 10px; /* 如果需要,可以调整按钮与输入框之间的间距 */
}
</style>
</head>
<body>
<div class="center" >
<h2>学生注册</h2>
<form method="post">
学号:<input type="text" name="stuId"><br>
密码:<input type="password" name="stuPwd"><br>
<input type="submit" value="注册" class="login-btn">
</form>
<a href="2.1.jsp">返回登录页面</a>
</div>
<%
try {
request.setCharacterEncoding("UTF-8");
String stuId = request.getParameter("stuId");
String stuPwd = request.getParameter("stuPwd");
// 数据库连接信息
if (stuId != null && stuPwd != null)
{
String url = "jdbc:mysql://localhost:3306/dbjsp?serverTimezone=UTC";
String user = "root";
String password = "";
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection(url, user, password);
String sql = "INSERT INTO student2 (id, password) VALUES (?, ?)";
PreparedStatement pst = conn.prepareStatement(sql);
pst.setString(1, stuId);
pst.setString(2, stuPwd);
pst.execute();
%>
<script>
alert("注册成功");
</script>
<%
}
//response.sendRedirect("2.1.jsp");
} catch (Exception e) {
out.println(e.getMessage());
}
%>
</body>
</html>
运行结果
(选做)参考学习平台上“JDBC操作_增删改”的视频,使用表格展示数据库中stuinfo表中的个人信息,每行一条个人信息,表格新增两列,分别提供“修改”和“删除”两个链接。点击“修改”链接时,跳转到新页面可供用户修改和保存;点击“删除”时,跳转到新页面完成删除操作并提示操作结果。
T3.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>学生信息展示</h1>
<table>
<tr>
<th>学号</th>
<th>姓名</th>
<th>性别</th>
<th><a href="Add.jsp">添加</a></th>
</tr>
<%
request.setCharacterEncoding("UTF-8");
// 数据库连接信息
String url = "jdbc:mysql://localhost:3306/dbjsp";
String user = "root";
String password = "";
try {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection(url, user, password);
String sql = "SELECT * FROM student";
PreparedStatement pst = conn.prepareStatement(sql);
ResultSet rs = pst.executeQuery();
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
String sex = rs.getString("sex");
%>
<tr>
<td><%= id %></td>
<td><%= name %></td>
<td><%= sex %></td>
<td><a href="update.jsp?id=<%=id%>">修改</a></td>
<td><a href="delete.jsp?id=<%=id%>" onclick="if(confirm('确定删除?') == false) return false">删除</a></td>
</tr>
<%
}
// 关闭资源
rs.close();
pst.close();
conn.close();
} catch (Exception e) {
out.println("查询出错:" + e.getMessage());
}
%>
</table>
</body>
</html>
Add.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>添加学生</h1>
<form action="Add.jsp" method="post">
姓名:<input type="text" name="name"><br>
性别:<input type="radio" name="sex" value="男">男
<input type="radio" name="sex" value="女">女<br>
<input type="submit" value="添加">
</form>
<%
request.setCharacterEncoding("UTF-8");
// 数据库连接信息
String url = "jdbc:mysql://localhost:3306/dbjsp?useUnicode=true&characterEncoding=utf8";
String user = "root";
String password = "";
String name = request.getParameter("name");
String sex = request.getParameter("sex");
if(name != null && sex != null) {
try {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection(url, user, password);
//找出最后的id
String sql = "select id from student order by id desc limit 1";
PreparedStatement pst = conn.prepareStatement(sql);
ResultSet rs = pst.executeQuery();
int id = 0; //初始化
while (rs.next()) {
id = rs.getInt("id");
}
// out.println(id);
sql = "Insert into student(id, name, sex) values(?,?,?)";
pst = conn.prepareStatement(sql);
pst.setString(1, String.valueOf(id + 1)); //转字符
pst.setString(2, name);
pst.setString(3, sex);
int i = pst.executeUpdate();
out.println(i + "条记录插入成功");
pst.close();
conn.close();
} catch (Exception e) {
out.println("出错:" + e.getMessage());
}
}
%>
</body>
</html>
delete.jsp
<%--
Created by IntelliJ IDEA.
User: a1830
Date: 2024/11/19
Time: 22:58
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.sql.*" %>
<html>
<head>
<title>更新成功</title>
</head>
<body>
<%
request.setCharacterEncoding("UTF-8");
// 数据库连接信息
String url = "jdbc:mysql://localhost:3306/dbjsp";
String user = "root";
String password = "";
String id = request.getParameter("id");
try {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection(url, user, password);
//根据id删除数据
String sql = "delete from student where id = ?";
PreparedStatement pst = conn.prepareStatement(sql);
pst.setString(1, id);
int i = pst.executeUpdate();
if(i > 0) {
out.println("删除成功");
response.sendRedirect("T3.jsp"); //删除成功后跳转到显示信息页面
}
else {
out.println("删除失败");
}
pst.close();
conn.close();
} catch (Exception e) {
out.println("出错:" + e.getMessage());
}
%>
</body>
</html>
update.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>修改学生信息</h1>
<%
request.setCharacterEncoding("UTF-8");
int id = Integer.parseInt(request.getParameter("id"));
// 数据库连接信息
String url = "jdbc:mysql://localhost:3306/dbjsp?useUnicode=true&characterEncoding=utf8";
String user = "root";
String password = "";
try {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection(url, user, password);
String sql = "select name, sex from student where id=" + id;
PreparedStatement pst = conn.prepareStatement(sql);
ResultSet rs = pst.executeQuery();
if(rs.next()) {
String dbname = rs.getString("name");
String dbsex = rs.getString("sex");
%>
<form action="updateDo.jsp" method="post">
<input type="hidden" name="id" value=<%=id%>>
姓名:<input type="text" name="name" value=<%=dbname%>><br>
性别:<input type="radio" name="sex" value="男" <%="男".equals(dbsex) ? "checked" : ""%>>男
<input type="radio" name="sex" value="女" <%="女".equals(dbsex) ? "checked" : ""%>>女<br>
<input type="submit" value="更新">
</form>
<%
}
pst.close();
conn.close();
} catch (Exception e) {
out.println("出错:" + e.getMessage());
}
%>
</body>
</html>
updateDo.jsp
<%--
Created by IntelliJ IDEA.
User: a1830
Date: 2024/11/19
Time: 22:58
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.sql.*" %>
<html>
<head>
<title>更新成功</title>
</head>
<body>
<%
request.setCharacterEncoding("UTF-8");
// 数据库连接信息
String url = "jdbc:mysql://localhost:3306/dbjsp?useUnicode=true&characterEncoding=utf8";
String user = "root";
String password = "";
try {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection(url, user, password);
//更新数据
String sql = "update student set name = ?, sex = ? where id = ?";
PreparedStatement pst = conn.prepareStatement(sql);
pst.setString(1, request.getParameter("name"));
pst.setString(2, request.getParameter("sex"));
pst.setString(3, request.getParameter("id"));
int i = pst.executeUpdate();
if(i > 0) {
out.println("更新成功");
}
pst.close();
conn.close();
} catch (Exception e) {
out.println("出错:" + e.getMessage());
}
%>
</body>
</html>
运行结果
数据库:
添加功能
修改学生信息:
删除学生: