案例开发-日程管理2第二期(超详细教程、配备图文和源代码注释,没学过也能看懂)


前言

昨天我们做了这个项目的前期准备工作,今天就让我们来看看业务代码的开发吧


二、业务代码

1.注册业务处理

1. Controller层处理

在SysUserController中接收用户注册请求的业务处理方法:
SysUserController代码:

package com.fire.schedule.controller;


import com.fire.schedule.pojo.SysUser;
import com.fire.schedule.service.SysUserService;
import com.fire.schedule.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 BaseContoller {

    private SysUserService userService =new SysUserServiceImpl();

    /**
     * 接收用户注册请求的业务处理方法( 业务接口 不是java中的interface  )
     * @param req
     * @param resp
     * @throws ServletException
     * @throws IOException
     */
    protected void regist(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 1 接收客户端提交的参数
        String username = req.getParameter("username");
        String userPwd = req.getParameter("userPwd");
        // 2 调用服务层方法,完成注册功能
            //将参数放入一个SysUser对象中,在调用regist方法时传入
        SysUser sysUser =new SysUser(null,username,userPwd);
        int rows =userService.regist(sysUser);
        // 3 根据注册结果(成功  失败) 做页面跳转
        if(rows>0){
            resp.sendRedirect("/registSuccess.html");
        }else{
            resp.sendRedirect("/registFail.html");
        }
    }
}

2.service层处理

SysUserServiceImpl用户完成注册的业务方法
SysUserService代码:

package com.fire.schedule.service;

