java web激活邮箱并找回密码

 更新时间:2015年11月24日 15:31:05   作者:Garry1115  
这篇文章主要介绍了java web激活邮箱并找回密码,在项目中要实现用户注册的邮箱激活以及忘记密码重置密码功能,感兴趣的小伙伴们

几乎每个网站或论坛之类的用户注册后都需要通过发送邮件到邮箱激活用户,如何激活邮箱呐?
设计激活步骤:
1、发送激活操作链接地址至用户邮箱。
2、用户至邮箱查收邮件。
3、用户点击链接,跳转至成功页面(修改激活状态),激活成功。

实现:

/** 
  * 发送邮件 
  * 
  * @param request 
  * @return 
  */ 
 @RequestMapping(value = "/sendEmail.jhtml") 
 @ResponseBody 
 public String sendEmail(HttpServletRequest request) { 
  DynamicParams params = new DynamicParams(request); 
  StringBuilder builder = new StringBuilder(); 
  StringBuffer url = new StringBuffer(); 
  String type = params.getString("type"); 
  Long uid = params.getLong("id"); 
  User user = userManager.find(uid); 
  String subject = ""; 
   
   // 判断是否已激活 
   if ("1".equals(String.valueOf(user.getEmailStatus()))) { 
    return errMsg(); 
   } 
   String contextPath = request.getContextPath(); 
   String rUrl = String.valueOf(request.getRequestURL()); 
   url.append(rUrl.substring(0, rUrl.indexOf(contextPath))); 
   url.append(contextPath + "/account"); 
   // 邮箱激活 
   // url.append("/activateEmail.jhtml?email=" + user.getEmail() + 
   // "&id=" + uid + "&mode=activate"); 
   url.append("/activateEmail.jhtml?id=" + uid + "&mode=activate"); 
   // 正文 
   builder.append("<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" </head><body>"); 
   builder.append("请点击下方链接激活您的邮箱,完成激活邮箱的操作!"); 
   builder.append("<br/><br/>"); 
   builder.append("<a href=\"" + url + "\">"); 
   builder.append(url); 
   builder.append("</a>"); 
   builder.append("</body></html>"); 
   subject = "邮箱地址激活 - xxxx"; 
   
  MailSender.mailSimple(user.getEmail(), subject, builder.toString(), 
    false, null); 
  return successMsg(); 
 } 
 
 /** 
  * 激活邮箱 
  * 
  * @param request 
  * @return 
  */ 
 @RequestMapping(value = "/activateEmail.jhtml") 
 public String activateEmail(HttpServletRequest request, Model model) { 
  DynamicParams params = new DynamicParams(request); 
  // 激活之前查询 
  User user = userManager.find(params.getLong("id")); 
 
  if ("1".equals(String.valueOf(user.getEmailStatus()))) { 
   // 已激活 
   model.addAttribute("flag", false); 
  } else { 
   // 未激活 
   userManager.activateEmail(params); 
   // 激活之后查询 
   user = userManager.find(params.getLong("id")); 
   request.getSession().setAttribute("sessionUser", user); 
   model.addAttribute("mode", params.getString("mode")); 
   model.addAttribute("flag", true); 
  } 
  return "site/modules/account/activateSuccess"; 
 } 

MailSender.mailSimple(user.getEmail(), subject, builder.toString(),false, null);即为发送邮件工具类,如有不明白可参考我之前的文章(spring mail发送邮件)

忘记密码(重置密码)

背景:同样是各大网站都会拥有的一个功能,通过发送验证码到用户注册的邮箱重置密码

设计:1)输入用户名/手机号码/邮箱,验证码。
             2)用户选择手机验证或邮箱验证,发送验证码到手机或邮箱。如果用户邮箱未激活,则不允许邮箱验证。
             3)用户输入验证码成功,进入密码重新设置页面。
             4)重置密码

流程:

实现:

/** 
 * 发送邮件 
 * 
 * @param request 
 * @return 
 */ 
