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 ...
随机推荐
- NLP总览
一.自然语言处理概述 1)自然语言处理:利用计算机为工具,对书面实行或者口头形式进行各种各样的处理和加工的技术,是研究人与人交际中以及人与计算机交际中的演员问题的一门学科,是人工智能的主要内容. 2) ...
- webbench,简单、实用!
官网:http://home.tiscali.cz/~cz210552/webbench.html 1.下载并安装 # wget http://home.tiscali.cz/~cz210552/ ...
- JSP—内置对象
JSP内置对象是Web容器创建的一组对象,不用声明,直接使用 out 输出对象 类型 javax.servlet.jsp.JspWriter 作用域 Page request 请求对象 类型 java ...
- Asp.net MVC 通过自定义ControllerFactory实现构造器注入
一.重写ControllerFactory的GetControllerInstance ControllerFactory是asp.net中用于在运行时构造Controller的工厂 ,默认使用的工厂 ...
- python 内置函数bytearray
1.参考文档 class bytearray([source[, encoding[, errors]]]) Return a new array of bytes. The bytearray cl ...
- 升级到php7相关问题,日请求过亿QQ会员活动平台PHP7升级实践
升级到php7相关问题,日请求过亿QQ会员活动平台PHP7升级实践 日请求过亿:QQ会员活动平台PHP7升级实践http://mp.weixin.qq.com/s?__biz=MjM5MjAwODM4 ...
- 使用原生的javascript封装动画函数(有callback功能)
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- js如何模拟multipart/form-data类型的请求
var temp = document.createElement('form'); temp.action = this.data.testURL; temp.method = 'post'; te ...
- mysql 触发器 trigger用法 two (稍微复杂的)
触发器(trigger):监视某种情况,并触发某种操作. 触发器创建语法四要素:1.监视地点(table) 2.监视事件(insert/update/delete) 3.触发时间(after/befo ...
- Quartz框架调用Demo
Quartz框架调用Demo 任务调度在JAVA应用程序中运用的十分普遍,掌握QUARTZ是必备的技能; 官网:http://www.quartz-scheduler.org/ 下载最新1.80资源包 ...