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 ...
随机推荐
- Lintcode: Hash Function && Summary: Modular Multiplication, Addition, Power && Summary: 长整形long
In data structure Hash, hash function is used to convert a string(or any other type) into an integer ...
- Geometry
uva1473 这题说的是 在空间中给了n个点 然后用体积最小的圆锥将这些点包含在内可以在表面上, 将这些点 映射到xoz平面上然后,然后枚举每个上凸包的边和每个点的极值进行判断求得最小的体积 我们会 ...
- mac下安装了brew
使用mac后发现很多软件都可以通过终端命令brew...来安装. 查了一下,发现brew原来是osx系统上的软件包管理工具,全名是Homebrew,官网:https://brew.sh(这官竟然还包含 ...
- 学习Linux的正确姿势
学习Linux的正确姿势 端正学习态度1.Linux不等于骇客(or Cracker).当然众所周知很多“黑客工具”都是Linux平台上的,我帮助过很多Linux小白发现他们殊途同归都是朝着类似Air ...
- Js基础知识5-函数返回值、函数参数、函数属性、函数方法
函数返回值 所有函数都有返回值,没有return语句时,默认返回内容为undefined,和其他面向对象的编程语言一样,return语句不会阻止finally子句的执行. function testF ...
- 5+App使用定位
1.定位方法 5+App定位方法:5+ API中的Geolocation模块 Geolocation目前支持h5内置的定位,百度,高德.h5内置定位支持wgs84坐标系:百度支持gcj ...
- Google's Machine Learning Crash Course #02# Descending into ML
INDEX How do we know if we have a good line Linear Regression Training and Loss How do we know if we ...
- Python学习笔记之面向对象编程(三)Python类的魔术方法
python类中有一些方法前后都有两个下划线,这类函数统称为魔术方法.这些方法有特殊的用途,有的不需要我们自己定义,有的则通过一些简单的定义可以实现比较神奇的功能 我主要把它们分为三个部分,下文也是分 ...
- Python入门之python可变对象与不可变对象
本文分为如下几个部分 概念 地址问题 作为函数参数 可变参数在类中使用 函数默认参数 类的实现上的差异 概念 可变对象与不可变对象的区别在于对象本身是否可变. python内置的一些类型中 可变对象: ...
- YAML配置文件
最近,研究jeeweb这个框架,发现新版本中的配置文件都是用的.yml为后缀的文件,打开一看,和以前的xml和properties语法有很大区别,因此仔细研究一下. 简介: YAML是(YAML Ai ...