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();
} 

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

(0)

相关推荐

  • Java注册邮箱激活验证实现代码

    最近从项目分离出来的注册邮箱激活功能,整理一下,方便下次使用 RegisterValidateService.java 复制代码 代码如下: package com.app.service.impl; import java.text.ParseException;import java.util.Date; import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stere

  • 深入java事件注册的应用分析

    对上次的三个问题的个人理解: 1) 程序首先是从main函数开始执行的,假设main 函数不是 static ,就要先实例化这个类,然后调用 main 方法,这似乎是不现实的. 其次 用 static 修饰的 main 方法是存储在静态的存贮区当中的,也就是说在创建一个类之后,main 函数就已经存在了,去掉 static 修饰之后,编译可以通过,但是不能执行.2)查 API之后才发现BufferedRead 对象的 readLine()方读到的数据是,读到有换行的地方为一行,直接用 readL

  • 注册验证java代码[针对上篇文章]

    http://www.jb51.net/article/19801.htm 复制代码 代码如下: <%@ page contentType="text/html; charset=gb2312" language="java"%> <%@ page import="java.sql.*"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional/

  • java实现简单注册选择所在城市

    本文实例为大家分享了java实现简单注册选择所在城市的全部代码,供大家参考,具体内容如下 1.activity_main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.androi

  • JavaWeb实现用户登录注册功能实例代码(基于Servlet+JSP+JavaBean模式)

    下面通过通过图文并茂的方式给大家介绍JavaWeb实现用户登录注册功能实例代码,一起看看吧. 一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp负责数据显示,javabean负责封装数据. Servlet+JSP+JavaBean模式程序各个模块之间层次清晰,web开发推荐采用此种模式. 这里以一个最常用的用户登录注册程序来讲解Servlet+JS

  • Servlet+JavaBean+JSP打造Java Web注册与登录功能

    采用Java Web所实现的MVC结构图如下,其中控制器部分采用Servlet来实现,模型部分采用JavaBean来实现,而大部分的视图采用Jsp页面来实现. 思想基础 JSP+JavaBean两层结构工作原理应该是比较熟悉的,也比较好理解. 但是有一点必须要清楚就是用户通过浏览器来发送网页的请求,此请求到达服务器后在服务器端查找对应的网页,如果是首次请求(第二次就不用解释执行了),对于JSP来说要生成Servlet,然后通过Servlet引擎来执行 Servlet,把调用JavaBean的结果

  • JAVA简单链接Oracle数据库 注册和登陆功能的实现代码

    复制代码 代码如下: //User 用户的基本信息,也是USERINFO表中的3个列package 登陆判断; public class User { private String name;  private String loginname;  private String loginpsw;  public String getName() {   return name;  }  public void setName(String name) {   this.name = name;

  • JAVA实现简单系统登陆注册模块

    前期准备 首先要先明确有个大体的思路,要实现什么样的功能,了解完成整个模块要运用到哪些方面的知识,以及从做的过程中去发现自己的不足.技术方面的进步大都都需要从实践中出来的. 功能:用户注册功能+系统登录功能+生成验证码 知识:窗体设计.数据库设计.JavaBean封装属性.JDBC实现对数据库的连接.验证码(包括彩色验证码)生成技术,还有就些比如像使用正则表达式校验用户注册信息.随机获得字符串.对文本可用字符数的控制等 设计的模块预览图: 彩色验证码预览图: 所用数据库:MySQL 数据库设计

  • 分享关于JAVA 中使用Preferences读写注册表时要注意的地方

    要注意的只有一个地方,那就是键名或者项名不要包含大写字母,否则读不到数据. 代码是这样的: 复制代码 代码如下: Preferences preferences = Preferences.systemRoot();String strRegTime = preferences.get("regTime", ""); 注册表中是这样的 不论怎么改都读不到regTime的值.后来想到现在代码中把值写进去看看是什么样的,代码如下 复制代码 代码如下: Preferenc

  • JavaEE账号注册模拟网站邮箱激活

    本项目是javaWeb和email结合的项目,模拟网站必须要激活邮箱账号才可以使用, 创建数据库 create table user( id varchar(32) primary key, name varchar(30), pwd varchar(20), email varchar(20), active char(1), acode varchar(32) ) User.java值对象 package cn.hncu.reg.domain; import javax.persistenc

随机推荐