《黑马旅游网》综合案例(四)注册功能邮件激活

邮件激活:

  为什么要进行邮件激活?为了保证用户填写的邮箱是正确的。将来可以推广一些宣传信息,到用户邮箱中。

发送邮件

需要开启授权码:打开qq邮箱-->设置-->账户

 

 

 往下找找打这个点击开启 或 点击生成授权码:发送个信息即可开启就会有个授权码给你(或者qq密码也可以)

 

 打开MailUtils工具类:

 

 最下面main方法进行测试:

 

 打开QQ邮件进行查看:

用户点击邮件激活

用户激活就是修改用户表中的status为Y

分析:

 

UserServiceImpl:中编写

设置激活码和发送

public class UserServiceImpl implements UserService {
    private UserDao userDao = new UserDaoImpl();
    /**
     * 注册用户
     * @param user
     * @return
     */
    @Override
    public boolean regist(User user) {
        //根据用户名查询用户对象
        User u = userDao.findByUsername(user.getUsername());
        //判断是否为null
        if (u!=null){
            //用户名存在,注册失败
            return false;
        }
        //保存用户信息
        //设置激活码,唯一字符串
        user.setCode(UuidUtil.getUuid());
        //设置激活状态
        user.setStatus("N");
        userDao.save(user);
        //激活邮件发送,
        String content = "<a href='http://localhost/travel/activeUserServlet?code="+user.getCode()+"'>点击激活【旅游网】</a>";
        MailUtils.sendMail(user.getEmail(),content,"激活邮件");
        return true;
    }
}

去重新注册一个(注意:Email要填写你刚刚测试的邮箱)

就会收到邮件:点击

 

404还没进行编写

 

 

 UserDao:添加两个方法:

    User findByCode(String code);

    void updateStatus(User user);

UserDaoImpl:

    /**
     * 根据激活码查询用户对象
     * @param code
     * @return
     */
    @Override
    public User findByCode(String code) {
        User user = null;
        try {
            String sql = "select * from tab_user where code = ?";
            user = template.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class), code);
        } catch (DataAccessException e) {
            e.printStackTrace();
        }
        return user;
    }

    /**
     * 修改指定用户激活状态
     * @param user
     */
    @Override
    public void updateStatus(User user) {
        String sql = "update tab_user set status='Y' where uid=?";
        template.update(sql,user.getUid());
    }

注意这里需要加上两个字段:

UserService添加一个方法:

    boolean active(String code);

UserServiceImpl:

    /**
     * 激活用户
     * @param code
     * @return
     */
    @Override
    public boolean active(String code) {
        //根据激活码查询用户对象
        User user = userDao.findByCode(code);
        if (user!=null){
            //调用dao的修改激活状态的方法
            userDao.updateStatus(user);
            return true;
        }else {
            return false;
        }
    }

查看邮件点击激活就会跳转页面

 

 点击登录会跳转到登录页面

 

posted @ 2022-08-24 11:29  魔光领域  阅读(78)  评论(0编辑  收藏  举报