wjy_branch
wangjiaoyan 3 weeks ago
parent 20ebba0694
commit 1b9efe0d6c

@ -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 truefalse
*/
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<User> queryUsers();
/**
*
* @param pageNo
* @param pageSize
* @return
*/
public Page<User> page(int pageNo, int pageSize);
}

@ -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 falsetrue
*/
@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<User> queryUsers() {
return userDao.queryUsers();
return userDao.queryUsers(); // 调用数据访问层获取所有用户
}
@Override
public Page<User> page(int pageNo, int pageSize) {
Page<User> page = new Page<User>();
Page<User> page = new Page<User>(); // 创建一个新的分页对象
//设置每页记录数
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<User> items = userDao.queryForPageItems(begin,pageSize);
page.setItems(items);
// 计算当前页的起始记录索引
int begin = (page.getPageNo() - 1) * pageSize; // 计算当前页的开始位置
// 查询当前页的数据项
List<User> items = userDao.queryForPageItems(begin, pageSize); // 从数据库中查询当前页的数据
page.setItems(items); // 将查询到的数据设置到分页对象中
return page;
return page; // 返回包含分页信息的分页对象
}
}

@ -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<User> 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));
}
}

@ -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("用户名已存在");
}
}
}
}

@ -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() {
// 该方法尚未实现,用于测试分页查询用户的逻辑
}
}
}

@ -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<String,Object> resultMap = new HashMap<>();
resultMap.put("exitsUsername",exitsUsername);
// 调用userService.existsUsername()方法,检查用户名是否存在
boolean existsUsername = userService.existsUsername(username);
// 将返回的结果封装为Map对象
Map<String, Object> 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");
}

Loading…
Cancel
Save