邮件激活
邮件分析
为什么要进行邮件激活?为了保证用户填写的邮箱是正确的。将来可以推广一些宣传信息,到用户邮箱中(类似于广告的推送)
发送邮件
打开qq邮箱
生成授权码

在MailUtils工具类中设置:

执行MaiUtils工具类中的main方法:


点击邮件激活

UserServiceImpl
public class UserServiceImpl implements UserService { //声明一个成员变量 private UserDao userDao = new UserDaoImpl(); /** * 注册用户 * @param user * @return */ @Override public boolean regist(User user) { //1.根据用户名查询用户对象 User u = userDao.findByUsername(user.getUsername()); //判断u是否为null if(u != null){ //用户名存在,注册失败 return false; } //2.保存用户信息 //2.1设置激活码,唯一字符串 user.setCode(UuidUtil.getUuid()); //2.2设置激活状态 user.setStatus("N"); userDao.save(user);// 把user保存 //3.激活邮件发送,邮件正文? String content="<a href='http://localhost/travel/activeUserServlet?code="+user.getCode()+"'>点击激活【黑马旅游网】</a>"; MailUtils.sendMail(user.getEmail(),content,"激活邮件");//发送邮件 return true; } }
激活代码实现
ActiveUserServlet
package cn.itcast.travel.web.servlet; import cn.itcast.travel.service.UserService; import cn.itcast.travel.service.impl.UserServiceImpl; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @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
/** * 激活用户 * @param code * @return */ boolean active(String code);
UserServiceImpl
/** * 激活用户 * @param code * @return */ @Override public boolean active(String code) { //1.根据激活码查询用户对象 User user = userDao.findByCode(code); if(user != null){ //2.调用dao的修改激活状态的方法 userDao.updateStatus(user); return true; }else{ return false; } }
UserDao
/** * 根据激活码查询用户 * @param code * @return */ User findByCode(String code); /** * * @param user */ 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()); }
修改UserDaoImpl实现类中的代码:
/** * 添加用户 * @param user */ @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() ); }

浙公网安备 33010602011771号