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;/** * * @author Qixuan.Chen */@Servicepublic class RegisterValidateService {@Autowiredprivate 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小时生效,否则重新注册账号,链接只能使用一次,请尽快激活!</br>");sb.append("<a href=\&;:8080/springmvc/user/register?action=activate&email=");sb.append(email);sb.append("&validateCode=");sb.append(user.getValidateCode());sb.append("\&;>:8080/springmvc/user/register?action=activate&email=");sb.append(email);sb.append("&validateCode=");sb.append(user.getValidateCode());sb.append("</a>");//发送邮件SendEmail.send(email, sb.toString());System.out.println("发送邮件");}/*** 处理激活* @throws ParseException*////传递激活码和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;@Controllerpublic class RegisterController {@Resourceprivate 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");//获取emailString 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;/** * * @author Qixuan.Chen */@Repositorypublic class UserDao {public HashMap<String, String> map=new HashMap<String, String>();/*** @保存注册信息* private Long id;private String name;private String password;private String email;//注册账号private int status;//激活状态private String validateCode;//激活码private Date registerTime;//注册时间*/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);}/*** @更新 user*/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);}/*** @throws ParseException* @查找信息*/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.javapackage 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;}/////////////////////////@Transientpublic Date getLastActivateTime() {Calendar cl = Calendar.getInstance();cl.setTime(registerTime);cl.add(Calendar.DATE , 2);return cl.getTime();}}

这个社会是存在不公平的,不要抱怨,因为没有用!人总是在反省中进步的!

Java实现注册邮箱激活验证

相关文章:

你感兴趣的文章:

标签云: