java邮箱激活注册

分析:
首先创建含有激活状态的javaBean对象
public class User implements Serializable {
private int uid;//用户id
private String username;//用户名,账号
private String password;//密码
private String name;//真实姓名
private String birthday;//出生日期
private String sex;//男或女
private String telephone;//手机号
private String email;//邮箱
private String status;//激活状态,Y代表激活,N代表未激活
private String code;//激活码(要求唯一)
省略了getter/setter toString 方法等
}

用户激活其实就是修改用户表中的status状态,我们在这用Y和N表示,Y表示已经激活,N表示未激活。
然后再创建一个封装信息的javaBean对象
private boolean flag;//后端返回结果正常为true,发生异常返回false
private Object data;//后端返回结果数据对象
private String errorMsg;//发生异常的错误消息

Servlet

@WebServlet("/activeUserServlet")
public class ActiveUserServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取激活码
String code=request.getParameter(“code”);
if (code!=null){
//调用service完成激活
Userservice service=new UserServiceImpl();
boolean flag=service.active(code);
//判断标记 响应不同信息
String msg=null;
if (flag){
//激活成功
msg=“激活成功,请登录”;
}else{
//激活失败
msg=“激活失败,请联系管理员!”;
}
response.setContentType(“text/html;charset=utf-8”);
response.getWriter().write(msg);
}
}

Service
/*

  • 注册用户
  • */
    @Override
    public boolean regist(User user) {
    //根据用户名查询用户对象
    User u=userDao.findByUsername(user.getUsername());
    //判断u是否为null
    if (u!=null){
    //用户名存在,注册失败
    return false;
    }
    //保存用户信息
    //2.1设置激活码,唯一字符串 便于Servlet区分用户
    user.setCode(UuidUtil.getUuid());
    //设置激活状态
    user.setStatus(“N”);
    userDao.save(user);
    //激活邮件发送
    String content=“点击激活”;
    MailUtils.sendMail(user.getEmail(),content,“激活邮件”);
    return true;

}

/*

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

}
Dao
/*

  • 根据激活码查找用户
  • /
    @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 (Exception 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());
    }

在这需要获取客户端的授权码大家可以参考一下获取qq邮箱授权码
mail工具类

import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;

/**

  • 发邮件工具类
    */

      public final class MailUtils {
      private static final String USER = ""; // 发件人称号,同邮箱地址
      private static final String PASSWORD = ""; // 使用邮箱授权码
    

    /**
    *

    • @param to 收件人邮箱

    • @param text 邮件正文

    • @param title 标题
      /
      /
      发送验证信息的邮件 */

       public static boolean sendMail(String to, String text, String title){
        try {
       final Properties props = new Properties();
       props.put("mail.smtp.auth", "true");
       props.put("mail.smtp.host", "smtp.qq.com");
      
       // 发件人的账号
       props.put("mail.user", USER);
       //发件人的密码
       props.put("mail.password", PASSWORD);
      
       // 构建授权信息,用于进行SMTP进行身份验证
       Authenticator authenticator = new Authenticator() {
           @Override
           protected PasswordAuthentication getPasswordAuthentication() {
               // 用户名、密码
               String userName = props.getProperty("mail.user");
               String password = props.getProperty("mail.password");
               return new PasswordAuthentication(userName, password);
           }
       };
       // 使用环境属性和授权信息,创建邮件会话
       Session mailSession = Session.getInstance(props, authenticator);
       // 创建邮件消息
       MimeMessage message = new MimeMessage(mailSession);
       // 设置发件人
       String username = props.getProperty("mail.user");
       InternetAddress form = new InternetAddress(username);
       message.setFrom(form);
      
       // 设置收件人
       InternetAddress toAddress = new InternetAddress(to);
       message.setRecipient(Message.RecipientType.TO, toAddress);
      
       // 设置邮件标题
       message.setSubject(title);
      
       // 设置邮件的内容体
       message.setContent(text, "text/html;charset=UTF-8");
       // 发送邮件
       Transport.send(message);
       return true;
      
       }catch (Exception e){
       e.printStackTrace();
      
      }
       return false;
       }
      
      public static void main(String[] args) throws Exception { // 做测试用
       MailUtils.sendMail("发件人邮箱","你好,这是一封测试邮件,无需回复。","测试邮件");
       System.out.println("发送成功");
       }
      
       }
      

Uuid工具类

import java.util.UUID;

/**

  • 产生UUID随机字符串工具类
    /
    public final class UuidUtil {
    private UuidUtil(){}
    public static String getUuid(){
    return UUID.randomUUID().toString().replace("-","");
    }
    /
    *
    • 测试
      */
      public static void main(String[] args) {
      System.out.println(UuidUtil.getUuid());
      System.out.println(UuidUtil.getUuid());
      System.out.println(UuidUtil.getUuid());
      System.out.println(UuidUtil.getUuid());
      }
      }
发布了16 篇原创文章 · 获赞 17 · 访问量 1430

猜你喜欢

转载自blog.csdn.net/amazinga/article/details/104405293