Java实现邮箱激活验证
RegisterValidateService.java
[java]
view plain
copy
print
?
- 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 throwsemail , String validateCode) 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 { thrownew ServiceException( "激活码已过期!"); -
} -
} else { -
throw new ServiceException( "邮箱已激活,请登录!"); -
} -
} else { -
throw new ServiceException( "该邮箱未注册(邮箱地址不存在)!"); -
} -
-
} -
- }
RegisterController.java
[java]
view plain
copy
print
?
- 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 throwsload(HttpServletRequest request,HttpServletResponse response) 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; -
} -
-
- }
[javascript]
view plain
copy
print
?
- 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 newmap= 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 throwsfind(String email) 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 plain
copy
print
?
- 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( intstatus) { -
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(); -
} -
- }