@RequestMapping(value = "/sendEmail.jhtml") 
@ResponseBody 
public String sendEmail(HttpServletRequest request) { 
 DynamicParams params = new DynamicParams(request); 
 StringBuilder builder = new StringBuilder(); 
 StringBuffer url = new StringBuffer(); 
 String type = params.getString("type"); 
 Long uid = params.getLong("id"); 
 User user = userManager.find(uid); 
 String subject = ""; 
  
  // type = forget 密码重置 
  String verifyCode = VerifyCodeUtils.generateVerifyCode(4); 
  request.getSession().setAttribute("resetCertCode", verifyCode); 
  url.append("<font color='red'>" + verifyCode + "</font>"); 
  // 正文 
  builder.append("<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" /></head><body>"); 
  builder.append("要使用新的密码, 请将已下字符输入验证框中,完成重置密码的操作!"); 
  builder.append("<br/><br/>"); 
  builder.append("<div>" + url + "</div>"); 
  builder.append("</body></html>"); 
  subject = "密码重置 - xxxx"; 
  
 MailSender.mailSimple(user.getEmail(), subject, builder.toString(), 
   false, null); 
 return successMsg(); 
} 

至此,激活邮箱和忘记密码功能已初步完成!希望对大家的学习有所帮助,大家可以动手实现激活邮箱并找回密码。

相关文章

  • MybatisPlus的IPage失效的问题解决方案

    MybatisPlus的IPage失效的问题解决方案

    这篇文章主要介绍了MybatisPlus的IPage失效的问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • java rocketmq--消息的产生(普通消息)

    java rocketmq--消息的产生(普通消息)

    这篇文章主要介绍了java rocketmq--消息的产生(普通消息),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,,需要的朋友可以参考下
    2019-06-06
  • Spring Boot 中starter的原理详析

    Spring Boot 中starter的原理详析

    这篇文章主要介绍了Spring Boot 中starter原理详析,文章围绕主题展开springboot的插件机制和starter原理相关资料,需要的小伙伴可以参考一下
    2022-06-06
  • 一步步教你整合SSM框架(Spring MVC+Spring+MyBatis)详细教程

    一步步教你整合SSM框架(Spring MVC+Spring+MyBatis)详细教程

    使用SSM(Spring、SpringMVC和Mybatis)已经有段时间了,项目在技术上已经没有什么难点了,基于现有的技术就可以实现想要的功能,下面这篇文章主要给大家介绍了关于整合SSM框架:Spring MVC + Spring + MyBatis的相关资料,需要的朋友可以参考下。
    2017-07-07
  • java web如何解决瞬间高并发

    java web如何解决瞬间高并发

    这篇文章主要为大家详细介绍了java web解决瞬间高并发的策略,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • Java对象的四种引用方式实例分析

    Java对象的四种引用方式实例分析

    这篇文章主要介绍了Java对象的四种引用方式,简单描述了四种引用方式的概念、应用场景并结合实例形式分析了弱引用所引用对象的垃圾回收过程,需要的朋友可以参考下
    2019-08-08
  • 使用lombok的@Data会导致栈溢出StackOverflowError问题

    使用lombok的@Data会导致栈溢出StackOverflowError问题

    这篇文章主要介绍了使用lombok的@Data会导致栈溢出StackOverflowError问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • java正则表达式判断强密码和随机生成强密码代码示例

    java正则表达式判断强密码和随机生成强密码代码示例

    这篇文章主要给大家介绍了关于java正则表达式判断强密码和随机生成强密码的相关资料,最近需要一个密码强度正则表达式在用户注册时校验用户密码强度,需要的朋友可以参考下
    2023-08-08
  • MyBatis在SQL语句中如何获取list的大小

    MyBatis在SQL语句中如何获取list的大小

    这篇文章主要介绍了MyBatis在SQL语句中如何获取list的大小问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • SpringMVC 接收前端传递的参数四种方式小结

    SpringMVC 接收前端传递的参数四种方式小结

    这篇文章主要介绍了SpringMVC 接收前端传递的参数四种方式小结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10

最新评论