这是我其中一个项目的做法
我这里上张注册界面的图
这里我们主要讲的是邮箱验证, 以 网易163的邮箱为例子,当然要做邮箱发送需要开通协议并授权(不多说,自行bai度)
还要准备两个jar包放入lib里
1. activation.jar(附件可以下载)
2. mail.jar(附件可以下载)
------------------------------------------------------------------------------------------------------------------------------------
开始撸代码:
1.我们先创建一个发邮件的java类
/** * 发送邮件工具 * @author Administrator * */ public class EmailTools { /*** * 邮件发送方法 * @param address 邮件接收人 * @param subject 邮件的标题 * @param content 邮件的内容 * @param true 为成功 false 为失败 */ public static boolean send(String address,String subject,String content){ //1 创建session Properties pro = new Properties();//能储存键值对操作,方便存储 pro.setProperty("mail.transport.protocol", "smtp"); pro.put("mail.host", "smtp.163.com"); //下面输入用户名 pro.put("mail.from", "用户名写这@163.com"); //相当于客户端与邮件服务器的连接对象 Session session = Session.getDefaultInstance(pro); //开启调试模式 session.setDebug(true); //2 获取邮件发送对象 try { Transport transport = session.getTransport(); //设置发送人邮件账号第一个是账号名,第二个是授权码 transport.connect("888888","888888"); //3 创建邮箱信息 MimeMessage message = new MimeMessage(session); message.setSubject(subject);//设置邮件的标题 //设置邮件的内容和页面编码 message.setContent(content,"text/html;charset=UTF-8"); //4 发送邮件 transport.sendMessage(message, InternetAddress.parse(address)); return true; } catch (Exception e) { e.printStackTrace(); } return false; } }
2.调用上面的发送邮件工具(主要是register的方法)
package com.carshop.action.customer; import java.util.Date; import java.util.HashMap; import java.util.Map; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import com.carshop.common.EmailTools; import com.carshop.dao.UserDao; import com.carshop.dto.User; @Controller @RequestMapping("customer") public class UserAction { UserDao dao = null; /** * 用户注册 * @return */ @RequestMapping("/register") public String register(User user){ //发送激活邮箱 String activeCode = String.valueOf(System.currentTimeMillis()); String activeURL = ("http://localhost:1314/carshop/customer/active?userId="+user.getUserId()+"&activeCode="+activeCode); StringBuilder content = new StringBuilder(); content.append(user.getUserId()+"您好,请点击下面的连接进行激活账号:</br>"); content.append("<a href='"+activeURL+"'>"+activeURL+"</a>"); boolean flag = EmailTools.send(user.getEmail(), "账号注册(标题)", content.toString()); if(flag){ dao = new UserDao(); //创建账号的时间 user.setCreateDate(new Date()); user.setActiveCode(activeCode); System.out.println("register--"+user); dao.save(user); }else{ return "register"; } return "index"; } //激活状态 @RequestMapping("/active") public String avctive(String userId,String activeCode,Model data){ dao = new UserDao(); Map<String,String> map = new HashMap<>(); map.put("userId", userId); map.put("activeCode", activeCode); int count = dao.activeUser(map); String tip = count>0?"激活成功":"激活失败"; data.addAttribute("tip",tip); return "login"; } //注册检查是否重复 @RequestMapping("/userIdCheck") @ResponseBody public Map<String,Object> userIdChack(String userId){ dao = new UserDao(); boolean flag = dao.getUserByUserId(userId); Map<String,Object> map = new HashMap<>(); map.put("status", flag?1:0); return map; } }
附上我的注册页面(带页面jq验证)
<!doctype html> <html> <head> <meta charset="utf-8"> <title>注册页面</title> <body> <div class="h_title">欢迎注册</div> </div> <div class="content"> <form class="fr-re" action="${ctx}/customer/register" method="post"> <label>用户名</label> <input class="username" type="text" name="userId" id="userId" placeholder="6-20个大小写英文字母.符号或数字组成"/> <div class="clear"></div><strong id="userId_tip" class="normal">* 用户名不能为空!</strong> <label>密码</label> <input type="password" name="passWord" id="pwd" placeholder="输入密码"/> <div class="clear"></div><strong id="pwd_tip" class="normal">* 设置密码不能为空!</strong> <label>确认密码</label> <input type="password" name="okPwd" id="okPwd" placeholder="再次输入密码"/> <div class="clear"></div><strong id="okPwd_tip" class="normal">* 确认密码不能为空!</strong> <label>Email</label> <input type="text" name="email" id="email" placeholder="请输入您的邮箱地址"/> <div class="clear"></div><strong id="email_tip" class="normal">* 邮箱地址不能为空!</strong> <label>姓名</label> <input type="text" id="name" name="name" placeholder="请输入您的姓名"/> <div class="clear"></div><strong id="name_tip" class="normal">* 姓名不能为空!</strong> <label>手机号</label> <input type="text" id="phone" name="phone" placeholder="请输入您的常用手机号"/> <div class="clear"></div><strong id="phone_tip" class="normal">* 手机号码不能为空!</strong> <label>验证码</label> <input class="code" type="text" value=""/> <input class="but" type="button" value="点击获取"> <div class="clear"></div> <label class="protocol">《用户协议》</label> <input class="che" id="agreen" type="checkbox" checked="checked"/> <strong id="agreen_tip" class="normal"></strong> <a href="javascript:void(0)"><input class="butt" type="submit" name="registe" value="点击注册"/></a> </form> </div> <@carshop_footer.footer/> <script type="text/javascript"> $(function(){ //用户名是否重复检查 $("#userId").blur(function(){ var url = "${ctx}/customer/userIdCheck"; $.post(url,$("#userId"),function(data){ if(data.status == 1){ $("#userId_tip").html("用户名已存在!").show(); $("#userId").focus(); // 获取焦点 var isSubmit = false; }else{ $("#userId_tip").hide(); var isSubmit = true; } },"json"); }); /** 隐藏所有的提示信息 */ $("strong[id$='_tip']").hide(); /** 为表单绑定提交事件onsubmit */ $("form[class='fr-re']").submit(function(){ /** 表单输入校验 */ var userId = $("#userId"); var pwd = $("#pwd"); var okPwd = $("#okPwd"); var email = $("#email"); var provice = $("#provice"); var phone = $("#phone"); /** 隐藏所有的提示信息 */ $("strong[id$='_tip']").hide(); /** 定义是否提交表单的标识符 */ var isSubmit = true; if ($.trim(userId.val()) == ""){ isSubmit = false; $("#userId_tip").html("* 用户名不能空!").show(); userId.focus(); // 获取焦点 }else if (!/^\w{5,20}$/.test($.trim(userId.val()))){ isSubmit = false; $("#userId_tip").html("* 用户名必须在5-20位之间!").show(); userId.focus(); // 获取焦点 }else if ($.trim(pwd.val()) == ""){ isSubmit = false; $("#pwd_tip").html("* 设置密码不能空!").show(); pwd.focus(); // 获取焦点 }else if (!/^\w{6,20}$/.test($.trim(pwd.val()))){ isSubmit = false; $("#pwd_tip").html("* 设置密码必须在6-20位之间!").show(); pwd.focus(); // 获取焦点 }else if ($.trim(okPwd.val()) == ""){ isSubmit = false; $("#okPwd_tip").html("* 确认密码不能空!").show(); okPwd.focus(); // 获取焦点 }else if (!/^\w{6,20}$/.test($.trim(okPwd.val()))){ isSubmit = false; $("#okPwd_tip").html("* 确认密码必须在6-20位之间!").show(); okPwd.focus(); // 获取焦点 }else if (pwd.val() != okPwd.val()){ isSubmit = false; $("#okPwd_tip").html("* 两次密码输入不一致!").show(); }else if ($.trim(email.val()) == ""){ // 邮箱 isSubmit = false; $("#email_tip").html("* 邮箱地址不能为空!").show(); email.focus(); }else if ($.trim(name.val()) == ""){ // 姓名 isSubmit = false; $("#name_tip").html("* 姓名不能为空!").show(); name.focus(); }else if ($.trim(phone.val()) == ""){ // 手机号码 isSubmit = false; $("#phone_tip").html("* 手机号码不能为空!").show(); phone.focus(); }else if (!/^1[3|4|5|8]\d{9}$/.test($.trim(phone.val()))){ // 手机号码 isSubmit = false; $("#phone_tip").html("* 手机号码格式不正确!").show(); phone.focus(); }else if (!$("#agreen").attr("checked")){ // 同意 isSubmit = false; $("#agreen_tip").html("* 请勾选我已经阅读并同意!").show(); } return isSubmit; }); }); </script> </body> </html>