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="激活成功,请<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邮箱激活注册相关推荐
- java实现邮箱激活注册账号完整案例
项目业务流程介绍:1.用户填写用户名,邮箱,注册密码,提交注册信息(此时还不能登录系统).2.系统通过一个已配置好的QQ邮箱账号向刚刚注册的QQ邮箱发送激活邮件,邮件内容包含激活链接.3.注册用户登录 ...
- Java实现注册邮箱激活验证
最近从项目分离出来的注册邮箱激活功能,整理一下,方便下次使用 RegisterValidateService.java package com.app.service.impl;import java ...
- 使用 Java Mail 实现注册时邮箱激活验证功能
最近在做毕设中实现注册功能时使用到了邮箱激活验证,在此总结下. 简介 JavaMail 是提供给开发者处理电子邮件相关的编程接口,它是 SUN 发布的用来处理 email 的 API ,它可以方便地执 ...
- idea实现注册登录时使用QQ邮箱激活功能
首先建立数据库,我的数据库为: CREATE TABLE user (uid varchar(11) primary key , -- 账号type int default 1, -- 类型, 1注册 ...
- java 发送激活邮件 以qq邮箱为例
java发送激活邮件 以qq邮箱为例 1.首先发送者邮箱需要开启服务 登录qq邮箱,选择设置--账号,开启以上两个服务.会获得相应的两个授权码 2.以下代码为发送邮件代码 package com.em ...
- SSM登录注册和邮箱激活
1:首先是html1的样式 <!DOCTYPE html> <html lang="en"> <head><meta charset=&q ...
- java用户注册邮箱激活
电子邮件的应用非常广泛,例如在某网站注册了一个账户,自动发送一封欢迎邮件,通过邮件找回密码,自动批量发送活动信息等.但这些应用不可能和我们自己平时发邮件一样,先打开浏览器,登录邮箱,创建邮件再发送.本 ...
- Java案例-用户注册邮箱验证将邮箱激活码存入redis功能实现
<–start–> 用户注册时,要求用户填写注册邮箱,然后后台向用户的注册邮箱中发送绑定邮件,并将激活码保存到redis中. 手机短信验证码因为时效期短,只需要将短信验证码存储到sessi ...
- java web 邮箱激活 与 忘记密码(重置密码)
推荐: java后台通用权限管理系统(springboot)(https://blog.csdn.net/zwx19921215/article/details/97806078) 推荐:java 个 ...
最新文章
- python编程入门书-清华大学出版社-图书详情-《Python编程入门与案例详解》
- Oracle索引失效问题
- C程序背后的故事--头文件、库文件的查找
- 自动化测试框架搭建-邮件-5
- redis使用sysc超时_基于redis的分布式锁实现
- boost::functional模块功能性的测试程序
- Strange Partition CodeForces - 1471A
- LeetCode LCP 29. 乐团站位(数学 等差数列)
- 如何设置Server-U的IP限制
- Navicat 注册机破解问题
- php laravel手册,【laravel7.x中文文档】集合
- Java 一个简单的接口使用案例
- 最新二次开发知宇自动发卡系统源码/全网对接/功能齐全
- OKR教练:OKR评分,你可以这样做。
- 华为笔记本触摸板使用技巧
- Python数据分析之数据聚合与分组运算
- C语言填空概念题及答案,C语言填空题以及答案
- Java 标准 I/O 流编程一览笔录( 下 )
- DVWA Contradiction #01
- weblogic12c重置密码linux,weblogic 12c忘记domain密码重置方法