<–start–>
需求描述:当客户打开收到邮箱激活码的邮件,点击激活链接,正确填写激活码后就会完成邮箱激活的步骤。
在后台编程代码编写中,有以下几个要点:
① 接收客户的手机号码和邮箱激活码。
② 先判断激活码是否有效。如果激活码无效,提示用户。
③ 如果激活码有效,接下来就要判断用户是否在重复绑定邮箱,customer表中
的type字段就是用来甄别邮箱是否已经激活,默认该字段的值是空值,如果type字段的值为1表示用户已经绑定邮箱。
④ 如果用户没有绑定过邮箱,就完成邮箱的绑定。
编写CustomerAction类,提供activeMail方法:
① 使用属性驱动接收激活码。

// 属性驱动
private String activecode;
public void setActivecode(String activecode) {this.activecode = activecode;
}

② 判断激活码是否有效。因为先前已经将邮箱激活码存入了redis中,所以我们
可以直接从redis中获取激活码,判断用户提交的激活码是否为空或者与redis中存储的不同,这两种情况均表示激活码无效。
③ 解决响应到客户端的中文乱码的问题。

ServletActionContext.getResponse().setContentType("text/html;charset=utf-8");

④ 激活码有效的话,为了避免用户重复点击激活地址导致重复绑定情形发生,
就需要通过webservice查询crm系统中的客户信息,判断是否已经绑定。
⑤ 对于已经激活邮箱的用户,在redis中删除邮箱激活码。

// 删除redis的激活码
redisTemplate.delete(model.getTelephone());

完整的CustomerAction代码:

@Action("customer_activeMail")
public String activeMail() throws IOException {
ServletActionContext.getResponse().setContentType("text/html;charset=utf-8");
// 判断激活码是否有效
String activecodeRedis = redisTemplate.opsForValue().get(model.getTelephone());
if (activecodeRedis == null || !activecodeRedis.equals(activecodeRedis)) {// 激活码无效ServletActionContext.getResponse().getWriter().println("激活码无效,请登录系统,重新绑定邮箱!");
} else {// 激活码有效// 防止重复绑定// 调用CRM webService 查询客户信息,判断是否已经绑定Customer customer = WebClient.create("http://localhost:9002/crm_management/services"+ "/customerService/customer/telephone/"+ model.getTelephone()).accept(MediaType.APPLICATION_JSON).get(Customer.class);if (customer.getType() == null || customer.getType() != 1) {// 没有绑定,进行绑定WebClient.create("http://localhost:9002/crm_management/services"+ "/customerService/customer/updatetype/"+ model.getTelephone()).get();ServletActionContext.getResponse().getWriter().println("邮箱绑定成功!");} else {// 已经绑定过ServletActionContext.getResponse().getWriter().println("邮箱已经绑定过,无需重复绑定!");}// 删除redis的激活码redisTemplate.delete(model.getTelephone());
}
return NONE;
}

在crm_management系统中,编写webservice服务接口findByTelephone,通过手机号码来查询客户信息。

@Path("/customer/telephone/{telephone}")
@GET
@Consumes({ "application/xml", "application/json" })
public Customer findByTelephone(@PathParam("telephone") String telephone);

编写updateType服务接口,当激活码有效时,就修改customer表中的type字段的值为1。

@Path("/customer/updatetype/{telephone}")
@GET
public void updateType(@PathParam("telephone") String telephone);

在实现类CustomerServiceImpl中实现findByTelephone和updateType这两个方法。

@Override
public Customer findByTelephone(String telephone) {return customerRepository.findByTelephone(telephone);
}@Override
public void updateType(String telephone) {customerRepository.updateType(telephone);
}

在CustomerRepository的dao中编写方法,运用spring data jpa完成持久层的操作。

public Customer findByTelephone(String telephone);@Query("update Customer set type=1 where telephone= ?")
@Modifying
public void updateType(String telephone);

完整的CustomerService服务接口代码:

public interface CustomerService {@Path("/customer/telephone/{telephone}")
@GET
@Consumes({ "application/xml", "application/json" })
public Customer findByTelephone(@PathParam("telephone") String telephone);@Path("/customer/updatetype/{telephone}")
@GET
public void updateType(@PathParam("telephone") String telephone);}

完整的CustomerServiceImpl实现类代码:

@Service
@Transactional
public class CustomerServiceImpl implements CustomerService {// 注入DAO
@Autowired
private CustomerRepository customerRepository;@Override
public Customer findByTelephone(String telephone) {return customerRepository.findByTelephone(telephone);
}@Override
public void updateType(String telephone) {customerRepository.updateType(telephone);
}}

完整的CustomerRepository持久层代码:

public interface CustomerRepository extends JpaRepository<Customer, Integer> {public Customer findByTelephone(String telephone);@Query("update Customer set type=1 where telephone= ?")
@Modifying
public void updateType(String telephone);}

<–end–>

