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.stereotype.Service;
- import com.app.dao.UserDao;
- import com.app.tools.MD5Tool;
- import com.app.tools.MD5Util;
- import com.app.tools.SendEmail;
- import com.app.tools.ServiceException;
- import com.code.model.UserModel;
- @Service
- public class RegisterValidateService {
- @Autowired
- private UserDao userDao;
- public void processregister(String email){
- UserModel user=new UserModel();
- Long as=5480l;
- user.setId(as);
- user.setName("xiaoming");
- user.setPassword("324545");
- user.setEmail(email);
- user.setRegisterTime(new Date());
- user.setStatus(0);
- ///如果处于安全,可以将激活码处理的更复杂点,这里我稍做简单处理
- //user.setValidateCode(MD5Tool.MD5Encrypt(email));
- user.setValidateCode(MD5Util.encode2hex(email));
- userDao.save(user);//保存注册信息
- ///邮件的内容
- StringBuffer sb=new StringBuffer("点击下面链接激活账号,48小时生效,否则重新注册账号,链接只能使用一次,请尽快激活!
"); - sb.append(");
- sb.append(email);
- sb.append("&validateCode=");
- sb.append(user.getValidateCode());
- sb.append("\">http://localhost:8080/springmvc/user/register?action=activate&email=");
- sb.append(email);
- sb.append("&validateCode=");
- sb.append(user.getValidateCode());
- sb.append("");
- //发送邮件
- SendEmail.send(email, sb.toString());
- System.out.println("发送邮件");
- }
- ///传递激活码和email过来
- public void processActivate(String email , String validateCode)throws ServiceException, ParseException{
- //数据访问层,通过email获取用户信息
- UserModel user=userDao.find(email);
- //验证用户是否存在
- if(user!=null) {
- //验证用户激活状态
- if(user.getStatus()==0) {
- ///没激活
- Date currentTime = new Date();//获取当前时间
- //验证链接是否过期
- currentTime.before(user.getRegisterTime());
- if(currentTime.before(user.getLastActivateTime())) {
- //验证激活码是否正确
- if(validateCode.equals(user.getValidateCode())) {
- //激活成功, //并更新用户的激活状态,为已激活
- System.out.println("==sq==="+user.getStatus());
- user.setStatus(1);//把状态改为激活
- System.out.println("==sh==="+user.getStatus());
- userDao.update(user);
- } else {
- throw new ServiceException("激活码不正确");
- }
- } else { throw new ServiceException("激活码已过期!");
- }
- } else {
- throw new ServiceException("邮箱已激活,请登录!");
- }
- } else {
- throw new ServiceException("该邮箱未注册(邮箱地址不存在)!");
- }
- }
- }
RegisterController.java
- package com.app.web.controller;
- import java.text.ParseException;
- import javax.annotation.Resource;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestMethod;
- import org.springframework.web.servlet.ModelAndView;
- import com.app.service.impl.RegisterValidateService;
- import com.app.tools.ServiceException;
- @Controller
- public class RegisterController {
- @Resource
- private RegisterValidateService service;
- @RequestMapping(value="/user/register",method={RequestMethod.GET,RequestMethod.POST})
- public ModelAndView load(HttpServletRequest request,HttpServletResponse response) throws ParseException{
- String action = request.getParameter("action");
- System.out.println("-----r----"+action);
- ModelAndView mav=new ModelAndView();
- if("register".equals(action)) {
- //注册
- String email = request.getParameter("email");
- service.processregister(email);//发邮箱激活
- mav.addObject("text","注册成功");
- mav.setViewName("register/register_success");
- }
- else if("activate".equals(action)) {
- //激活
- String email = request.getParameter("email");//获取email
- String validateCode = request.getParameter("validateCode");//激活码
- try {
- service.processActivate(email , validateCode);//调用激活方法
- mav.setViewName("register/activate_success");
- } catch (ServiceException e) {
- request.setAttribute("message" , e.getMessage());
- mav.setViewName("register/activate_failure");
- }
- }
- return mav;
- }
- }
UserDao.java(这里个人没有做入库操作,只是利用集合,做过效果出来0_0)
- package com.app.dao;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import java.util.HashMap;
- import org.springframework.stereotype.Repository;
- import com.code.model.UserModel;
- @Repository
- public class UserDao {
- public HashMap map=new HashMap();
- public void save(UserModel user){
- System.out.println("cicicici");
- map.put("id", String.valueOf(user.getId()));
- map.put("email", user.getEmail());
- map.put("validateCode", user.getValidateCode());
- SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddhhmmss");
- String time=sdf.format(user.getRegisterTime());
- map.put("registerTime", time);
- int status=user.getStatus();
- map.put("status", String.valueOf(status));
- map.put("name", user.getName());
- String t2=sdf.format(user.getLastActivateTime());
- map.put("activeLastTime", String.valueOf(t2));
- System.out.println("=======s========="+status);
- }
- public void update(UserModel user){
- map.put("email", user.getEmail());
- map.put("validateCode", user.getValidateCode());
- Date time=user.getRegisterTime();
- map.put("registerTime", String.valueOf(time));
- int status=user.getStatus();
- map.put("status", String.valueOf(status));
- System.out.println("=======st========="+status);
- }
- public UserModel find(String email) throws ParseException{
- UserModel user=new UserModel();
- user.setEmail(map.get("email"));
- user.setName(map.get("name"));
- SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddhhmmss");
- Date day=sdf.parse(map.get("registerTime"));
- user.setRegisterTime(day);
- user.setStatus(Integer.valueOf(map.get("status")));
- user.setValidateCode(map.get("validateCode"));
- return user;
- }
- }
UserModel.java
- package com.code.model;
- import java.beans.Transient;
- import java.util.Calendar;
- import java.util.Date;
- public class UserModel {
- private Long id;
- private String name;
- private String password;
- private String email;//注册账号
- private int status=0;//激活状态
- private String validateCode;//激活码
- private Date registerTime;//注册时间
- /////////////////
- public Long getId() {
- return id;
- }
- public void setId(Long id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- public String getEmail() {
- return email;
- }
- public void setEmail(String email) {
- this.email = email;
- }
- public int getStatus() {
- return status;
- }
- public void setStatus(int status) {
- this.status = status;
- }
- public String getValidateCode() {
- return validateCode;
- }
- public void setValidateCode(String validateCode) {
- this.validateCode = validateCode;
- }
- public Date getRegisterTime() {
- return registerTime;
- }
- public void setRegisterTime(Date registerTime) {
- this.registerTime = registerTime;
- }
- /////////////////////////
- @Transient
- public Date getLastActivateTime() {
- Calendar cl = Calendar.getInstance();
- cl.setTime(registerTime);
- cl.add(Calendar.DATE , 2);
- return cl.getTime();
- }
- }
Java实现邮箱激活验证的更多相关文章
- Java注册帐号邮箱激活验证实现
Java注册帐号邮箱激活验证实现 1.需要加入发送邮件的mail.jar: http://www.oracle.com/technetwork/java/javamail/index-138643.h ...
- Java实现邮箱激活验证2
SendEmail.java [java] view plaincopyprint? package com.app.tools; import java.util.Date; import ja ...
- Java实现注册邮箱激活验证
邮件发送servelet实现 package com.xbs.register.main; import java.io.IOException;import java.util.Date;impor ...
- servlet邮箱激活验证实例含代码
也有很多人本来有机会的,他们都拒绝了,不想让自己太累,太麻烦.或者中途被情绪所左右,半途而废了. 成长是有代价的,同样悠闲也是有代价的. 流程: 用户填写相关信息,点击注册按钮 系统先将用户记录保存到 ...
- 主攻ASP.NET MVC4.0之重生:发邮箱激活验证
导入Interop.jmail组件 using jmail;using System.Net.Mail; 点击下载源代码 Controller相关代码 public class SendEmailCo ...
- java 手机号码+邮箱的验证
import java.util.regex.Pattern; //导入的包 1:String REGEX_MOBILE = "^((17[0-9])|(14[0-9])|(13[0-9]) ...
- Java实现邮箱验证
Java实现邮箱验证 JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口.它是Sun发布的用来处理email的API.它可以方便地执行一些常用的邮件传输.我们可以基于JavaMail开 ...
- 转:java 帐号激活与忘记密码 实例
原文链接:http://endual.iteye.com/blog/1613679 一.帐户激活 在 很多时候,在某些网站注册一个用户之后,网站会给这个用户注册时填写的email地址发送一封帐户激 ...
- java工具类(二)之java正则表达式表单验证
java正则表达式表单验证类工具类(验证邮箱.手机号码.qq号码等) 这篇文章主要介绍了java使用正则表达式进行表单验证工具类,可以验证邮箱.手机号码.qq号码等方法,需要的朋友可以参考下. jav ...
随机推荐
- 剑指offer4
中序遍历(LDR)是二叉树遍历的一种,也叫做中根遍历.中序周游.在二叉树中,先左后根再右.巧记:左根右. 现在有一个问题,已知二叉树的前序遍历和中序遍历:PreOrder: GDAFE ...
- 认识GMT和UTC时间-附带地理知识
GMT-格林尼治标准时 GMT 的全名是格林威治标准时间或格林威治平时 (Greenwich Mean Time),这个时间系统的概念在 1884 年确立,由英国伦敦的格林威治皇家天文台计算并维护,并 ...
- Impala与Hive的比较
1. Impala架构 Impala是Cloudera在受到Google的Dremel启发下开发的实时交互SQL大数据查询工具,Impala没有再使用缓慢的Hive+MapReduce批 ...
- Java缓存学习之五:spring 对缓存的支持
(注意标题,Spring对缓存的支持 这里不单单指Ehcache ) 从3.1开始,Spring引入了对Cache的支持.其使用方法和原理都类似于Spring对事务管理的支持.Spring Cache ...
- 删除对象的属性 delete的用法
Javascript的变量 实际上JavaScript中,变量 = 对象属性,这是因为 Javascript 在执行脚本之前会创建一个Global对象,所有的全局变量都是这个Global对象的属性,执 ...
- Python入门之python可变对象与不可变对象
本文分为如下几个部分 概念 地址问题 作为函数参数 可变参数在类中使用 函数默认参数 类的实现上的差异 概念 可变对象与不可变对象的区别在于对象本身是否可变. python内置的一些类型中 可变对象: ...
- cron表达式增加一段时间变为新的表达式
cron表达式是使用任务调度经常使用的表达式了.对于通常的简单任务,我们只需要一条cron表达式就能满足.但是有的时候任务也可以很复杂. 最近我遇到了一个问题,一条任务在开始的时候要触发A方法,在结束 ...
- Python3基础 if嵌套示例
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- LTE-A 载波聚合(Carrier Aggregation)介绍【转】
本文转自:https://blog.csdn.net/txgc1009/article/details/46467255 载波聚合(Carrier Aggregation) 首先介绍几个基本概念 Pr ...
- luogu P2184 贪婪大陆
乍一不咋会 ╭(╯3╰)╮ 把地雷L到R看成一条线段 要求的就是区间内有多少条线段经过 很明显是要用[1,R]内的起点个数-[1,L-1]的终点个数 然后这起点和终点个数可以用简单的差分线段树来维护一 ...
