javaweb邮箱验证码发送验证与点击倒计时实现

要求

实现邮件注册必须要引用mail.jar可以去网上下载

体验网址

欢迎大家注册使用以及通过留言访问
网址链接

效果图

界面效果图
检验邮箱是否已被注册
实现发送点击效果
接收验证码代码

前台h5注册部分代码

<div class="card border-0 shadow card--register" id="register">
			<div class="card-body">
				<h2 class="card-title">会员注册</h2>
				
				
				
				<form action="AddUserServlet" method="post" onsubmit="return CheckForm2(this)">
					<div class="form-group">
						<input class="form-control" type="text" name="userName" placeholder="用户名" onfocus="FocusItemRegister(this)" onblur="CheckItemRegister(this)"/>
						<span class="has-error"></span>
					</div>
					<div class="form-group" >
						<input  type="email" style="float:left;display:flex;width:100%"  name = "userMail" class="form-control col-md-8"  placeholder="邮箱" οnfοcus="FocusItemRegister(this)" οnblur="CheckItemRegister(this)"/>
						<input  type="button" class="form-control col-md-4" name = "text"  value="获取验证码"  οnclick="SendMail(this)" />
						<span class="has-error"></span>
					</div>
					<div class="form-group" >
						<input type="text" class="form-control" name="code"  placeholder="验证码" onfocus="FocusItemRegister(this)" onblur="CheckItemRegister(this)"/>
						<span class="has-error"></span>
						
					</div>
					<div class="form-group">
						<input type="password" class="form-control " name = "userPassword" id = "userPassword"  placeholder="密码" οnfοcus="FocusItemRegister(this)" οnblur="CheckItemRegister(this)"/>
						<span class="has-error"></span>
						
					</div>
					<div class="form-group">
						<input type="password"  name = "EnteruserPassword" class="form-control "   placeholder="确认密码" οnfοcus="FocusItemRegister(this)" οnblur="CheckItemRegister(this)"/>
						<span class="has-error"></span>
					</div>
					<button class="btn btn-lg">注册</button>
				</form>
			</div>
			<button class="btn btn-back js-btn" data-target="welcome"><i class="fas fa-angle-left"></i></button>
		</div>

js部分(实现点击以后等待一分钟)

博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

function FocusItemRegister(obj) {
	if ($(obj).attr('name') == 'userMail') {// 如果为验证码
		$(obj).next().next().html('');
	} else {
		$(obj).next('span').html('');
	}
}

var mails = "";
var flag2 = false;
var flag3 = false;
var flag4 = false;
var flag5 = false;
var flag6 = false;
function CheckItemRegister(obj) {
	var msgBox = $(obj).next('span');
	switch ($(obj).attr('name')) {
	case "userName":
		if (obj.value == "") {
			msgBox.html("用户名不能为空");

			flag2 = false;
		} else {
			msgBox.html();

			flag2 = true;
		}
		break;
	case "userMail":
		var mailBox = $(obj).next().next();
		var mail = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/;
		var mails = $.trim($(obj).val());
		if (obj.value == "") {
			mailBox.html("邮箱不能为空");
			flag3 = false;
		} else {
			var url = "usernamecheck?name=" + encodeURI($(obj).val()) + "&"
					+ new Date().getTime();
			// "true" 用户已存在 用户名异步刷新
			$.get(url, function(data) {
				if (!mail.exec(mails)) {
					mailBox.html("邮箱输入格式不正确");
					flag3 = false;
				} else {
					if(data == 'true'){
						mailBox.html("邮箱账号已存在");
						flag1 = false;
						flag3 = false;
					}else{
						msgBox.html();
						flag1 = true;
						flag3 = true;
				}

				}
			});
		}
		break;
	case "EnteruserPassword":
		if (obj.value == "") {
			msgBox.html("确认密码不能为空");
			flag4 = false;
		} else if ($(obj).val() != $('input[name="userPassword"]').val()) {
			msgBox.html("两次密码不一致");
			flag4 = false;
		}else {
			msgBox.html();
			flag4 = true;
		}
		break;
	case "userPassword":
		if (obj.value == "") {
			msgBox.html("密码不能为空");
			flag5 = false;
		} else {
			if ($(obj).val().length < 6) {
				msgBox.html("长度不能小于六位");
				flag5 = false;
			} else {
				msgBox.html();
				flag5 = true;
			}

		}
		break;
	case "code":

		if (obj.value == "") {
			msgBox.html("验证码不能为空");
			flag6 = false;
		} else {
			var url = "checkmailCode?code=" + encodeURI($(obj).val()) + "&"
					+ new Date().getTime();
			$.get(url, function(data) {
				if (data == 'false') {
					msgBox.html("验证码有误");
					flag6 = false;
				} else {
					msgBox.html();
					flag6 = true;
				}
			})
		}
		break;
	}
}
/**
 * 发送邮件
 * 
 * @param obj
 * @returns
 */
