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

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. em和px比较

    1em=16px. em具有继承性. 如果定义了 body{font-size=12px;} #title{font-siez=2.6em;} 而id=title恰好在body里面,那么,id=tit ...

  2. collections模块(收藏)

    collections是Python内建的一个集合模块,提供了许多有用的集合类. 1. namedtuple 我们知道tuple可以表示不变集合,例如,一个点的二维坐标就可以表示成: >> ...

  3. RNN实现字符级语言模型 - 恐龙岛(自己写RNN前向后向版本+keras版本)

    问题描述:样本为所有恐龙名字,为了构建字符级语言模型来生成新的名称,你的模型将学习不同的名称模式,并随机生成新的名字. 在这里你将学习到: 如何存储文本数据以便使用rnn进行处理. 如何合成数据,通过 ...

  4. Selenium Webdriver——操作隐藏的元素(二)display属性

    有时候我们会碰到一些元素不可见,这个时候selenium就无法对这些元素进行操作了.例如,下面的情况: 页面主要通过“display:none”来控制整个下拉框不可见.这个时候如果直接操作这个下拉框, ...

  5. VMware coding Challenge

    思路:这道题要观察,举个例子,1 2 * * 3 * 4  5 * * 6 7 * 8 * *, 用Stack,先序遍历,遇到数字就入栈,如果遇到 * *,说明栈顶节点是叶子节点,一条根到叶子的路径这 ...

  6. VUE滚动条插件——vue-happy-scroll

    最近自己在自学vue2.0,然后就自己摸索做一个简单的后台管理系统,在做的过程中,总感觉不同浏览器自带的滚动条样式不统一,也很难看,所以就在网上找一些使用vue的滚动条插件.最开始用的是Easy-sc ...

  7. 转载人家写的CURSOR

    转自:http://blog.csdn.net/rdarda/article/details/7881648 1.游标的作用及属性 游标的作用就是用于对查询数据库所返回的记录进行遍历,以便进行相应的操 ...

  8. Intermediate Python for Data Science learning 1 - Basic plots with matplotlib

    Basic plots with matplotlib from:https://campus.datacamp.com/courses/intermediate-python-for-data-sc ...

  9. emoj表情过滤

    用法:  isEmojiCharacter(input_value)   //  提交时候校验.true:emoj表情   undefined:无   if(isEmojiCharacter(val) ...

  10. 微信公众号为什么要加粉?流量,广告,KPI,吸粉,增粉

    微信公众号为什么要加粉?流量,广告,KPI,吸粉,增粉 1.曾有人这样比喻:当你的粉丝超过100人时,你就像是一本内刊:超过1000人,你就像个布告栏:超过1万人,你就好比一本杂志:超过10万人,你就 ...