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

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. Java接口多线程并发测试 (二)

    原文地址http://www.cnblogs.com/yezhenhan/archive/2012/01/09/2317636.html 这是一篇很不错的文章,感谢原博主的分享! JAVA多线程实现和 ...

  2. BCB 串口控件的使用 TComm

    昨天工作用到了串口通信,MMP的,昨天懵逼了一下午,今天终于整通了,身为菜鸟,大师们是不懂这些心痛的. 进入主题:使用BCB提供的控件TComm编程方便且简单,TComm位于System分类里面.   ...

  3. 移动端1px细线解决方案总结

    现在的PM和UI总以看app的眼光看html5, html页面要做的专业美观,而且必须很精细. 去年的时候UI就告诉我h5上的边框线太粗,把整站都给拉low了. 当时工期紧就没太在意1px粗细, 好在 ...

  4. mysql的锁机制

    一.读锁(共享锁/Share Locks,S锁). 1.select * from table_name where ... lock in share mode.(事务A) (1)这种方式是获取指定 ...

  5. strus2 框架介绍

    strus2 执行过程: ActionMapper会去找ActionMapping查找URL请求的映射 1:ActionMapping这个类用name+namespace确定请求的映射, (但是仍然不 ...

  6. Root :: AOAPC I: Beginning Algorithm Contests (Rujia Liu) Volume 5. Dynamic Programming

    10192 最长公共子序列 http://uva.onlinejudge.org/index.php?option=com_onlinejudge& Itemid=8&page=sho ...

  7. 论文笔记:语音情感识别(二)声谱图+CRNN

    一:An Attention Pooling based Representation Learning Method for Speech Emotion Recognition(2018 Inte ...

  8. 谈话准备.xmind 思维导图模版

    谈话准备.xmind 思维导图模版,谈话准备.xmind.zip 谈话准备 目标 1…… 2…… 3…… 影响决定因素 进程 经费 策略 问题 客户 竞争对手 竞争对手 潜在 现存 问题 个性 团队 ...

  9. 2016NOI冬令营day4

    上午:随机算法/近似算法与随机算法的分析方法与应用实例 不懂,完全滑水QAQ :( 下午:计算理论与NP问题 只有讲2-sat和3-sat的时候能听懂,其他的基本都在滑水:( 晚上说是什么中学生学术训 ...

  10. MockWebServer--环境

    MockWebServer是一个可脚本化的用于测试HTTP客户端的Web服务器.主要用于测试你的应用在进行HTTP.HTTPS请求时是否按照预期的行为动作.使用该工具,你可以验证应用的请求是否符合预期 ...