文章大纲
加载中...

待办清单项目6:编写注册和登录业务代码

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

注册业务实现

  1. 找到SysUserController,双击

  1. 把它的代码改成下面这样:
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");
        }
    }

}
  1. 把鼠标光标移动到报红的regist上,然后点一下在‘SysUserService’中创建方法‘regist’,如下图所示。

  1. 完善注释,如下图所示

  1. 双击文件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);
    }
}

测试注册业务

  1. 配置服务器,在URL后面添加register.html,然后开始调试项目

  1. 在注册页面输入已经存在的用户名和密码,然后点注册

  1. 可以看到跳转到了注册失败页面

  1. 返回注册页面,重写填写一个未注册过的用户名和密码,点注册

  1. 可以看到系统提示注册成功

  1. 在数据库界面双击sys_user表,可以看到表里面新增了我们刚注册的用户的用户名和密码,并且密码是经过加密的。

登录业务实现

  1. 双击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");
        }
    }
}
  1. 双击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);
}
  1. 再双击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);
    }
}

测试登录业务

  1. 把服务器配置里面的URL的最后改成login.html,然后启动服务器

  1. 输入正确的用户名和密码,然后点登录,可以跳转到待办事项页面

  1. 返回一下,再次输入错误的用户名或密码,点登录,可以发现,跳转到了登录失败页面


评论 (0)

暂无评论,来发表第一条评论吧!