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 ...
随机推荐
- [Leetcode] 336. Palindrome Pairs_Hard
Given a list of unique words, find all pairs of distinct indices (i, j) in the given list, so that t ...
- JS中自定义replace可替换特殊符号$等,但无法忽略大小写的函数
//可替换特殊符号$等,但无法忽略大小写的函数 String.prototype.replaceStr = function (s1, s2) { this.str = this; if (s1.le ...
- 浅谈Android View滑动冲突
引言 上一篇文章我们从源码的角度介绍了View事件分发机制,这一篇文章我们就通过介绍滑动冲突的规则和一个实例来更加深入的学习View的事件分发机制. 1.外部滑动方向和内部滑动方向不一致 考虑这样一种 ...
- Qt下QString转char*
Qt下面,字符串都用QString,确实给开发者提供了方便,想想VC里面定义的各种变量类型,而且函数参数类型五花八门,经常需要今年新那个类型转换 Qt再使用第三方开源库时,由于库的类型基本上都是标准的 ...
- html5shiv.min.js
今日看代码,发现了绝妙的一句,把它记录下来. <!--[if IE]> <script src="http://libs.useso.com/js/html5shiv/3. ...
- xhtml 的三种 doctype
{1}文档宣告 <!ODCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0 [there]//EN" "http://www.w4org/TR/xhtml1/DTD/ ...
- SQL语句--查询任务
SELECT 目标字段1, 目标字段2 FROM 目标表WHERE ID IN(SELECT 外键 FROM 外键所在表WHERE 提供数据字段 IN(提供数据第一条, 提供数据第二条, ))
- python 类的私有方法例子
#coding=utf-8 class Person(object): id=12 def __init__(self,name): self.name=name ...
- 浅谈elasticsearch 集群
elasticsearch 集群 摘要: elasticsearch 集群 搭建elasticsearch的集群 现在假设我们有3台es机器,想要把他们搭建成为一个集群 基本配置 每个节点都要进行这样 ...
- POJO/VO/DTO等对象模型
JavaBean 要想成为JavaBean,需要满足以下条件: 1,提供一个默认的无参构造函数. 2,需要被序列化并且实现了Serializable接口. 3,可能有一系列可读写属性伴随"g ...
