《黑马旅游网》综合案例(四)注册功能邮件激活
邮件激活:
为什么要进行邮件激活?为了保证用户填写的邮箱是正确的。将来可以推广一些宣传信息,到用户邮箱中。
发送邮件
需要开启授权码:打开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; } }
查看邮件点击激活就会跳转页面
点击登录会跳转到登录页面