spring实现注册(邮箱验证 有效时间)

发布时间:2025-03-18 点击:148
spring实现注册(邮箱验证 有效时间) 实现逻辑
用户注册时,输入邮箱地址,获取验证码,我们随机生成5位数字验证码发送给用户的邮箱。同时我们把验证码和当前时间存储到httpsession对象中(格式 : 验证码#时间)。
然后用户通过表单提交自己的注册信息和验证码。我们先判断用户名是否重复(为空和密码一致就交给前端吧),然后我们从session中取出我们存储的字符串分隔,获取验证码和生成验证码的时间,先比较验证码是否正确,如果正确就比较时间是否在一段时间内,都符合才注册(进行数据库操作)。
代码实现尊崇ssh框架结构,action,service,dao逐层调用。
1:引入jar包
spring自带的包 spring-context-support, 就可以使用spring自带的发送邮件api。
2:创建mailutil对象
import java.util.properties; import org.springframework.mail.simplemailmessage; import org.springframework.mail.javamail.javamailsenderimpl; public class mailutil { //使用对象注入的方式 记得配置文件 private javamailsenderimpl senderimpl; public void setsenderimpl(javamailsenderimpl senderimpl) { this.senderimpl = senderimpl; } private simplemailmessage mailmessage; public void setmailmessage(simplemailmessage mailmessage) { this.mailmessage = mailmessage; } private properties prop; public void setprop(properties prop) { this.prop = prop; } //发送验证码的方法,to是目标邮箱地址,text是发送的验证码(事先生成) public boolean sendmail (string to,string text) { system.out.println("sendmail…util…"); try{ //设定mail server senderimpl.sethost("smtp.163.com"); // 设置收件人,寄件人 用数组发送多个邮件 // string[] array = new string[] {"sun111@163.com","sun222@sohu.com"}; // mailmessage.setto(array); mailmessage.setto(to); mailmessage.setfrom( "自己的邮箱" ); mailmessage.setsubject( "主题" ); mailmessage.settext("内容" text); senderimpl.setusername("自己的邮箱"); senderimpl.setpassword("密码"); prop.put("mail.smtp.auth","true"); prop.put("mail.smtp.timeout","25000"); senderimpl.setjavamailproperties(prop); //发送邮件 senderimpl.send(mailmessage); system.out.println("发送邮件成功"); return true; }catch (exception e) { system.out.println("发送邮件失败"); return false; } } }
3:创建timeutil类
因为我们是保证有效时间的,所以就要时间工具
import java.text.simpledateformat; import java.util.calendar; import java.util.date; import org.junit.test; public class timeutil { //获取时间 返回毫秒级时间 public string gettime() { system.out.println("gettime…util…"); //simpledateformat sdf = new simpledateformat("yyyy-mm-dd hh:mm:ss"); calendar calendar = calendar.getinstance(); long date = calendar.gettime().gettime(); //获取毫秒时间 //string datestringpastring = sdf.format(date); //system.out.println(datestringpastring); return date.tostring(); } public boolean cmptime(string time) { system.out.println("cmptime…util…"); long temptime = long.parselong(time); system.out.println("temptime" temptime); //在获取现在的时间 calendar calendar = calendar.getinstance(); long date = calendar.gettime().gettime(); //获取毫秒时间 system.out.println("date" date); if(date – temptime > 600000 ) { //10分钟 return false; } else { return true; } } }
4:action
//获取邮箱验证码 public string getvcode() throws ioexception { system.out.println("getvcode…action…"); //获得request和response对象 httpservletrequest request = servletactioncontext.getrequest(); httpservletrespons

外贸官网空间哪个好
虚拟主机提供商是什么
域名NTI.com仲裁结果出炉 被告成功保住域名
六字母域名行情好?分析域名长度和价格的关系
.com域名能做cname解析么 .com域名怎么做解析
租云服务器需要什么手续
冰河云服务器怎么样好用吗
SugarHosts虚拟主机欧洲机房优惠方案选择