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 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 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 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 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 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 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(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();
- }
- }