分析:
首先创建含有激活状态的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="激活成功,请<a href='login.html'>登录</a>";}else{//激活失败msg="激活失败,请联系管理员!";}response.setContentType("text/html;charset=utf-8");response.getWriter().write(msg);}

}

Service
/*

  • 注册用户

  • */

      public boolean regist(User user) {//根据用户名查询用户对象User u=userDao.findByUsername(user.getUsername());//判断u是否为nullif (u!=null){//用户名存在,注册失败return  false;}//保存用户信息
    //2.1设置激活码,唯一字符串 便于Servlet区分用户
    user.setCode(UuidUtil.getUuid());
    //设置激活状态user.setStatus("N");userDao.save(user);
    //激活邮件发送String content="<a href='http://localhost:8055/travel/activeUserServlet?   code="+user.getCode()+"'>点击激活</a>";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() {@Overrideprotected 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());
      }
      }

java邮箱激活注册相关推荐

  1. java实现邮箱激活注册账号完整案例

    项目业务流程介绍:1.用户填写用户名,邮箱,注册密码,提交注册信息(此时还不能登录系统).2.系统通过一个已配置好的QQ邮箱账号向刚刚注册的QQ邮箱发送激活邮件,邮件内容包含激活链接.3.注册用户登录 ...

  2. Java实现注册邮箱激活验证

    最近从项目分离出来的注册邮箱激活功能,整理一下,方便下次使用 RegisterValidateService.java package com.app.service.impl;import java ...

  3. 使用 Java Mail 实现注册时邮箱激活验证功能

    最近在做毕设中实现注册功能时使用到了邮箱激活验证,在此总结下. 简介 JavaMail 是提供给开发者处理电子邮件相关的编程接口,它是 SUN 发布的用来处理 email 的 API ,它可以方便地执 ...

  4. idea实现注册登录时使用QQ邮箱激活功能

    首先建立数据库,我的数据库为: CREATE TABLE user (uid varchar(11) primary key , -- 账号type int default 1, -- 类型, 1注册 ...

  5. java 发送激活邮件 以qq邮箱为例

    java发送激活邮件 以qq邮箱为例 1.首先发送者邮箱需要开启服务 登录qq邮箱,选择设置--账号,开启以上两个服务.会获得相应的两个授权码 2.以下代码为发送邮件代码 package com.em ...

  6. SSM登录注册和邮箱激活

    1:首先是html1的样式 <!DOCTYPE html> <html lang="en"> <head><meta charset=&q ...

  7. java用户注册邮箱激活

    电子邮件的应用非常广泛,例如在某网站注册了一个账户,自动发送一封欢迎邮件,通过邮件找回密码,自动批量发送活动信息等.但这些应用不可能和我们自己平时发邮件一样,先打开浏览器,登录邮箱,创建邮件再发送.本 ...

  8. Java案例-用户注册邮箱验证将邮箱激活码存入redis功能实现

    <–start–> 用户注册时,要求用户填写注册邮箱,然后后台向用户的注册邮箱中发送绑定邮件,并将激活码保存到redis中. 手机短信验证码因为时效期短,只需要将短信验证码存储到sessi ...

  9. java web 邮箱激活 与 忘记密码(重置密码)

    推荐: java后台通用权限管理系统(springboot)(https://blog.csdn.net/zwx19921215/article/details/97806078) 推荐:java 个 ...

最新文章

  1. python编程入门书-清华大学出版社-图书详情-《Python编程入门与案例详解》
  2. Oracle索引失效问题
  3. C程序背后的故事--头文件、库文件的查找
  4. 自动化测试框架搭建-邮件-5
  5. redis使用sysc超时_基于redis的分布式锁实现
  6. boost::functional模块功能性的测试程序
  7. Strange Partition CodeForces - 1471A
  8. LeetCode LCP 29. 乐团站位(数学 等差数列)
  9. 如何设置Server-U的IP限制
  10. Navicat 注册机破解问题
  11. php laravel手册,【laravel7.x中文文档】集合
  12. Java 一个简单的接口使用案例
  13. 最新二次开发知宇自动发卡系统源码/全网对接/功能齐全
  14. OKR教练:OKR评分,你可以这样做。
  15. 华为笔记本触摸板使用技巧
  16. Python数据分析之数据聚合与分组运算
  17. C语言填空概念题及答案,C语言填空题以及答案
  18. Java 标准 I/O 流编程一览笔录( 下 )
  19. DVWA Contradiction #01
  20. weblogic12c重置密码linux,weblogic 12c忘记domain密码重置方法

热门文章

  1. 如何用python显示出所有能被17整除的数_怎样判定一个数能被17整除
  2. 使用海蜘蛛HSpider模拟防火墙搭建网络案例说明v1.0
  3. 跟幼师谈恋爱什么梗_和幼师谈恋爱是怎么样的体验?
  4. 江苏省专转本计算机专业大类《计算机基础理论 1.2(一)小节习题答案》
  5. 国内的知名专利查询网站
  6. 秋招面试题(360)
  7. 基于51单片机的直流电机转速显示+加速减速启停
  8. 泰坦钩长还是机器人钩长_机器人钩子更远更长!最全教学详解助你上分
  9. android拍照程序崩溃,android
  10. CUDA硬件加速的理解