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

RegisterValidateService.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

  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 plaincopyprint?

 
  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

  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. }

Java实现邮箱激活验证的更多相关文章

  1. Java注册帐号邮箱激活验证实现

    Java注册帐号邮箱激活验证实现 1.需要加入发送邮件的mail.jar: http://www.oracle.com/technetwork/java/javamail/index-138643.h ...

  2. Java实现邮箱激活验证2

    SendEmail.java [java] view plaincopyprint?   package com.app.tools; import java.util.Date; import ja ...

  3. Java实现注册邮箱激活验证

    邮件发送servelet实现 package com.xbs.register.main; import java.io.IOException;import java.util.Date;impor ...

  4. servlet邮箱激活验证实例含代码

    也有很多人本来有机会的,他们都拒绝了,不想让自己太累,太麻烦.或者中途被情绪所左右,半途而废了. 成长是有代价的,同样悠闲也是有代价的. 流程: 用户填写相关信息,点击注册按钮 系统先将用户记录保存到 ...

  5. 主攻ASP.NET MVC4.0之重生:发邮箱激活验证

    导入Interop.jmail组件 using jmail;using System.Net.Mail; 点击下载源代码 Controller相关代码 public class SendEmailCo ...

  6. java 手机号码+邮箱的验证

    import java.util.regex.Pattern; //导入的包 1:String REGEX_MOBILE = "^((17[0-9])|(14[0-9])|(13[0-9]) ...

  7. Java实现邮箱验证

    Java实现邮箱验证 JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口.它是Sun发布的用来处理email的API.它可以方便地执行一些常用的邮件传输.我们可以基于JavaMail开 ...

  8. 转:java 帐号激活与忘记密码 实例

    原文链接:http://endual.iteye.com/blog/1613679 一.帐户激活   在 很多时候,在某些网站注册一个用户之后,网站会给这个用户注册时填写的email地址发送一封帐户激 ...

  9. java工具类(二)之java正则表达式表单验证

    java正则表达式表单验证类工具类(验证邮箱.手机号码.qq号码等) 这篇文章主要介绍了java使用正则表达式进行表单验证工具类,可以验证邮箱.手机号码.qq号码等方法,需要的朋友可以参考下. jav ...

随机推荐

  1. NLP总览

    一.自然语言处理概述 1)自然语言处理:利用计算机为工具,对书面实行或者口头形式进行各种各样的处理和加工的技术,是研究人与人交际中以及人与计算机交际中的演员问题的一门学科,是人工智能的主要内容. 2) ...

  2. webbench,简单、实用!

    官网:http://home.tiscali.cz/~cz210552/webbench.html   1.下载并安装 # wget http://home.tiscali.cz/~cz210552/ ...

  3. JSP—内置对象

    JSP内置对象是Web容器创建的一组对象,不用声明,直接使用 out 输出对象 类型 javax.servlet.jsp.JspWriter 作用域 Page request 请求对象 类型 java ...

  4. Asp.net MVC 通过自定义ControllerFactory实现构造器注入

    一.重写ControllerFactory的GetControllerInstance ControllerFactory是asp.net中用于在运行时构造Controller的工厂 ,默认使用的工厂 ...

  5. python 内置函数bytearray

    1.参考文档 class bytearray([source[, encoding[, errors]]]) Return a new array of bytes. The bytearray cl ...

  6. 升级到php7相关问题,日请求过亿QQ会员活动平台PHP7升级实践

    升级到php7相关问题,日请求过亿QQ会员活动平台PHP7升级实践 日请求过亿:QQ会员活动平台PHP7升级实践http://mp.weixin.qq.com/s?__biz=MjM5MjAwODM4 ...

  7. 使用原生的javascript封装动画函数(有callback功能)

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  8. js如何模拟multipart/form-data类型的请求

    var temp = document.createElement('form'); temp.action = this.data.testURL; temp.method = 'post'; te ...

  9. mysql 触发器 trigger用法 two (稍微复杂的)

    触发器(trigger):监视某种情况,并触发某种操作. 触发器创建语法四要素:1.监视地点(table) 2.监视事件(insert/update/delete) 3.触发时间(after/befo ...

  10. Quartz框架调用Demo

    Quartz框架调用Demo 任务调度在JAVA应用程序中运用的十分普遍,掌握QUARTZ是必备的技能; 官网:http://www.quartz-scheduler.org/ 下载最新1.80资源包 ...