天天看點

Java實作郵箱激活驗證

Java實作郵箱激活驗證

RegisterValidateService.java

[java]  view plain copy print ?

Java實作郵箱激活驗證
Java實作郵箱激活驗證
  1. package com.app.service.impl;  
  2. import java.text.ParseException;  
  3. import java.util.Date;  
  4. import org.springframework.beans.factory.annotation.Autowired;  
  5. import org.springframework.stereotype.Service;  
  6. import com.app.dao.UserDao;  
  7. import com.app.tools.MD5Tool;  
  8. import com.app.tools.MD5Util;  
  9. import com.app.tools.SendEmail;  
  10. import com.app.tools.ServiceException;  
  11. import com.code.model.UserModel;  
  12. @Service  
  13. public class RegisterValidateService {  
  14.     @Autowired  
  15.     private UserDao userDao;  
  16.     public void processregister(String email){  
  17.         UserModel user=new UserModel();  
  18.         Long as=5480l;  
  19.         user.setId(as);  
  20.         user.setName("xiaoming");  
  21.         user.setPassword("324545");  
  22.         user.setEmail(email);  
  23.         user.setRegisterTime(new Date());  
  24.         user.setStatus(0);  
  25.         ///如果處于安全,可以将激活碼處理的更複雜點,這裡我稍做簡單處理  
  26.         //user.setValidateCode(MD5Tool.MD5Encrypt(email));  
  27.         user.setValidateCode(MD5Util.encode2hex(email));  
  28.         userDao.save(user);//儲存注冊資訊  
  29.         ///郵件的内容  
  30.         StringBuffer sb=new StringBuffer("點選下面連結激活賬号,48小時生效,否則重新新增賬號,連結隻能使用一次,請盡快激活!

    ");  

  31.         sb.append(");  
  32.         sb.append(email);   
  33.         sb.append("&validateCode=");   
  34.         sb.append(user.getValidateCode());  
  35.         sb.append("\">http://localhost:8080/springmvc/user/register?action=activate&email=");   
  36.         sb.append(email);  
  37.         sb.append("&validateCode=");  
  38.         sb.append(user.getValidateCode());  
  39.         sb.append("");  
  40.         //發送郵件  
  41.         SendEmail.send(email, sb.toString());  
  42.         System.out.println("發送郵件");  
  43.     }  
  44.       ///傳遞激活碼和email過來  
  45.     public void processActivate(String email , String validateCode)throws ServiceException, ParseException{    
  46.          //資料通路層,通過email擷取使用者資訊  
  47.         UserModel user=userDao.find(email);  
  48.         //驗證使用者是否存在   
  49.         if(user!=null) {    
  50.             //驗證使用者激活狀态    
  51.             if(user.getStatus()==0) {   
  52.                 ///沒激活  
  53.                 Date currentTime = new Date();//擷取目前時間    
  54.                 //驗證連結是否過期   
  55.                 currentTime.before(user.getRegisterTime());  
  56.                 if(currentTime.before(user.getLastActivateTime())) {    
  57.                     //驗證激活碼是否正确    
  58.                     if(validateCode.equals(user.getValidateCode())) {    
  59.                         //激活成功, //并更新使用者的激活狀态,為已激活   
  60.                         System.out.println("==sq==="+user.getStatus());  
  61.                         user.setStatus(1);//把狀态改為激活  
  62.                         System.out.println("==sh==="+user.getStatus());  
  63.                         userDao.update(user);  
  64.                     } else {    
  65.                        throw new ServiceException("激活碼不正确");    
  66.                     }    
  67.                 } else { throw new ServiceException("激活碼已過期!");    
  68.                 }    
  69.             } else {  
  70.                throw new ServiceException("郵箱已激活,請登入!");    
  71.             }    
  72.         } else {  
  73.             throw new ServiceException("該郵箱未注冊(郵箱位址不存在)!");    
  74.         }    
  75.     }   
  76. }  

RegisterController.java

[java]  view plain copy print ?

Java實作郵箱激活驗證
Java實作郵箱激活驗證
  1. package com.app.web.controller;  
  2. import java.text.ParseException;  
  3. import javax.annotation.Resource;  
  4. import javax.servlet.http.HttpServletRequest;  
  5. import javax.servlet.http.HttpServletResponse;  
  6. import org.springframework.stereotype.Controller;  
  7. import org.springframework.web.bind.annotation.RequestMapping;  
  8. import org.springframework.web.bind.annotation.RequestMethod;  
  9. import org.springframework.web.servlet.ModelAndView;  
  10. import com.app.service.impl.RegisterValidateService;  
  11. import com.app.tools.ServiceException;  
  12. @Controller  
  13. public class RegisterController {  
  14.     @Resource  
  15.     private RegisterValidateService service;  
  16.     @RequestMapping(value="/user/register",method={RequestMethod.GET,RequestMethod.POST})  
  17.     public ModelAndView  load(HttpServletRequest request,HttpServletResponse response) throws ParseException{  
  18.         String action = request.getParameter("action");  
  19.         System.out.println("-----r----"+action);  
  20.         ModelAndView mav=new ModelAndView();  
  21.         if("register".equals(action)) {  
  22.             //注冊  
  23.             String email = request.getParameter("email");  
  24.             service.processregister(email);//發郵箱激活  
  25.             mav.addObject("text","注冊成功");  
  26.             mav.setViewName("register/register_success");  
  27.         }   
  28.         else if("activate".equals(action)) {  
  29.             //激活  
  30.             String email = request.getParameter("email");//擷取email  
  31.             String validateCode = request.getParameter("validateCode");//激活碼  
  32.             try {  
  33.                 service.processActivate(email , validateCode);//調用激活方法  
  34.                 mav.setViewName("register/activate_success");  
  35.             } catch (ServiceException e) {  
  36.                 request.setAttribute("message" , e.getMessage());  
  37.                 mav.setViewName("register/activate_failure");  
  38.             }  
  39.         }  
  40.         return mav;  
  41.     }  
  42. }  

UserDao.java(這裡個人沒有做入庫操作,隻是利用集合,做過效果出來0_0)

[javascript]  view plain copy print ?

Java實作郵箱激活驗證
Java實作郵箱激活驗證
  1. package com.app.dao;  
  2. import java.text.ParseException;  
  3. import java.text.SimpleDateFormat;  
  4. import java.util.Date;  
  5. import java.util.HashMap;  
  6. import org.springframework.stereotype.Repository;  
  7. import com.code.model.UserModel;  
  8. @Repository  
  9. public class UserDao {  
  10.    public HashMap map=new HashMap();  
  11.     public void save(UserModel user){  
  12.         System.out.println("cicicici");  
  13.         map.put("id", String.valueOf(user.getId()));  
  14.         map.put("email", user.getEmail());  
  15.         map.put("validateCode", user.getValidateCode());  
  16.         SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddhhmmss");  
  17.         String time=sdf.format(user.getRegisterTime());  
  18.         map.put("registerTime", time);  
  19.         int status=user.getStatus();  
  20.         map.put("status", String.valueOf(status));  
  21.         map.put("name", user.getName());  
  22.         String t2=sdf.format(user.getLastActivateTime());  
  23.         map.put("activeLastTime", String.valueOf(t2));  
  24.         System.out.println("=======s========="+status);  
  25.     }  
  26.     public void update(UserModel user){  
  27.         map.put("email", user.getEmail());  
  28.         map.put("validateCode", user.getValidateCode());  
  29.         Date time=user.getRegisterTime();  
  30.         map.put("registerTime", String.valueOf(time));  
  31.         int status=user.getStatus();  
  32.         map.put("status", String.valueOf(status));  
  33.         System.out.println("=======st========="+status);  
  34.     }  
  35.     public UserModel find(String email) throws ParseException{  
  36.         UserModel user=new UserModel();  
  37.         user.setEmail(map.get("email"));  
  38.         user.setName(map.get("name"));  
  39.         SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddhhmmss");  
  40.         Date day=sdf.parse(map.get("registerTime"));  
  41.         user.setRegisterTime(day);  
  42.         user.setStatus(Integer.valueOf(map.get("status")));  
  43.         user.setValidateCode(map.get("validateCode"));  
  44.         return user;  
  45.     }  
  46. }  

UserModel.java

[java]  view plain copy print ?

Java實作郵箱激活驗證
Java實作郵箱激活驗證
  1. package com.code.model;  
  2. import java.beans.Transient;  
  3. import java.util.Calendar;  
  4. import java.util.Date;  
  5. public class UserModel {  
  6.     private Long id;  
  7.     private String name;  
  8.     private String password;  
  9.     private String email;//新增賬號  
  10.     private int status=0;//激活狀态  
  11.     private String validateCode;//激活碼  
  12.     private Date  registerTime;//注冊時間  
  13.     /  
  14.     public Long getId() {  
  15.         return id;  
  16.     }  
  17.     public void setId(Long id) {  
  18.         this.id = id;  
  19.     }  
  20.     public String getName() {  
  21.         return name;  
  22.     }  
  23.     public void setName(String name) {  
  24.         this.name = name;  
  25.     }  
  26.     public String getPassword() {  
  27.         return password;  
  28.     }  
  29.     public void setPassword(String password) {  
  30.         this.password = password;  
  31.     }  
  32.     public String getEmail() {  
  33.         return email;  
  34.     }  
  35.     public void setEmail(String email) {  
  36.         this.email = email;  
  37.     }  
  38.     public int getStatus() {  
  39.         return status;  
  40.     }  
  41.     public void setStatus(int status) {  
  42.         this.status = status;  
  43.     }  
  44.     public String getValidateCode() {  
  45.         return validateCode;  
  46.     }  
  47.     public void setValidateCode(String validateCode) {  
  48.         this.validateCode = validateCode;  
  49.     }  
  50.     public Date getRegisterTime() {  
  51.         return registerTime;  
  52.     }  
  53.     public void setRegisterTime(Date registerTime) {  
  54.         this.registerTime = registerTime;  
  55.     }  
  56.     /  
  57.     @Transient  
  58.     public Date getLastActivateTime() {  
  59.         Calendar cl = Calendar.getInstance();  
  60.         cl.setTime(registerTime);  
  61.         cl.add(Calendar.DATE , 2);  
  62.         return cl.getTime();  
  63.     }  
  64. }