1.需求
在线考试管理系统---->用户信息管理模块
2.功能实现
1.用户信息注册
2.用户信息查询
3.用户信息删除
4.用户信息更新
3.准备工作
3.1创建用户信息表(t_users.frm)
drop table if exists t_users;
create table t_users (
userId int primary key auto_increment,#用户编号,设置为自增
userName varchar(255), #用户名
passWord varchar(255), #用户密码
sex char(1), #用户性别'男'or'女'
age int, #用户年龄
email varchar(255) unique #用户邮箱,设置为唯一不可重复
);
insert into t_users(userName,passWord,sex,age,email) value('张三','111','男',20,'zhangsan@qq.com');
insert into t_users(userName,passWord,sex,age,email) value('李四','222','女',21,'lisi@qq.com');
commit;
select * from t_users;
导入数据库中:
3.2创建用户信息表对应实体类
在src下,创建com.tsccg.entity.Users实体类
package com.tsccg.entity;
/**
* @Author: TSCCG
* @Date: 2021/08/14 15:18
* 用户信息表对应的实体类
*/
public class Users {
private Integer userId;
private String userName;
private String passWord;
private String sex;
private String age;
private String email;
/**
* 无参构造
*/
public Users() {
}
/**
* 有参构造
* @param userId 用户编号
* @param userName 用户名
* @param passWord 用户密码
* @param sex 用户性别'男'or'女'
* @param age 用户年龄
* @param email 用户邮箱
*/
public Users(Integer userId, String userName, String passWord, String sex, String age, String email) {
this.userId = userId;
this.userName = userName;
this.passWord = passWord;
this.sex = sex;
this.age = age;
this.email = email;
}
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
3.3编写JDBC工具类
在/web/WEB-INF目录下,创建一个文件夹,命名为lib,将MySQL驱动放进去。
在src下,创建一个配置文件JDBC.properties。把驱动名、数据库等信息都放到里面。
driverName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/db_user
user=root
password=123456
在src下,创建com.tsccg.util.JdbcUtil工具类。
使用资源绑定器获取相关信息。
package com.tsccg.util;
import java.sql.*;
import java.util.ResourceBundle;
/**
* @Author: TSCCG
* @Date: 2021/08/14 15:32
* JDBC工具类
* 1.注册驱动*
* 2.获取连接*
* 3.获取预编译的数据库操作对象
* 4.执行sql
* 5.处理查询结果集
* 6.关闭资源*
*/
public class JdbcUtil {
/**
* 创建资源绑定器对象
*/
private static final ResourceBundle BUNDLE = ResourceBundle.getBundle("JDBC");
//1.注册驱动
static {
try {
Class.forName(BUNDLE.getString("driverName"));
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
/**
* 2.获取连接
* @return 返回连接对象
* @throws SQLException 将SQLException异常上抛
*/
public static Connection connect() throws SQLException {
return DriverManager.getConnection(BUNDLE.getString("url"),
BUNDLE.getString("user"),BUNDLE.getString("password"));
}
/**
* 6.释放资源
* @param conn 连接对象
* @param stmt 数据库操作对象
* @param rs 查询结果集对象
*/
public static void closeAll(Connection conn, Statement stmt, ResultSet rs) {
if(rs != null) {
try {
rs.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if(stmt != null) {
try {
stmt.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if(conn != null) {
try {
conn.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
}
4.用户信息注册
4.1用户信息注册流程图
4.2创建前台页面
HTML文件属于静态资源文件,需要放在/web目录下。
在/web目录下新建user_add.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>用户注册</title>
</head>
<body>
<form action="http://localhost:8080/MyWeb/user/add" method="GET" id="form">
<h2 align="center">用户注册</h2>
<table align="center">
<!-- 用户名 -->
<tr>
<td>用户名:</td>
<td><input type="text" name="userName"></td>
</tr>
<!-- 密码 -->
<tr>
<td>密码:</td>
<td><input type="password" name="passWord"></td>
</tr>
<!-- 性别 -->
<tr>
<td>性别:</td>
<td>
<label>
<input type="radio" name="sex" value="男" checked="checked">男
</label>
<label>
<input type="radio" name="sex" value="女">女
</label>
</td>
</tr>
<!-- 年龄 -->
<tr>
<td>年龄:</td>
<td><input type="text" name="age"></td>
</tr>
<!-- 邮箱地址 -->
<tr>
<td>邮箱地址:</td>
<td><input type="text" name="email"></td>
</tr>
<!-- 提交 -->
<tr>
<td><input type="submit" value="提交"></td>
<td><input type="reset" value="重置"></td>
</tr>
</table>
</form>
</body>
</html>
4.3编写JDBC类【UserDao】
这个类的主要作用就是连接数据库,对数据库中的数据进行增删查改。
package com.tsccg.com.tsccg.dao;
import com.tsccg.entity.Users;
import com.tsccg.util.JdbcUtil;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
/**
* @Author: TSCCG
* @Date: 2021/08/14 21:07
*/
public class UserDao {
/**
* 向数据库中添加用户信息
* @param users 用户信息表对应实体类
* @return 返回
*/
public boolean add(Users users) {
Connection conn = null;
PreparedStatement ps = null;
boolean result = false;
try {
//注册、获取连接对象
conn = JdbcUtil.connect();
//获取预编译的数据库操作对象
String sql = "insert into t_users(userName,passWord,sex,age,email) " +
"value(?,?,?,?,?)";
ps = conn.prepareStatement(sql);
ps.setString(1,users.getUserName());
ps.setString(2,users.getPassWord());
ps.setString(3,users.getSex());
ps.setString(4,users.getAge());
ps.setString(5,users.getEmail());
if(ps.executeUpdate() > 0) {
result = true;
}
} catch (SQLException throwables) {
throwables.printStackTrace();
} finally {
JdbcUtil.closeAll(conn,ps,null);
}
return result;
}
}
4.4编写Servlet接口实现类【UserAddServlet】
这个类的主要作用有三个:
- 调用【请求对象】读取请求头/请求体中的请求参数信息,也就是用户输入的信息
- 调用【UserDao】将用户信息放入insert命令,并借助JDBC规范发送到数据库服务器
- 调用【响应对象】将【处理结果】以二进制形式写入响应体中
package com.tsccg.controller;
import com.tsccg.com.tsccg.dao.UserDao;
import com.tsccg.entity.Users;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
/**
* @Author: TSCCG
* @Date: 2021/08/14 20:11
*/
public class UserAddServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//通知请求对象,使用utf-8字符集对请求体内的二进制内容进行一次重新解码
request.setCharacterEncoding("utf-8");
insert(request,response);
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
insert(request,response);
}
private static void insert(HttpServletRequest request, HttpServletResponse response) throws IOException {
//1.调用【请求对象】读取【请求头】或【请求体】中的请求参数信息,得到用户的信息
String userName,passWord,sex,age,email;
UserDao dao = null;
Users users = null;
PrintWriter out = null;
userName = request.getParameter("userName");
passWord = request.getParameter("passWord");
sex = request.getParameter("sex");
age = request.getParameter("age");
email = request.getParameter("email");
//2.调用【UserDao】将用户信息放入insert命令,并借助JDBC规范发送到数据库服务器
dao = new UserDao();
users = new Users(null,userName,passWord,sex,age,email);
boolean result = dao.add(users);
//3.调用【响应对象】将【处理结果】以二进制形式写入响应体中
response.setContentType("text/html;charset=utf-8");
out = response.getWriter();
out.print(result ? "注册成功":"注册失败");
}
}
4.5测试
发布网站,开启服务器。
在地址栏请求访问用户注册页面,输入用户信息,点击提交。
如果用户信息成功写入数据库,则显示【注册成功】,反之显示【注册失败】。