Java实现邮箱激活验证

来源:互联网 发布:javascript所有事件 编辑:程序博客网 时间:2024/04/29 11:17

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

RegisterValidateService.java


[java] view plaincopyprint
  1. package com.app.service.impl;  
  2.   
  3. import java.text.ParseException;  
  4. import java.util.Date;  
  5.   
  6. import org.springframework.beans.factory.annotation.Autowired;  
  7. import org.springframework.stereotype.Service;  
  8.   
  9. import com.app.dao.UserDao;  
  10. import com.app.tools.MD5Tool;  
  11. import com.app.tools.MD5Util;  
  12. import com.app.tools.SendEmail;  
  13. import com.app.tools.ServiceException;  
  14. import com.code.model.UserModel;  
  15.   
  16.   
  17.   
  18. @Service  
  19. public class RegisterValidateService  
  20.       
  21.     @Autowired  
  22.     private UserDao userDao;  
  23.       
  24.       
  25.    
  26.     public void processregister(String email){  
  27.         UserModel user=new UserModel();  
  28.         Long as=5480l;  
  29.         user.setId(as);  
  30.         user.setName("xiaoming");  
  31.         user.setPassword("324545");  
  32.         user.setEmail(email);  
  33.         user.setRegisterTime(new Date());  
  34.         user.setStatus(0);  
  35.         ///如果处于安全,可以将激活码处理的更复杂点,这里我稍做简单处理  
  36.         //user.setValidateCode(MD5Tool.MD5Encrypt(email));  
  37.         user.setValidateCode(MD5Util.encode2hex(email));  
  38.           
  39.         userDao.save(user);//保存注册信息  
  40.           
  41.         ///邮件的内容  
  42.         StringBuffer sb=new StringBuffer("点击下面链接激活账号,48小时生效,否则重新注册账号,链接只能使用一次,请尽快激活!
    "
    );  
  43.         sb.append(");  
  44.         sb.append(email);   
  45.         sb.append("&validateCode=");   
  46.         sb.append(user.getValidateCode());  
  47.         sb.append("\">http://localhost:8080/springmvc/user/register?action=activate&email=");   
  48.         sb.append(email);  
  49.         sb.append("&validateCode=");  
  50.         sb.append(user.getValidateCode());  
  51.         sb.append("");  
  52.           
  53.         //发送邮件  
  54.         SendEmail.send(email, sb.toString());  
  55.         System.out.println("发送邮件");  
  56.           
  57.      
  58.       
  59.       
  60.       ///传递激活码和email过来  
  61.     public void processActivate(String email String validateCode)throws ServiceException, ParseException{    
  62.          //数据访问层,通过email获取用户信息  
  63.         UserModel user=userDao.find(email);  
  64.         //验证用户是否存在   
  65.         if(user!=null   
  66.             //验证用户激活状态    
  67.             if(user.getStatus()==0  
  68.                 ///没激活  
  69.                 Date currentTime new Date();//获取当前时间    
  70.                 //验证链接是否过期   
  71.                 currentTime.before(user.getRegisterTime());  
  72.                 if(currentTime.before(user.getLastActivateTime()))    
  73.                     //验证激活码是否正确    
  74.                     if(validateCode.equals(user.getValidateCode()))    
  75.                         //激活成功, //并更新用户的激活状态,为已激活   
  76.                         System.out.println("==sq==="+user.getStatus());  
  77.                         user.setStatus(1);//把状态改为激活  
  78.                         System.out.println("==sh==="+user.getStatus());  
  79.                         userDao.update(user);  
  80.                     else    
  81.                        throw new ServiceException("激活码不正确");    
  82.                        
  83.                 else throw new ServiceException("激活码已过期!");    
  84.                    
  85.             else  
  86.                throw new ServiceException("邮箱已激活,请登录!");    
  87.                
  88.         else  
  89.             throw new ServiceException("该邮箱未注册(邮箱地址不存在)!");    
  90.            
  91.             
  92.       
  93.   
  94.  


 

RegisterController.java

 

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

 


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

 

[javascript] view plaincopyprint
  1. package com.app.dao;  
  2.   
  3.   
  4. import java.text.ParseException;  
  5. import java.text.SimpleDateFormat;  
  6. import java.util.Date;  
  7. import java.util.HashMap;  
  8.   
  9.   
  10. import org.springframework.stereotype.Repository;  
  11.   
  12. import com.code.model.UserModel;  
  13.   
  14.   
  15. @Repository  
  16. public class UserDao  
  17.       
  18.    public HashMap map=new HashMap();  
  19.       
  20.     public void save(UserModel user){  
  21.         System.out.println("cicicici");  
  22.         map.put("id"String.valueOf(user.getId()));  
  23.         map.put("email"user.getEmail());  
  24.         map.put("validateCode"user.getValidateCode());  
  25.         SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddhhmmss");  
  26.         String time=sdf.format(user.getRegisterTime());  
  27.         map.put("registerTime"time);  
  28.         int status=user.getStatus();  
  29.         map.put("status"String.valueOf(status));  
  30.         map.put("name"user.getName());  
  31.         String t2=sdf.format(user.getLastActivateTime());  
  32.         map.put("activeLastTime"String.valueOf(t2));  
  33.         System.out.println("=======s========="+status);  
  34.           
  35.      
  36.       
  37.       
  38.     public void update(UserModel user){  
  39.         map.put("email"user.getEmail());  
  40.         map.put("validateCode"user.getValidateCode());  
  41.         Date time=user.getRegisterTime();  
  42.         map.put("registerTime"String.valueOf(time));  
  43.         int status=user.getStatus();  
  44.         map.put("status"String.valueOf(status));  
  45.         System.out.println("=======st========="+status);  
  46.      
  47.       
  48.       
  49.     public UserModel find(String email) throws ParseException{  
  50.         UserModel user=new UserModel();  
  51.         user.setEmail(map.get("email"));  
  52.         user.setName(map.get("name"));  
  53.         SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddhhmmss");  
  54.         Date day=sdf.parse(map.get("registerTime"));  
  55.         user.setRegisterTime(day);  
  56.         user.setStatus(Integer.valueOf(map.get("status")));  
  57.         user.setValidateCode(map.get("validateCode"));  
  58.   
  59.         return user;  
  60.      
  61.   
  62.  

UserModel.java

 

 

[java] view plaincopyprint
  1. package com.code.model;  
  2.   
  3. import java.beans.Transient;  
  4. import java.util.Calendar;  
  5. import java.util.Date;  
  6.   
  7.   
  8. public class UserModel  
  9.     private Long id;  
  10.     private String name;  
  11.     private String password;  
  12.     private String email;//注册账号  
  13.     private int status=0;//激活状态  
  14.     private String validateCode;//激活码  
  15.     private Date  registerTime;//注册时间  
  16.       
  17.          
  18.     /////////////////  
  19.   
  20.     public Long getId()  
  21.         return id;  
  22.      
  23.       
  24.     public void setId(Long id)  
  25.         this.id id;  
  26.      
  27.       
  28.     public String getName()  
  29.         return name;  
  30.      
  31.       
  32.     public void setName(String name)  
  33.         this.name name;  
  34.      
  35.       
  36.     public String getPassword()  
  37.         return password;  
  38.      
  39.       
  40.     public void setPassword(String password)  
  41.         this.password password;  
  42.      
  43.       
  44.     public String getEmail()  
  45.         return email;  
  46.      
  47.       
  48.     public void setEmail(String email)  
  49.         this.email email;  
  50.      
  51.       
  52.     public int getStatus()  
  53.         return status;  
  54.      
  55.       
  56.     public void setStatus(int status)  
  57.         this.status status;  
  58.      
  59.       
  60.     public String getValidateCode()  
  61.         return validateCode;  
  62.      
  63.       
  64.     public void setValidateCode(String validateCode)  
  65.         this.validateCode validateCode;  
  66.      
  67.       
  68.     public Date getRegisterTime()  
  69.         return registerTime;  
  70.      
  71.       
  72.     public void setRegisterTime(Date registerTime)  
  73.         this.registerTime registerTime;  
  74.      
  75.   
  76.     /////////////////////////  
  77.     @Transient  
  78.     public Date getLastActivateTime()  
  79.         Calendar cl Calendar.getInstance();  
  80.         cl.setTime(registerTime);  
  81.         cl.add(Calendar.DATE 2);  
  82.           
  83.         return cl.getTime();  
  84.      
  85.       
  86.  

0 0