待办清单项目6:编写注册和登录业务代码
4/17/2025
83 阅读

注册业务实现
- 找到
SysUserController
,双击
- 把它的代码改成下面这样:
package com.youngshu.todolist.controller;
import com.youngshu.todolist.pojo.SysUser;
import com.youngshu.todolist.service.SysUserService;
import com.youngshu.todolist.service.impl.SysUserServiceImpl;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
// 该类处理用户相关的请求
@WebServlet("/user/*")
public class SysUserController extends BaseController{
private SysUserService sysUserService = new SysUserServiceImpl();
// 注册用户
protected void regist(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 1. 获取请求参数
String username = req.getParameter("username");
String password = req.getParameter("password");
// 2. 调用服务层方法,完成用户注册
SysUser sysUser = new SysUser(null, username, password);
int rows = sysUserService.regist(sysUser);
// 3. 根据注册结果,返回不同的响应
if (rows > 0) {
// 注册成功,跳转到注册成功页面
resp.sendRedirect("/TodoList/registerSuccess.html");
} else {
// 注册失败,跳转到注册失败页面
resp.sendRedirect("/TodoList/registerFail.html");
}
}
}
- 把鼠标光标移动到报红的regist上,然后点一下在‘SysUserService’中创建方法‘regist’,如下图所示。
- 完善注释,如下图所示
- 双击文件
SysUserServiceImpl
文件,并粘贴下面的代码
package com.youngshu.todolist.service.impl;
import com.youngshu.todolist.dao.SysUserDao;
import com.youngshu.todolist.dao.impl.SysUserDaoImpl;
import com.youngshu.todolist.pojo.SysUser;
import com.youngshu.todolist.service.SysUserService;
import com.youngshu.todolist.utils.MD5Utils;
/**
* 实现用户服务接口
*/
public class SysUserServiceImpl implements SysUserService {
private SysUserDao userDao = new SysUserDaoImpl();
@Override
public int regist(SysUser sysUser) {
// 将用户的明文密码转换为密文密码
sysUser.setUser_pwd(MD5Utils.md5encode(sysUser.getUser_pwd()));
// 调用DAO层的方法 将sysUser信息存入数据库
return userDao.insert(sysUser);
}
}
测试注册业务
- 配置服务器,在URL后面添加
register.html
,然后开始调试项目
- 在注册页面输入已经存在的用户名和密码,然后点注册
- 可以看到跳转到了注册失败页面
- 返回注册页面,重写填写一个未注册过的用户名和密码,点注册
- 可以看到系统提示注册成功
- 在数据库界面双击sys_user表,可以看到表里面新增了我们刚注册的用户的用户名和密码,并且密码是经过加密的。
登录业务实现
- 双击
SysUserController
类,在regist
方法后面添加登录的业务代码login
添加完成后,该文件的完整代码如下:
package com.youngshu.todolist.controller;
import com.youngshu.todolist.pojo.SysUser;
import com.youngshu.todolist.service.SysUserService;
import com.youngshu.todolist.service.impl.SysUserServiceImpl;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import com.youngshu.todolist.utils.MD5Utils;
// 该类处理用户相关的请求
@WebServlet("/user/*")
public class SysUserController extends BaseController{
private SysUserService sysUserService = new SysUserServiceImpl();
// 注册用户
protected void regist(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 1. 获取请求参数
String username = req.getParameter("username");
String password = req.getParameter("password");
// 2. 调用服务层方法,完成用户注册
SysUser sysUser = new SysUser(null, username, password);
int rows = sysUserService.regist(sysUser);
// 3. 根据注册结果,返回不同的响应
if (rows > 0) {
// 注册成功,跳转到注册成功页面
resp.sendRedirect("/TodoList/registerSuccess.html");
} else {
// 注册失败,跳转到注册失败页面
resp.sendRedirect("/TodoList/registerFail.html");
}
}
// 登录用户
protected void login(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1 接收用户名和密码
String username = req.getParameter("username");
String password = req.getParameter("password");
//2 调用服务层方法,根据用户名查询用户信息
SysUser loginUser = sysUserService.findByUsername(username);
if(null == loginUser){
// 跳转到登录失败页面
resp.sendRedirect("/TodoList/loginError.html");
}else if(! MD5Utils.md5encode(password).equals(loginUser.getUser_pwd())){
//3 判断密码是否匹配
// 跳转到登录失败页面
resp.sendRedirect("/TodoList/loginError.html");
}else{
//4 跳转到待办事项页面
resp.sendRedirect("/TodoList/todoList.html");
}
}
}
- 双击
SysUserService
,添加根据用户名查找用户的方法
完整代码如下:
package com.youngshu.todolist.service;
import com.youngshu.todolist.pojo.SysUser;
/**
* 定义和系统用户相关的业务逻辑接口
*/
public interface SysUserService {
/**
* 用户注册
* @param sysUser
* @return 成功返回大于0的整数,失败返回0
*/
int regist(SysUser sysUser);
/**
* 根据用户名查找用户
* @param username
* @return SysUser对象,如果没有找到则返回null
*/
SysUser findByUsername(String username);
}
- 再双击
SysUserServiceImpl
,添加根据用户名查找用户的实现代码
添加后,完整代码如下:
package com.youngshu.todolist.service.impl;
import com.youngshu.todolist.dao.SysUserDao;
import com.youngshu.todolist.dao.impl.SysUserDaoImpl;
import com.youngshu.todolist.pojo.SysUser;
import com.youngshu.todolist.service.SysUserService;
import com.youngshu.todolist.utils.MD5Utils;
/**
* 实现用户服务接口
*/
public class SysUserServiceImpl implements SysUserService {
private SysUserDao userDao = new SysUserDaoImpl();
@Override
public int regist(SysUser sysUser) {
// 将用户的明文密码转换为密文密码
sysUser.setUser_pwd(MD5Utils.md5encode(sysUser.getUser_pwd()));
// 调用DAO层的方法 将sysUser信息存入数据库
return userDao.insert(sysUser);
}
@Override
public SysUser findByUsername(String username) {
return userDao.findByUsername(username);
}
}
测试登录业务
- 把服务器配置里面的URL的最后改成login.html,然后启动服务器
- 输入正确的用户名和密码,然后点登录,可以跳转到待办事项页面
- 返回一下,再次输入错误的用户名或密码,点登录,可以发现,跳转到了登录失败页面
评论 (0)
暂无评论,来发表第一条评论吧!