import com.fire.schedule.pojo.SysUser;
public interface SysUserService {
    /**
     * 用户完成注册的业务方法
     * @param registUser 用于保存注册用户名和密码的对象
     * @return 注册成功返回>0的整数,否则返回0
     */
    int regist(SysUser registUser);
}```

SysUserServiceImpl代码:

package com.fire.schedule.service.impl;

import com.fire.schedule.dao.SysUserDao;
import com.fire.schedule.dao.impl.SysUserDaoImpl;
import com.fire.schedule.pojo.SysUser;
import com.fire.schedule.service.SysUserService;
import com.fire.schedule.util.MD5Util;
public class SysUserServiceImpl  implements SysUserService {
    private SysUserDao  userDao =new SysUserDaoImpl();
    @Override
    public int regist(SysUser sysUser) {

        // 将用户的明文密码转换为密文密码
        sysUser.setUserPwd(MD5Util.encrypt(sysUser.getUserPwd()));
        // 调用DAO 层的方法  将sysUser信息存入数据库
        return userDao.addSysUser(sysUser);
    }
}

3.dao层处理

SysUserDao代码:

package com.fire.schedule.dao;

import com.fire.schedule.pojo.SysUser;

public interface SysUserDao {
    /**
     * 向数据库中增加一条用户记录的方法
     * @param sysUser 要增加的记录的username和user_pwd字段以SysUser实体类对象的形式接收
     * @return 增加成功返回1 增加失败返回0
     */
    int addSysUser(SysUser sysUser);
}

SysUserDaoImpl代码:

package com.fire.schedule.dao.impl;

import com.fire.schedule.dao.BaseDao;
import com.fire.schedule.dao.SysUserDao;
import com.fire.schedule.pojo.SysUser;

public class SysUserDaoImpl extends BaseDao implements SysUserDao {

    @Override
    public int addSysUser(SysUser sysUser) {
        String sql ="insert into sys_user values(DEFAULT,?,?)";
        return baseUpdate(sql,sysUser.getUsername(),sysUser.getUserPwd());
    }
}

以上就是注册业务的实现了,下面来看看登录业务的实现吧

2.登录业务实现

这里我将注册业务的代码也复制了进来,方便大家进行学习

1. Controller层处理

SysUserController代码:

package com.fire.schedule.controller;


import com.fire.schedule.pojo.SysUser;
import com.fire.schedule.service.SysUserService;
import com.fire.schedule.service.impl.SysUserServiceImpl;
import com.fire.schedule.util.MD5Util;
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 userService = new SysUserServiceImpl();



    protected void regist(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        String username = req.getParameter("username");
        String userPwd = req.getParameter("userPwd");

        SysUser sysUser = new SysUser(null,username,userPwd);

        int row = userService.regist(sysUser);
        if (row > 0) {
            resp.sendRedirect("/registSuccess.html");
        }else {
            resp.sendRedirect("/registFail.html");

        }

    }
    protected void login(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1 接收用户名和密码
        String username = req.getParameter("username");
        String userPwd = req.getParameter("userPwd");
        //2 调用服务层方法,根据用户名查询用户信息
        SysUser loginUser =userService.findByUsername(username);
        if(null == loginUser){
            // 跳转到用户名有误提示页
            resp.sendRedirect("/loginUsernameError.html");
        }else if(! MD5Util.encrypt(userPwd).equals(loginUser.getUserPwd())){
            //3 判断密码是否匹配
            // 跳转到密码有误提示页
            resp.sendRedirect("/loginUserPwdError.html");
        }else{
            //4 跳转到首页
            resp.sendRedirect("/showSchedule.html");
        }

    }
}

2.service层处理

SysUserService代码:

package com.fire.schedule.service;

import com.fire.schedule.pojo.SysUser;

public interface SysUserService {

    int regist(SysUser sysUser);


    /**
     * 根据用户名获得完整用户信息的方法
     * @param username 要查询的用户名
     * @return 如果找到了返回SysUser对象,找不到返回null
     */
    SysUser findByUsername(String username);


}

SysUserServicelmpl代码:

package com.fire.schedule.service.impl;

import com.fire.schedule.dao.SysUserDao;
import com.fire.schedule.dao.impl.SysUserDaoImpl;
import com.fire.schedule.pojo.SysUser;
import com.fire.schedule.service.SysUserService;
import com.fire.schedule.util.MD5Util;

public class SysUserServiceImpl implements SysUserService {

    private SysUserDao userDao = new SysUserDaoImpl();
    @Override
    public int regist(SysUser sysUser) {

        // 将用户的明文密码转换为密文密码
        sysUser.setUserPwd(MD5Util.encrypt(sysUser.getUserPwd()));
        // 调用DAO 层的方法  将sysUser信息存入数据库
        return userDao.addSysUser(sysUser);
    }


    @Override
    public SysUser findByUsername(String username) {
        // 调用服务层方法,继续查询

        return userDao.findByUsername(username);
    }
}

3.dao层处理

SysUserDao代码:

package com.fire.schedule.dao;

import com.fire.schedule.pojo.SysUser;

public interface SysUserDao {
    /**
     * 向数据库中增加一条用户记录的方法
     * @param sysUser 要增加的记录的username和user_pwd字段以SysUser实体类对象的形式接收
     * @return 增加成功返回1 增加失败返回0
     */
    int addSysUser(SysUser sysUser);


    /**
     * 根据用户名获得完整用户信息的方法
     * @param username 要查询的用户名
     * @return 如果找到了返回SysUser对象,找不到返回null
     */
    SysUser findByUsername(String username);
}

SysUserDaolmpl代码:

package com.fire.schedule.dao.impl;

import com.fire.schedule.dao.BaseDao;
import com.fire.schedule.dao.SysUserDao;
import com.fire.schedule.pojo.SysUser;

import java.util.List;

public class SysUserDaoImpl extends BaseDao implements SysUserDao {

    @Override
    public int addSysUser(SysUser sysUser) {
        String sql ="insert into sys_user values(DEFAULT,?,?)";
        return baseUpdate(sql,sysUser.getUsername(),sysUser.getUserPwd());
    }


    @Override
    public SysUser findByUsername(String username) {
        String sql ="select uid,username, user_pwd userPwd from sys_user where username = ?";
        List<SysUser> userList = baseQuery(SysUser.class, sql, username);
        return  null != userList&& userList.size()>0? userList.get(0):null;
    }
}

三、功能检验

1.注册功能检验

当username和数据库中有相同的时出跳转以下页面:
在这里插入图片描述

当注册成功时会跳转下面页面:
在这里插入图片描述
并且数据库中会成功添加:在这里插入图片描述

2.登录功能检验

当密码有误时,会跳转下面页面:
在这里插入图片描述
当用户名有误时,会跳转下面页面:
在这里插入图片描述
登录成功:
在这里插入图片描述


总结

例如:以上就是今天要讲的内容,本文对一个对实现登录注册业务的小项目进行讲解剖析,希望大家能够从中间学到东西,最后感谢大家的观看,我们下期再见哦

  • 12
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值