Java实现邮箱激活验证

来源:互联网 发布:天刀捏脸数据男禁欲 编辑:程序博客网 时间:2024/04/29 21:50

最近从项目分离出来的注册邮箱激活功能,整理一下,方便下次使用
RegisterValidateService.java

[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片
package com.app.service.impl;

import java.text.ParseException;
import java.util.Date;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.app.dao.UserDao;
import com.app.tools.MD5Tool;
import com.app.tools.MD5Util;
import com.app.tools.SendEmail;
import com.app.tools.ServiceException;
import com.code.model.UserModel;

@Service
public class RegisterValidateService {

@Autowired  private UserDao userDao;  public void processregister(String email){      UserModel user=new UserModel();      Long as=5480l;      user.setId(as);      user.setName("xiaoming");      user.setPassword("324545");      user.setEmail(email);      user.setRegisterTime(new Date());      user.setStatus(0);      ///如果处于安全,可以将激活码处理的更复杂点,这里我稍做简单处理      //user.setValidateCode(MD5Tool.MD5Encrypt(email));      user.setValidateCode(MD5Util.encode2hex(email));      userDao.save(user);//保存注册信息      ///邮件的内容      StringBuffer sb=new StringBuffer("点击下面链接激活账号,48小时生效,否则重新注册账号,链接只能使用一次,请尽快激活!

“);
sb.append(“);
sb.append(email);
sb.append(“&validateCode=”);
sb.append(user.getValidateCode());
sb.append(“”>http://localhost:8080/springmvc/user/register?action=activate&email=“);
sb.append(email);
sb.append(“&validateCode=”);
sb.append(user.getValidateCode());
sb.append(“”);

    //发送邮件      SendEmail.send(email, sb.toString());      System.out.println("发送邮件");  }    ///传递激活码和email过来  public void processActivate(String email , String validateCode)throws ServiceException, ParseException{         //数据访问层,通过email获取用户信息      UserModel user=userDao.find(email);      //验证用户是否存在       if(user!=null) {            //验证用户激活状态            if(user.getStatus()==0) {               ///没激活              Date currentTime = new Date();//获取当前时间                //验证链接是否过期               currentTime.before(user.getRegisterTime());              if(currentTime.before(user.getLastActivateTime())) {                    //验证激活码是否正确                    if(validateCode.equals(user.getValidateCode())) {                        //激活成功, //并更新用户的激活状态,为已激活                       System.out.println("==sq==="+user.getStatus());                      user.setStatus(1);//把状态改为激活                      System.out.println("==sh==="+user.getStatus());                      userDao.update(user);                  } else {                       throw new ServiceException("激活码不正确");                    }                } else { throw new ServiceException("激活码已过期!");                }            } else {             throw new ServiceException("邮箱已激活,请登录!");            }        } else {          throw new ServiceException("该邮箱未注册(邮箱地址不存在)!");        }    }   

}

RegisterController.java

[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片
package com.app.web.controller;

import java.text.ParseException;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

import com.app.service.impl.RegisterValidateService;
import com.app.tools.ServiceException;

@Controller
public class RegisterController {

@Resource  private RegisterValidateService service;  @RequestMapping(value="/user/register",method={RequestMethod.GET,RequestMethod.POST})  public ModelAndView  load(HttpServletRequest request,HttpServletResponse response) throws ParseException{      String action = request.getParameter("action");      System.out.println("-----r----"+action);      ModelAndView mav=new ModelAndView();      if("register".equals(action)) {          //注册          String email = request.getParameter("email");          service.processregister(email);//发邮箱激活          mav.addObject("text","注册成功");          mav.setViewName("register/register_success");      }       else if("activate".equals(action)) {          //激活          String email = request.getParameter("email");//获取email          String validateCode = request.getParameter("validateCode");//激活码          try {              service.processActivate(email , validateCode);//调用激活方法              mav.setViewName("register/activate_success");          } catch (ServiceException e) {              request.setAttribute("message" , e.getMessage());              mav.setViewName("register/activate_failure");          }      }      return mav;  }  

}

UserDao.java(这里个人没有做入库操作,只是利用集合,做过效果出来0_0)

[javascript] view plaincopyprint?在CODE上查看代码片派生到我的代码片
package com.app.dao;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;

import org.springframework.stereotype.Repository;

import com.code.model.UserModel;

@Repository
public class UserDao {

public HashMap map=new HashMap();

public void save(UserModel user){      System.out.println("cicicici");      map.put("id", String.valueOf(user.getId()));      map.put("email", user.getEmail());      map.put("validateCode", user.getValidateCode());      SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddhhmmss");      String time=sdf.format(user.getRegisterTime());      map.put("registerTime", time);      int status=user.getStatus();      map.put("status", String.valueOf(status));      map.put("name", user.getName());      String t2=sdf.format(user.getLastActivateTime());      map.put("activeLastTime", String.valueOf(t2));      System.out.println("=======s========="+status);  }  public void update(UserModel user){      map.put("email", user.getEmail());      map.put("validateCode", user.getValidateCode());      Date time=user.getRegisterTime();      map.put("registerTime", String.valueOf(time));      int status=user.getStatus();      map.put("status", String.valueOf(status));      System.out.println("=======st========="+status);  }  public UserModel find(String email) throws ParseException{      UserModel user=new UserModel();      user.setEmail(map.get("email"));      user.setName(map.get("name"));      SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddhhmmss");      Date day=sdf.parse(map.get("registerTime"));      user.setRegisterTime(day);      user.setStatus(Integer.valueOf(map.get("status")));      user.setValidateCode(map.get("validateCode"));      return user;  }  

}

UserModel.java

[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片
package com.code.model;

import java.beans.Transient;
import java.util.Calendar;
import java.util.Date;

public class UserModel {
private Long id;
private String name;
private String password;
private String email;//注册账号
private int status=0;//激活状态
private String validateCode;//激活码
private Date registerTime;//注册时间

/////////////////  public Long getId() {      return id;  }  public void setId(Long id) {      this.id = id;  }  public String getName() {      return name;  }  public void setName(String name) {      this.name = name;  }  public String getPassword() {      return password;  }  public void setPassword(String password) {      this.password = password;  }  public String getEmail() {      return email;  }  public void setEmail(String email) {      this.email = email;  }  public int getStatus() {      return status;  }  public void setStatus(int status) {      this.status = status;  }  public String getValidateCode() {      return validateCode;  }  public void setValidateCode(String validateCode) {      this.validateCode = validateCode;  }  public Date getRegisterTime() {      return registerTime;  }  public void setRegisterTime(Date registerTime) {      this.registerTime = registerTime;  }  /////////////////////////  @Transient  public Date getLastActivateTime() {      Calendar cl = Calendar.getInstance();      cl.setTime(registerTime);      cl.add(Calendar.DATE , 2);      return cl.getTime();  }  

}

原文地址:http://blog.csdn.net/kenhins/article/details/17588019

0 0