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

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. Lintcode: Hash Function && Summary: Modular Multiplication, Addition, Power && Summary: 长整形long

    In data structure Hash, hash function is used to convert a string(or any other type) into an integer ...

  2. Geometry

    uva1473 这题说的是 在空间中给了n个点 然后用体积最小的圆锥将这些点包含在内可以在表面上, 将这些点 映射到xoz平面上然后,然后枚举每个上凸包的边和每个点的极值进行判断求得最小的体积 我们会 ...

  3. mac下安装了brew

    使用mac后发现很多软件都可以通过终端命令brew...来安装. 查了一下,发现brew原来是osx系统上的软件包管理工具,全名是Homebrew,官网:https://brew.sh(这官竟然还包含 ...

  4. 学习Linux的正确姿势

    学习Linux的正确姿势 端正学习态度1.Linux不等于骇客(or Cracker).当然众所周知很多“黑客工具”都是Linux平台上的,我帮助过很多Linux小白发现他们殊途同归都是朝着类似Air ...

  5. Js基础知识5-函数返回值、函数参数、函数属性、函数方法

    函数返回值 所有函数都有返回值,没有return语句时,默认返回内容为undefined,和其他面向对象的编程语言一样,return语句不会阻止finally子句的执行. function testF ...

  6. 5+App使用定位

    1.定位方法     5+App定位方法:5+ API中的Geolocation模块     Geolocation目前支持h5内置的定位,百度,高德.h5内置定位支持wgs84坐标系:百度支持gcj ...

  7. Google's Machine Learning Crash Course #02# Descending into ML

    INDEX How do we know if we have a good line Linear Regression Training and Loss How do we know if we ...

  8. Python学习笔记之面向对象编程(三)Python类的魔术方法

    python类中有一些方法前后都有两个下划线,这类函数统称为魔术方法.这些方法有特殊的用途,有的不需要我们自己定义,有的则通过一些简单的定义可以实现比较神奇的功能 我主要把它们分为三个部分,下文也是分 ...

  9. Python入门之python可变对象与不可变对象

    本文分为如下几个部分 概念 地址问题 作为函数参数 可变参数在类中使用 函数默认参数 类的实现上的差异 概念 可变对象与不可变对象的区别在于对象本身是否可变. python内置的一些类型中 可变对象: ...

  10. YAML配置文件

    最近,研究jeeweb这个框架,发现新版本中的配置文件都是用的.yml为后缀的文件,打开一看,和以前的xml和properties语法有很大区别,因此仔细研究一下. 简介: YAML是(YAML Ai ...