邮件激活
发送邮件
生成授权码:
打开QQ邮箱
在MailUtils工具类中设置:
执行MailUtils工具类中的main方法:
点击激活分析
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()); //判断u是否为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; } }
激活代码实现
ActiveUserServlet类:
@WebServlet("/activeUserServlet") public class ActiveUserServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //1、获取激活码 String code = request.getParameter("code"); if (code!=null){ //2、调用service完成激活 UserService service = new UserServiceImpl(); boolean flag = service.active(code); //3、判断标记 String msg = null; if (flag){ msg = "激活成功,请<a href='login.html'>登录</a>"; }else { msg = "激活失败,请联系管理员"; } response.setContentType("text/html;charset=utf-8"); response.getWriter().write(msg); } } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } }
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; } }
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.class), code); } catch (DataAccessException e) { e.printStackTrace(); } return user; } @Override public void updateStatus(User user) { String sql = "update tab_user set status = 'Y' where uid = ?"; template.update(sql,user.getUid()); }
修改UserDaoImpl实现类中的代码:
@Override public void save(User user) { //1、定义sql String sql = "insert into tab_user(username,password,name,birthday,sex,telephone,email,status,code) values(?,?,?,?,?,?,?,?,?)"; //2、执行sql template.update(sql,user.getUsername(),user.getPassword(),user.getName(),user.getBirthday() ,user.getSex(),user.getTelephone(),user.getEmail(),user.getStatus(),user.getCode()); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix