From ed884e68c827ea80d977e6440f4ca535fd5c8aae Mon Sep 17 00:00:00 2001 From: wangjiaoyan <715068310@qq.com> Date: Wed, 18 Dec 2024 17:23:33 +0800 Subject: [PATCH 1/8] =?UTF-8?q?=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/yj/bean/User.java | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/com/yj/bean/User.java b/src/com/yj/bean/User.java index 2cf50f8..2ca7389 100644 --- a/src/com/yj/bean/User.java +++ b/src/com/yj/bean/User.java @@ -5,53 +5,68 @@ package com.yj.bean; * @create 2020-08-21 10:41 */ public class User { + // 用户ID,使用Integer类型以便于处理数据库中的null值 private Integer id; + // 用户名 private String username; + // 密码 private String password; + // 邮箱地址 private String email; + // 用户地址 private String address; + // 获取用户地址 public String getAddress() { return address; } + // 设置用户地址 public void setAddress(String address) { this.address = address; } - + // 获取用户ID public Integer getId() { return id; } + // 设置用户ID public void setId(Integer id) { this.id = id; } + // 获取用户名 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 getEmail() { return email; } + // 设置邮箱 public void setEmail(String email) { this.email = email; } + // 重写toString方法,方便输出用户信息 @Override public String toString() { return "User{" + @@ -63,9 +78,11 @@ public class User { '}'; } + // 无参构造函数 public User() { } + // 带参数的构造函数,用于创建用户对象时初始化属性 public User(Integer id, String username, String password, String email, String address) { this.id = id; this.username = username; @@ -74,3 +91,4 @@ public class User { this.address = address; } } + -- 2.34.1 From 12f6fe2a18cdc4dfb058b76bb70edc3995cbb552 Mon Sep 17 00:00:00 2001 From: wangjiaoyan <715068310@qq.com> Date: Wed, 18 Dec 2024 17:28:30 +0800 Subject: [PATCH 2/8] =?UTF-8?q?=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/yj/dao/UserDao.java | 45 ++++++++++++++++++++++++++++++++----- 1 file changed, 40 insertions(+), 5 deletions(-) diff --git a/src/com/yj/dao/UserDao.java b/src/com/yj/dao/UserDao.java index da64439..43a886f 100644 --- a/src/com/yj/dao/UserDao.java +++ b/src/com/yj/dao/UserDao.java @@ -5,6 +5,7 @@ import com.yj.bean.User; import java.util.List; /** + * 用户数据访问接口 * @author yj * @create 2020-08-21 11:57 */ @@ -19,30 +20,64 @@ public interface UserDao { /** * 根据用户名和密码查询用户信息 - * @param username - * @param password + * @param username 用户名 + * @param password 密码 * @return 如果返回null则说明用户名或密码错误 */ - public User querybyUsernameAndPassword(String username,String password); + public User querybyUsernameAndPassword(String username, String password); /** * 保存用户信息 - * @param user - * @return + * @param user 用户对象 + * @return 返回影响的行数 */ public int saveUser(User user); + /** + * 添加新用户 + * @param user 用户对象 + * @return 返回影响的行数 + */ public int addUser(User user); + /** + * 根据用户ID删除用户 + * @param i 用户ID + * @return 返回影响的行数 + */ public int deleteUserById(int i); + /** + * 更新用户信息 + * @param user 用户对象 + * @return 返回影响的行数 + */ public int updateUser(User user); + /** + * 根据用户ID查询单个用户信息 + * @param id 用户ID + * @return 用户对象,如果不存在则返回null + */ public User queryUserById(Integer id); + /** + * 查询所有用户信息 + * @return 用户列表 + */ public List queryUsers(); + /** + * 查询用户表中的总记录数 + * @return 用户总数 + */ public Integer queryForPageTotalCount(); + /** + * 进行分页查询,获取指定页的数据 + * @param begin 起始位置 + * @param pageSize 每页显示的用户数量 + * @return 指定页的用户列表 + */ public List queryForPageItems(int begin, int pageSize); } -- 2.34.1 From 20ebba0694c321de1bc95bc5732346b38734d278 Mon Sep 17 00:00:00 2001 From: wangjiaoyan <715068310@qq.com> Date: Wed, 18 Dec 2024 17:32:31 +0800 Subject: [PATCH 3/8] =?UTF-8?q?=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/yj/dao/impl/UserDaoImpl.java | 41 ++++++++++++++++++++++------ 1 file changed, 32 insertions(+), 9 deletions(-) diff --git a/src/com/yj/dao/impl/UserDaoImpl.java b/src/com/yj/dao/impl/UserDaoImpl.java index 45c4836..f591a5b 100644 --- a/src/com/yj/dao/impl/UserDaoImpl.java +++ b/src/com/yj/dao/impl/UserDaoImpl.java @@ -10,56 +10,77 @@ import java.util.List; * @create 2020-08-21 15:04 */ public class UserDaoImpl extends BaseDao implements UserDao { + // 根据用户名查询用户信息 @Override public User querybyUsername(String username) { + // SQL 查询语句,选择 t_user 表中的相关字段 String sql = "select `id`,`username`,`password`,`email`,`address` from t_user where username = ?"; - return queryForOne(User.class,sql,username); + // 执行查询并返回单个 User 对象 + return queryForOne(User.class, sql, username); } + // 根据用户名和密码查询用户信息 @Override public User querybyUsernameAndPassword(String username, String password) { + // SQL 查询语句,通过用户名和密码查找用户 String sql = "select * from t_user where username = ? and password = ?"; - return queryForOne(User.class,sql,username,password); + // 执行查询并返回单个 User 对象 + return queryForOne(User.class, sql, username, password); } + // 保存用户信息 @Override public int saveUser(User user) { + // SQL 插入语句,向 t_user 表中插入新的用户数据 String sql = "insert into t_user(`username`,`password`,`email`,`address`) values(?,?,?,?)"; - return update(sql,user.getUsername(),user.getPassword(),user.getEmail(),user.getAddress()); + // 执行更新操作,返回受影响的行数 + return update(sql, user.getUsername(), user.getPassword(), user.getEmail(), user.getAddress()); } + // 添加用户信息(功能与 saveUser 相同) @Override public int addUser(User user) { + // SQL 插入语句,向 t_user 表中插入新的用户数据 String sql = "insert into t_user(`username`,`password`,`email`,`address`) values(?,?,?,?)"; - return update(sql,user.getUsername(),user.getPassword(),user.getEmail(),user.getAddress()); + // 执行更新操作,返回受影响的行数 + return update(sql, user.getUsername(), user.getPassword(), user.getEmail(), user.getAddress()); } + // 根据用户 ID 删除用户信息 @Override public int deleteUserById(int i) { + // SQL 删除语句,根据用户 ID 删除对应的记录 String sql = "delete from t_user where id = ?"; - return update(sql,i); + // 执行更新操作,返回受影响的行数 + return update(sql, i); } + // 更新用户信息 @Override public int updateUser(User user) { + // SQL 更新语句,根据用户 ID 更新用户的各项信息 String sql = "update t_user set `username`=?,`password`=?,`email`=?,`address`=? where id=?"; - return update(sql,user.getUsername(),user.getPassword(),user.getEmail(),user.getAddress(),user.getId()); + // 执行更新操作,返回受影响的行数 + return update(sql, user.getUsername(), user.getPassword(), user.getEmail(), user.getAddress(), user.getId()); } @Override public User queryUserById(Integer id) { + // 根据用户ID查询单个用户信息 String sql = "select * from t_user where id=?"; - return queryForOne(User.class,sql,id); + return queryForOne(User.class, sql, id); } @Override public List queryUsers() { + // 查询所有用户信息 String sql = "select * from t_user"; - return queryForList(User.class,sql); + return queryForList(User.class, sql); } @Override public Integer queryForPageTotalCount() { + // 查询用户表中总记录数,以便进行分页 String sql = "select count(*) from t_user"; Number count = (Number) queryForSingleValue(sql); return count.intValue(); @@ -67,7 +88,9 @@ public class UserDaoImpl extends BaseDao implements UserDao { @Override public List queryForPageItems(int begin, int pageSize) { + // 通过指定的偏移量和页面大小查询特定页的用户信息 String sql = "select * from t_user limit ?,?"; - return queryForList(User.class,sql,begin,pageSize); + return queryForList(User.class, sql, begin, pageSize); } + } -- 2.34.1 From 1b9efe0d6c18206d49c60bc038efb4eddf88a5e2 Mon Sep 17 00:00:00 2001 From: wangjiaoyan <715068310@qq.com> Date: Wed, 18 Dec 2024 18:11:14 +0800 Subject: [PATCH 4/8] =?UTF-8?q?=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/yj/service/UserService.java | 41 ++++++-- src/com/yj/service/impl/UserServiceImpl.java | 98 ++++++++++++----- src/com/yj/test/UserDaoTest.java | 53 ++++++++-- src/com/yj/test/UserServiceImplTest.java | 26 +++-- src/com/yj/test/UserServiceTest.java | 31 +++++- src/com/yj/web/UserServlet.java | 105 +++++++++++-------- 6 files changed, 258 insertions(+), 96 deletions(-) diff --git a/src/com/yj/service/UserService.java b/src/com/yj/service/UserService.java index aa039f4..99a39b4 100644 --- a/src/com/yj/service/UserService.java +++ b/src/com/yj/service/UserService.java @@ -7,39 +7,68 @@ import com.yj.bean.User; import java.util.List; /** + * 用户服务接口,定义与用户相关的操作 * @author yj * @create 2020-08-21 15:29 */ public interface UserService { + /** * 注册用户 - * @param user + * @param user 要注册的用户对象 */ public void registUser(User user); /** - * 登录 - * @param user - * @return + * 登录方法 + * @param user 包含用户名和密码的用户对象 + * @return 返回登录成功的用户对象,如果失败则返回null */ public User login(User user); /** * 检查用户名是否可用 - * @param username + * @param username 待检查的用户名 * @return 返回true表示用户名已存在,返回false表示用户名可用 */ public boolean existsUsername(String username); + /** + * 添加新用户 + * @param user 要添加的用户对象 + */ public void addUser(User user); - public void deleteUserById(int i); + /** + * 根据用户ID删除用户 + * @param id 要删除的用户ID + */ + public void deleteUserById(int id); + /** + * 更新用户信息 + * @param user 包含更新信息的用户对象 + */ public void updateUser(User user); + /** + * 根据用户ID查询用户 + * @param id 用户ID + * @return 返回对应的用户对象,如果不存在则返回null + */ public User queryUserById(Integer id); + /** + * 查询所有用户 + * @return 返回包含所有用户的列表 + */ public List queryUsers(); + /** + * 分页查询用户 + * @param pageNo 当前页码 + * @param pageSize 每页记录数 + * @return 返回分页对象,包含当前页的用户列表和其他分页信息 + */ public Page page(int pageNo, int pageSize); } diff --git a/src/com/yj/service/impl/UserServiceImpl.java b/src/com/yj/service/impl/UserServiceImpl.java index d5e29be..2212105 100644 --- a/src/com/yj/service/impl/UserServiceImpl.java +++ b/src/com/yj/service/impl/UserServiceImpl.java @@ -15,84 +15,124 @@ import java.util.List; */ public class UserServiceImpl implements UserService { + // 用户数据访问对象,使用UserDaoImpl实现 private UserDao userDao = new UserDaoImpl(); + /** + * 注册用户 + * @param user 要注册的用户对象 + */ @Override public void registUser(User user) { - userDao.saveUser(user); + userDao.saveUser(user); // 保存用户信息 } + /** + * 用户登录 + * @param user 包含用户名和密码的用户对象 + * @return 如果登录成功返回用户对象,否则返回null + */ @Override public User login(User user) { - return userDao.querybyUsernameAndPassword(user.getUsername(),user.getPassword()); + return userDao.querybyUsernameAndPassword(user.getUsername(), user.getPassword()); // 验证用户名和密码 } + /** + * 检查用户名是否存在 + * @param username 要检查的用户名 + * @return 如果不存在则返回false,反之则返回true + */ @Override public boolean existsUsername(String username) { if (userDao.querybyUsername(username) == null) { - return false; + return false; // 用户名不存在 } else { - return true; + return true; // 用户名存在 } } + /** + * 添加新用户 + * @param user 要添加的用户对象 + */ @Override public void addUser(User user) { - userDao.addUser(user); + userDao.addUser(user); // 调用数据访问层添加用户 } + /** + * 根据用户ID删除用户 + * @param i 用户ID + */ @Override public void deleteUserById(int i) { - userDao.deleteUserById(i); + userDao.deleteUserById(i); // 调用数据访问层删除用户 } + /** + * 更新用户信息 + * @param user 要更新的用户对象 + */ @Override public void updateUser(User user) { - userDao.updateUser(user); + userDao.updateUser(user); // 调用数据访问层更新用户 } + /** + * 根据用户ID查询用户信息 + * @param id 用户ID + * @return 返回对应的用户对象,如果用户不存在则返回null + */ @Override public User queryUserById(Integer id) { - return userDao.queryUserById(id); + return userDao.queryUserById(id); // 调用数据访问层查询用户 } + /** + * 查询所有用户的信息 + * @return 返回用户列表 + */ @Override public List queryUsers() { - return userDao.queryUsers(); + return userDao.queryUsers(); // 调用数据访问层获取所有用户 } @Override public Page page(int pageNo, int pageSize) { - Page page = new Page(); + Page page = new Page(); // 创建一个新的分页对象 - //设置每页记录数 - page.setPageSize(pageSize); + // 设置每页记录数 + page.setPageSize(pageSize); // 将每页的记录数设置为方法传入的pageSize - //设置总记录数 - Integer pageTotalCount = userDao.queryForPageTotalCount(); - page.setPageTotalCount(pageTotalCount); + // 设置总记录数 + Integer pageTotalCount = userDao.queryForPageTotalCount(); // 从数据库中获取总记录数 + page.setPageTotalCount(pageTotalCount); // 将总记录数设置到分页对象中 - //求总页码 - Integer pageTotal = pageTotalCount / pageSize; - if(pageTotalCount % pageSize >0) { - pageTotal+=1; + // 计算总页码 + Integer pageTotal = pageTotalCount / pageSize; // 根据总记录数和每页大小计算总页数 + if (pageTotalCount % pageSize > 0) { // 如果有剩余记录,则总页数加一 + pageTotal += 1; } - //设置当前页 - if(pageNo>pageTotal) { + + // 设置当前页 + if (pageNo > pageTotal) { // 如果请求的当前页码大于总页码,则设置为最后一页 pageNo = pageTotal; } - if(pageNo<1) { + if (pageNo < 1) { // 如果请求的当前页码小于1,则设置为第一页 pageNo = 1; } - page.setPageNo(pageNo); - //设置总页码 - page.setPageTotal(pageTotal); + page.setPageNo(pageNo); // 将最终确定的当前页码设置到分页对象中 + // 设置总页码 + page.setPageTotal(pageTotal); // 将计算出来的总页码设置到分页对象中 - int begin = (page.getPageNo() -1)*pageSize; - List items = userDao.queryForPageItems(begin,pageSize); - page.setItems(items); + // 计算当前页的起始记录索引 + int begin = (page.getPageNo() - 1) * pageSize; // 计算当前页的开始位置 + // 查询当前页的数据项 + List items = userDao.queryForPageItems(begin, pageSize); // 从数据库中查询当前页的数据 + page.setItems(items); // 将查询到的数据设置到分页对象中 - return page; + return page; // 返回包含分页信息的分页对象 } + } diff --git a/src/com/yj/test/UserDaoTest.java b/src/com/yj/test/UserDaoTest.java index 41bddf3..6bfc629 100644 --- a/src/com/yj/test/UserDaoTest.java +++ b/src/com/yj/test/UserDaoTest.java @@ -13,67 +13,102 @@ import java.util.List; * @author yj * @create 2020-08-21 15:14 */ +import org.junit.Test; + public class UserDaoTest { - UserDao userDao = new UserDaoImpl(); + // 创建UserDao的实例,用于测试 + UserDao userDao = new UserDaoImpl(); + + /** + * 测试根据用户名查询用户 + * 如果返回值为null,则表示用户名可用,否则表示用户名已存在 + */ @Test public void querybyUsername() { - if(userDao.querybyUsername("yan1gjie")==null) { + if (userDao.querybyUsername("yan1gjie") == null) { System.out.println("用户名可用"); } else { System.out.println("用户名已存在!"); } - //System.out.println(userDao.querybyUsername("yangjie")); + // System.out.println(userDao.querybyUsername("yangjie")); } + /** + * 测试根据用户名和密码查询用户 + * 如果返回值为null,则表示登录失败(密码错误或用户名错误),否则表示登录成功 + */ @Test public void querybyUsernameAndPassword() { - if(userDao.querybyUsernameAndPassword("yagjie","yanjie")==null) { + if (userDao.querybyUsernameAndPassword("yagjie", "yanjie") == null) { System.out.println("密码错误或用户名错误"); - }else { + } else { System.out.println("登陆成功"); } } + /** + * 测试保存用户信息 + * 输出保存用户操作的结果 + */ @Test public void saveUser() { - System.out.println(userDao.saveUser(new User(null,"yangjie2","yangjie","wzg168@qq.com","大河湾"))); + System.out.println(userDao.saveUser(new User(null, "yangjie2", "yangjie", "wzg168@qq.com", "大河湾"))); } + /** + * 测试添加新用户 + * 输出添加用户操作的结果 + */ @Test public void addUser() { - System.out.println(userDao.addUser(new User(null,"舒胡2贤","123456","123456@qq.com","贵州"))); + System.out.println(userDao.addUser(new User(null, "舒胡2贤", "123456", "123456@qq.com", "贵州"))); } + /** + * 测试根据用户ID删除用户 + * 输出删除用户操作的结果 + */ @Test public void deleteUserById() { System.out.println(userDao.deleteUserById(3)); } + /** + * 测试更新用户信息 + * 输出更新用户操作的结果 + */ @Test public void updateUser() { - System.out.println(userDao.updateUser(new User(3,"舒胡贤","123456","123456@qq.com","贵州"))); + System.out.println(userDao.updateUser(new User(3, "舒胡贤", "123456", "123456@qq.com", "贵州"))); } @Test public void queryUserById() { + // 根据用户ID查询用户信息 User user = userDao.queryUserById(1); + // 输出查询到的用户信息 System.out.println(user); } @Test public void queryUsers() { + // 查询所有用户的信息 List users = userDao.queryUsers(); + // 输出所有用户的信息 System.out.println(users); } @Test public void queryForPageTotalCount() { + // 查询用户总数,用于分页功能 System.out.println(userDao.queryForPageTotalCount()); } @Test public void queryForPageItems() { - System.out.println(userDao.queryForPageItems(1,2)); + // 查询指定页码和每页数量的用户信息 + // 这里查询第一页的2条用户记录 + System.out.println(userDao.queryForPageItems(1, 2)); } } \ No newline at end of file diff --git a/src/com/yj/test/UserServiceImplTest.java b/src/com/yj/test/UserServiceImplTest.java index 893d277..6d5c37c 100644 --- a/src/com/yj/test/UserServiceImplTest.java +++ b/src/com/yj/test/UserServiceImplTest.java @@ -6,35 +6,43 @@ import com.yj.service.impl.UserServiceImpl; import org.junit.Test; /** + * 用户服务实现类的测试类 * @author yj * @create 2020-08-21 15:38 */ public class UserServiceImplTest { + // 创建UserService的实例 UserService userService = new UserServiceImpl(); + @Test public void registUser() { - userService.registUser(new User(null,"admin","admin","225@qq.com","大河湾" - )); + // 测试用户注册功能,创建一个新的用户对象并进行注册 + userService.registUser(new User(null, "admin", "admin", "225@qq.com", "大河湾")); } @Test public void login() { - if(userService.login(new User(null,"admin123","admin",null,"大河湾"))==null) { + // 测试用户登录功能 + // 创建一个用户对象用于登录验证 + if (userService.login(new User(null, "admin123", "admin", null, "大河湾")) == null) { + // 如果登录返回为null,则输出登录失败 System.out.println("登录失败"); } else { - - System.out.println("登陆成功"); + // 登录成功的情况下输出提示 + System.out.println("登陆成功"); } } @Test public void existsUsername() { - if(userService.existsUsername("admin35135")==false) { + // 测试用户名是否存在的方法 + if (userService.existsUsername("admin35135") == false) { + // 如果用户名不存在,输出可用提示 System.out.println("用户名可用"); } else { - System.out.println("用户名已存在"); - + // 如果用户名已存在,输出提示 + System.out.println("用户名已存在"); } } -} \ No newline at end of file +} diff --git a/src/com/yj/test/UserServiceTest.java b/src/com/yj/test/UserServiceTest.java index 84649a2..3fb2f4a 100644 --- a/src/com/yj/test/UserServiceTest.java +++ b/src/com/yj/test/UserServiceTest.java @@ -8,34 +8,61 @@ import org.junit.Test; import static org.junit.Assert.*; /** + * UserService类的测试类,用于测试用户相关的方法 * @author yj * @create 2020-10-21 18:50 */ public class UserServiceTest { + // 创建UserService的实例,使用UserServiceImpl实现类 UserService userService = new UserServiceImpl(); + + /** + * 测试添加用户功能 + */ @Test public void addUser() { - userService.addUser(new User(null,"舒胡贤2","kj","1234@qq.com","kjk")); + // 调用addUser方法,添加一个新的用户 + userService.addUser(new User(null, "舒胡贤2", "kj", "1234@qq.com", "kjk")); } + /** + * 测试根据ID删除用户功能 + */ @Test public void deleteUserById() { + // 调用deleteUserById方法,根据用户ID删除用户(此处示例为删除ID为3的用户) userService.deleteUserById(3); } + /** + * 测试更新用户信息功能 + */ @Test public void updateUser() { + // 该方法尚未实现,用于测试更新用户信息的逻辑 } + /** + * 测试根据ID查询用户功能 + */ @Test public void queryUserById() { + // 该方法尚未实现,用于测试根据用户ID查询用户的逻辑 } + /** + * 测试查询所有用户功能 + */ @Test public void queryUsers() { + // 该方法尚未实现,用于测试查询所有用户的逻辑 } + /** + * 测试分页查询用户功能 + */ @Test public void page() { + // 该方法尚未实现,用于测试分页查询用户的逻辑 } -} \ No newline at end of file +} diff --git a/src/com/yj/web/UserServlet.java b/src/com/yj/web/UserServlet.java index beb06fd..49a2a34 100644 --- a/src/com/yj/web/UserServlet.java +++ b/src/com/yj/web/UserServlet.java @@ -21,59 +21,71 @@ import static com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY; */ public class UserServlet extends BaseServlet { + // 创建UserService的实例,使用UserServiceImpl实现类 private UserService userService = new UserServiceImpl(); - protected void ajaxExistsusername(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { - //获取请求参数 + // 获取请求参数中的用户名 String username = req.getParameter("username"); - //调用userService.existsUsername() - boolean exitsUsername = userService.existsUsername(username); - //把返回的结果封装为map对象 - Map resultMap = new HashMap<>(); - resultMap.put("exitsUsername",exitsUsername); + // 调用userService.existsUsername()方法,检查用户名是否存在 + boolean existsUsername = userService.existsUsername(username); + + // 将返回的结果封装为Map对象 + Map resultMap = new HashMap<>(); + resultMap.put("existsUsername", existsUsername); // 存在性结果存入Map + + // 使用Gson库将Map对象转换为JSON格式的字符串 Gson gson = new Gson(); String json = gson.toJson(resultMap); - resp.getWriter().write(json); - + // 将JSON字符串写入响应中,返回给客户端 + resp.getWriter().write(json); } /** * 处理登陆的功能 - * @param req - * @param resp + * + * @param req HttpServletRequest 请求对象 + * @param resp HttpServletResponse 响应对象 * @throws ServletException * @throws IOException */ protected void login(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { - //1、获取请求的参数 + // 1、获取请求的参数(用户名和密码) String username = req.getParameter("username"); String password = req.getParameter("password"); - User loginUser = userService.login(new User(null, username, password, null,null)); - if(loginUser==null) - { - req.setAttribute("msg","用户名或密码错误!"); - //req.setAttribute("username",username); - req.getRequestDispatcher("/pages/user/login.jsp").forward(req, resp); + + // 2、调用userService.login()方法进行登录验证,创建User对象传递用户名和密码 + User loginUser = userService.login(new User(null, username, password, null, null)); + + // 3、检查登录结果 + if (loginUser == null) { + // 登录失败,设置错误信息并转发到登录页面 + req.setAttribute("msg", "用户名或密码错误!"); // 设置错误消息 + // req.setAttribute("username", username); // 可选:保存用户名以便回显 + req.getRequestDispatcher("/pages/user/login.jsp").forward(req, resp); // 转发请求 } else { - //保存用户登录的信息到session域中 - req.getSession().setAttribute("user",loginUser); + // 登录成功,将用户信息保存到session域中,以便后续使用 + req.getSession().setAttribute("user", loginUser); + // 转发到登录成功页面 req.getRequestDispatcher("/pages/user/login_success.jsp").forward(req, resp); } } /** - * 注销 - * @param req - * @param resp - * @throws ServletException - * @throws IOException + * 注销用户登录 + * + * @param req HttpServletRequest 请求对象,用于获取请求信息 + * @param resp HttpServletResponse 响应对象,用于发送响应 + * @throws ServletException 如果请求处理出现错误 + * @throws IOException 如果输入输出操作失败 */ protected void logout(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { - + // 使当前会话失效,清除所有用户相关的session数据 req.getSession().invalidate(); + + // 重定向到应用的根路径,以返回主页或登录页面 resp.sendRedirect(req.getContextPath()); } @@ -85,30 +97,32 @@ public class UserServlet extends BaseServlet { * @throws IOException */ protected void regist(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { - - //获取Session验证码 + // 获取Session中存储的验证码 String token = (String) req.getSession().getAttribute(KAPTCHA_SESSION_KEY); - //删除Session中的验证码 + // 删除Session中的验证码,以防止重复使用 req.getSession().removeAttribute(KAPTCHA_SESSION_KEY); - //1、获取请求的参数 + + // 1、获取请求的参数,包括用户名、密码、确认密码、邮箱和验证码 String username = req.getParameter("username"); String password = req.getParameter("password"); String repwd = req.getParameter("repwd"); String email = req.getParameter("email"); String code = req.getParameter("code"); - User user = (User) WebUtils.copyParamToBean(req.getParameterMap(),new User()); - //2、检查验证码是否正确 abcde - if (token!=null&&token.equalsIgnoreCase(code)) { - //3、检查用户名是否可用 + // 将请求参数复制到User对象中 + User user = (User) WebUtils.copyParamToBean(req.getParameterMap(), new User()); + + // 2、检查验证码是否正确 + if (token != null && token.equalsIgnoreCase(code)) { + // 3、检查用户名是否已被注册 if (userService.existsUsername(username)) { - //不可用 跳回注册页面 - req.setAttribute("msg","用户名已存在!"); - req.setAttribute("username",username); - req.setAttribute("email",email); + // 如果用户名已存在,设置错误信息并转发回注册页面 + req.setAttribute("msg", "用户名已存在!"); + req.setAttribute("username", username); // 保留输入的用户名以便于用户填写 + req.setAttribute("email", email); // 保留输入的邮箱 req.getRequestDispatcher("/pages/user/regist.jsp").forward(req, resp); } else { - //可用 调用service保存到数据库 跳到注册成功页面 + // 如果用户名可用,调用服务层方法将用户信息保存到数据库,并转发到注册成功页面 userService.registUser(user); req.getRequestDispatcher("/pages/user/regist_success.jsp").forward(req, resp); } @@ -124,10 +138,19 @@ public class UserServlet extends BaseServlet { } protected void update(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { - User user = (User) WebUtils.copyParamToBean(req.getParameterMap(),new User()); + // 1、将请求参数复制到User对象中 + User user = (User) WebUtils.copyParamToBean(req.getParameterMap(), new User()); + + // 2、调用服务层方法更新用户信息 userService.updateUser(user); + + // 3、根据用户ID查询更新后的用户信息 User user1 = userService.queryUserById(user.getId()); - req.getSession().setAttribute("user",user1); + + // 4、将更新后的用户信息存储到Session中,以便后续使用 + req.getSession().setAttribute("user", user1); + + // 5、重定向到用户信息页面,展示更新后的信息 resp.sendRedirect(req.getContextPath() + "/pages/user/userinfo.jsp"); } -- 2.34.1 From d6de60f5e91abadf19b349559c49435534bd6e6c Mon Sep 17 00:00:00 2001 From: wangjiaoyan <715068310@qq.com> Date: Wed, 18 Dec 2024 18:52:09 +0800 Subject: [PATCH 5/8] =?UTF-8?q?=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/pages/user/login.jsp | 162 +++++++++++---------- web/pages/user/login_success.jsp | 48 +++---- web/pages/user/regist.jsp | 229 ++++++++++++++++++------------ web/pages/user/regist_success.jsp | 36 ++++- web/pages/user/userinfo.jsp | 60 ++++---- 5 files changed, 306 insertions(+), 229 deletions(-) diff --git a/web/pages/user/login.jsp b/web/pages/user/login.jsp index fc46037..57e65c0 100644 --- a/web/pages/user/login.jsp +++ b/web/pages/user/login.jsp @@ -2,96 +2,92 @@ - -登录页面 -<%@include file="/pages/common/header.jsp"%> - + // 获取密码输入框的值 + var passwordValue = $("#password").val(); + // 定义正则表达式,验证密码是否合法(同样的规则) + var passwordReg = /^\w{5,15}$/; + // 验证密码信息 + if (!passwordReg.test(passwordValue)) { + // 如果不合法,提示用户 + $("span.errorMsg").text("密码不合法!"); + return false; // 阻止表单提交 + } + + // 如果验证通过,允许表单提交 + return true; + }); + + }); + -
- -
- -