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. }  
  • 相关阅读:
    自己动手写动态网站
    CompareValidator控件
    跨数据库服务器查询和跨表更新
    在Windows 2003 IIS 6.0中配置PHP的运行环境(图)
    sql语句跨服务器跨数据库执行
    ASP语法
    web 中 common
    common js
    经典的SQL面试题
    asp:TextBox 的ReadOnly属性 造成后台无法取到值
  • 原文地址:https://www.cnblogs.com/jxldjsn/p/5537531.html
Copyright © 2011-2022 走看看