zoukankan      html  css  js  c++  java
  • Java实现邮箱激活验证

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

    RegisterValidateService.java

    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

    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?在CODE上查看代码片派生到我的代码片
     
    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

    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. }  
  • 相关阅读:
    7月的尾巴,你是XXX
    戏说Android view 工作流程《下》
    “燕子”
    Android开机动画bootanimation.zip
    戏说Android view 工作流程《上》
    ViewController里已连接的IBOutlet为什么会是nil
    My first App "Encrypt Wheel" is Ready to Download!
    iOS开发中角色Role所产生的悲剧(未完)
    UIScrollView实现不全屏分页的小技巧
    Apple misunderstood my app,now my app status changed to “In Review”
  • 原文地址:https://www.cnblogs.com/jxldjsn/p/5537531.html
Copyright © 2011-2022 走看看