Java案例-用户注册邮箱绑定激活功能实现相关推荐

  1. java案例----用户注册--发送邮件并激活/发送邮件验证码

    java案例----用户注册-发送邮件并激活/发送邮件验证码 一.前期准备 1.准备两个邮箱账号(一个发邮件,一个收邮件) 1.1)登录需要发送邮件的QQ邮箱,找到设置项 1.2)然后在账户栏下,找到 ...

  2. Java案例-用户注册邮箱验证将邮箱激活码存入redis功能实现

    <–start–> 用户注册时,要求用户填写注册邮箱,然后后台向用户的注册邮箱中发送绑定邮件,并将激活码保存到redis中. 手机短信验证码因为时效期短,只需要将短信验证码存储到sessi ...

  3. java实现用户注册邮箱激活验证

    功能:通过邮箱注册账号,注册成功会向邮箱发送激活邮件.提示用户登录邮箱进行账户激活,方可使用账号. 流程:本质上就是向user表里新增一条数据,user表中应有一个code字段存放随机串.code在添 ...

  4. Java实现QQ邮箱验证激活 Java简单发送邮箱

    Java简单发送邮箱 1.首先要去qq邮箱 设置–账户–把所有服务都开启 (记住其中任意一个授权码就OK了) 如下图: 2. 导入jar包 创建测试类 (复制即可) 如下: package testE ...

  5. java 基于springboot邮箱找回密码功能

    一.主要内容 基于springboot实现密码找回功能. 二.邮箱找回密码的思想. 1.输入注册邮箱,点击获取验证码.会将验证码发送到邮箱. 2.用户进入邮箱,查看验证码. 3.用户输入验证码,输入新 ...

  6. 黑马旅游网编写练习(2)--邮箱激活功能

    黑马旅游网编写练习(2)–邮箱激活功能 当用户进行注册时,一般会需要使用邮箱进行激活:所以在这里也模拟一下注册后邮箱的激活功能. 首先导入发送邮箱的jar包mail.jar:或者配置maven地址为: ...

  7. java发送qq邮箱验证_JAVA 实现 QQ 邮箱发送验证码功能(不局限于框架)

    JAVA 实现 QQ 邮箱发送验证码功能(不局限于框架) 本来想实现 QQ 登录,有域名一直没用过,还得备案,好麻烦,只能过几天再更新啦. 先把实现的发送邮箱验证码更能更新了. 老规矩,更多内容在注释 ...

  8. java注册时向指定邮箱发送邮件激活

    javaMail API javaMail是SUN公司提供的针对邮件的API . 两个jar包  mail.jar 和 activation.jar java mail中主要类:javax.mail. ...

  9. java实现通过QQ邮箱发送激活邮件 springBoot

    用户邮件激活 通过QQ邮箱发送激活邮件 soringBoot 本文主要介绍了使用java 调用邮箱发送邮件的功能 首先新建一个springboot项目 pom依赖如下 <parent>&l ...

最新文章

  1. java正则表达式 匹配%号_java正则表达式匹配带有括号的电话号为什么匹配不上...
  2. linux apache 查看mpm 配置方式,Apache MPM模块prefork和worker的区别与配置
  3. Linux堆内存管理深入分析
  4. 806. Number of Lines To Write String - LeetCode
  5. python—多线程之共享数据
  6. 社交网络+大数据真的用来可以模拟一个活人吗?
  7. Pixhawk的传感器数据(陀螺、加计等)流程
  8. 前后数据交互(ajax) -- 初始化页面表格
  9. 真是,原来可以这样啊
  10. ASP.NET 2.0中实现模板中的数据绑定
  11. YoloV5实战:手把手教物体检测
  12. android 图片预览动画,Android图片上传实现预览效果
  13. centos 添加路由命令_详解CentOS 6.4 添加永久静态路由所有方法汇总
  14. python3 下载文件-使用Python 3从网上下载文件
  15. kotlin android 镜像,【54】Kotlin android Anko 神兵利器
  16. 人群与网络:社会选择与社会影响
  17. 网络爬虫详细设计方案
  18. ios-GET和POST
  19. Floyd最短路径算法(来自微信公众号“算法爱好者”改编)
  20. tplink怎么进去_如何进入tp-link无线路由器设置界面

热门文章

  1. 搜索算法相似度问题之BM25
  2. ​年底大会火爆,看“瑶台”如何搭建一场高质量沉浸式大会
  3. 干货回顾 | 泛娱乐社交 APP 出海的破与立
  4. CANopen笔记1
  5. C++中public、protected及private用法
  6. Oracle EBS-SQL (QA-1):检查超出检验周期的检验数据.sql
  7. silverlight ListBox 多列图片效果
  8. 最老程序员创业札记:全文检索、数据挖掘、推荐引擎应用35
  9. 误删除了_msdcs.domain.com
  10. 虚拟×××和虚拟防火墙 (VNN)