(1) 在RegisterServlet 用户注册类中
public class RegisterServlet extends HttpServlet { private static final long serialVersionUID = 1L; @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String userName=request.getParameter("username"); String password=request.getParameter("password"); String email=request.getParameter("email"); System.out.println(userName+" "+password+" "+email); UserService userService=new UserServiceImpl(); if(userService.doRegister(userName,password,email)){ request.setAttribute("msg", "注册成功,请登录邮箱激活账号"); }else{ request.setAttribute("msg", "注册失败,请检查相关信息"); } request.getRequestDispatcher("/result.jsp").forward(request, response); } }
public class ActiveServlet extends HttpServlet { private static final long serialVersionUID = 1L; @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String code=request.getParameter("code"); UserService userService=new UserServiceImpl(); if(userService.activeUser(code)){ request.getRequestDispatcher("/welcome.jsp").forward(request, response); }else{ request.getRequestDispatcher("/fail.jsp").forward(request, response); } } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request, response); } }
public interface UserService { boolean doRegister(String userName, String password, String email); boolean activeUser(String code); }
public class UserServiceImpl implements UserService { public boolean doRegister(String userName, String password, String email) { // 这里可以验证各字段是否为空 //利用正则表达式(可改进)验证邮箱是否符合邮箱的格式 if(!email.matches("^\\w+@(\\w+\\.)+\\w+$")){ return false; } //生成激活码 String code=CodeUtil.generateUniqueCode(); User user=new User(userName,email,password,0,code); //将用户保存到数据库 UserDao userDao=new UserDaoImpl(); //保存成功则通过线程的方式给用户发送一封邮件 if(userDao.save(user)>0){ new Thread(new MailUtil(email, code)).start();; return true; } return false; } public boolean activeUser(String code) { UserDao userDao=new UserDaoImpl(); if(userDao.activeUser(code)>0){ return true; }else{ return false; } } }
public interface UserDao { int save(User user); int activeUser(String code); }
public class UserDaoImpl implements UserDao{ public int save(User user) { int num=0; try { Connection conn=DBUtil.getConnection(); String sql ="insert into user(username,email,password,state,code) values(?,?,?,?,?)"; PreparedStatement pstmt=conn.prepareStatement(sql); pstmt.setString(1, user.getUserName()); pstmt.setString(2, user.getEmail()); pstmt.setString(3, user.getPassword()); pstmt.setInt(4, user.getState()); pstmt.setString(5, user.getCode()); num=pstmt.executeUpdate(); DBUtil.close(conn,pstmt, null); } catch (SQLException e) { e.printStackTrace(); } return num; } public int activeUser(String code) { int num=0; try { Connection conn=DBUtil.getConnection(); String sql="update user set state=1 where code=?"; PreparedStatement pstmt=conn.prepareStatement(sql); pstmt.setString(1, code); num=pstmt.executeUpdate(); DBUtil.close(conn,pstmt,null); } catch (SQLException e) { e.printStackTrace(); } return num; } }
public class CodeUtil { //生成唯一的激活码 public static String generateUniqueCode(){ return UUID.randomUUID().toString().replaceAll("-", ""); } }
public class MailUtil implements Runnable { private String email;// 收件人邮箱 private String code;// 激活码 public MailUtil(String email, String code) { this.email = email; this.code = code; } public void run() { // 1.创建连接对象javax.mail.Session // 2.创建邮件对象 javax.mail.Message // 3.发送一封激活邮件 String from = "xxx@qq.com";// 发件人电子邮箱 String host = "smtp.qq.com"; // 指定发送邮件的主机smtp.qq.com(QQ)|smtp.163.com(网易) Properties properties = System.getProperties();// 获取系统属性 properties.setProperty("mail.smtp.host", host);// 设置邮件服务器 properties.setProperty("mail.smtp.auth", "true");// 打开认证 try { //QQ邮箱需要下面这段代码,163邮箱不需要 MailSSLSocketFactory sf = new MailSSLSocketFactory(); sf.setTrustAllHosts(true); properties.put("mail.smtp.ssl.enable", "true"); properties.put("mail.smtp.ssl.socketFactory", sf); // 1.获取默认session对象 Session session = Session.getDefaultInstance(properties, new Authenticator() { public PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("xxx@qq.com", "xxx"); // 发件人邮箱账号、授权码 } }); // 2.创建邮件对象 Message message = new MimeMessage(session); // 2.1设置发件人 message.setFrom(new InternetAddress(from)); // 2.2设置接收人 message.addRecipient(Message.RecipientType.TO, new InternetAddress(email)); // 2.3设置邮件主题 message.setSubject("账号激活"); // 2.4设置邮件内容 String content = "
Copyright © 2009-2022 www.wtcwzsj.com 青羊区广皓图文设计工作室(个体工商户) 版权所有 蜀ICP备19037934号