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(pro