var InterValObj; // timer变量,控制时间
var count = 60; // 间隔函数,1秒执行
var curCount;// 当前剩余秒数
var mailBox;
function SendMail(obj) {
	var mail = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/;
	var mails = $.trim($(obj).prev().val());
	mailBox = $(obj);
	if (mailBox.prev().val() == "") {

	} else {
		if (!mail.exec(mails)) {

		} else {
			if (flag1) {
				getcheckCodeTime();
				var url = "SendQMailServlet?userMail="
						+ encodeURI($(obj).prev().val()) + "&"
						+ new Date().getTime();
				$.get(url, function(data) {
					if (data == 'false') {
						mailBox.val("发送失败");
					}
				});
			}
		};
		

	}

}

function getcheckCodeTime() {

	curCount = count;
	mailBox.attr("disabled", "true");
	InterValObj = window.setInterval(SetRemainTime, 1000); // 启动计时器,1秒执行一次

}

function SetRemainTime() {
	if (curCount == 0) {
		window.clearInterval(InterValObj);// 停止计时器
		mailBox.removeAttr("disabled");// 启用按钮
		mailBox.val("重新发送");
	} else {
		curCount--;
		mailBox.val(curCount + "秒后重发");
	}
}

usernamecheck Servlet

package servlet;

import java.io.IOException;
import java.io.PrintWriter;

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 dao.UserDao;
import entity.User;

/**
 * Servlet implementation class usernamecheck
 */
@WebServlet("/usernamecheck")
public class usernamecheck extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public usernamecheck() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html; charset=UTF-8");
		response.setCharacterEncoding("utf-8");
		String name = request.getParameter("name");
		UserDao userdao = new UserDao();
		PrintWriter out = response.getWriter();
		if(userdao.isExist(name)) {
			out.print("true");
		}else {
			out.print("false");
		}
		
		out.close();
		
		
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

邮件发送servlet

package mailServlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.mail.MessagingException;
import javax.mail.internet.AddressException;
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 javax.servlet.http.HttpSession;

import DBUtil.SendQMail;

/**
 * Servlet implementation class SendQMailServlet
 */
@WebServlet("/SendQMailServlet")
public class SendQMailServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public SendQMailServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html; charset=UTF-8");
		response.setCharacterEncoding("utf-8");
		String mail = request.getParameter("userMail");
		SendQMail sendQMail = new SendQMail();
		HttpSession session = request.getSession();
		String mailCode = sendQMail.getcode();
		PrintWriter out = response.getWriter();
		boolean result;
		try {
			result = sendQMail.sendMail(mail, mailCode);
			if(result) {
				//邮件发送成功,向session域中发送mailCode
				session.setAttribute("mailCode", mailCode);
			}
			out.print("true");
			
		} catch (AddressException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			out.print("false");
			
		} catch (MessagingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			out.print("false");
			
		} finally {
			out.close();
		}
		
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

sendQMail类

package DBUtil;

import java.util.Date;
import java.util.Properties;

import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class SendQMail {
	//私聊  qq 给 其他邮箱发
		public static boolean sendMail(String Mail,String emailMsg) throws AddressException, MessagingException  {
			final String serverHost = "smtp.qq.com";                       //发送方邮件服务器
			
			final String from = "你的邮箱发送地址";  //发件人地址
			final String shouqunma = "你的邮箱许可";
			Properties properties = new Properties();
			properties.put("mail.smtp.host", serverHost);
			properties.put("mail.smtp.auth", "true");//true 一定要用引号引起来
			properties.put("mail.transport.protocol", "smtp");
			properties.put("mail.smtp.port", "465"); //因为QQ邮箱的端口和人家的不一样,所以要指定
			//设置安全提供者
			properties.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
			properties.put("mail.smtp.socketFactory.fallback", "false");
			properties.put("mail.smtp.socketFactory.port", "465");
			properties.put("mail.smtp.starttls.enable", "true");
			
			Session session = Session.getDefaultInstance(properties); //不使用Auth命令认证
			session.setDebug(true);
			//创建并设置消息内容
			MimeMessage msg = new MimeMessage(session);
			msg.setFrom(new InternetAddress(from));
			msg.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(Mail));
			Transport transport = session.getTransport("smtp");
				msg.setSubject("XXX文库"); // 设置邮件主题
				msg.setText("您正在进行XXX文库注册,您的6位激活码为"+emailMsg+"发送时间: "+new Date().toString());
				transport.connect(serverHost,from, shouqunma ); //发送主机服务器,账号,授权码,例如:(QQ:qwuhxadj,163:自己设置)
				transport.sendMessage(msg,msg.getAllRecipients());
			
			transport.close();
			return true;
		}
		
		
		//随机验证码
		public static String getcode(){
			String vcode = "";
	        for (int i = 0; i < 6; i++) {
	            vcode = vcode + (int)(Math.random() * 9);
	        }
	        return vcode;
		}	

}

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值