分析:
首先创建含有激活状态的javaBean对象
public class User implements Serializable {
private int uid;//用户id
private String username;//用户名,账号
private String password;//密码
private String name;//真实姓名
private String birthday;//出生日期
private String sex;//男或女
private String telephone;//手机号
private String email;//邮箱
private String status;//激活状态,Y代表激活,N代表未激活
private String code;//激活码(要求唯一)
省略了getter/setter toString 方法等
}
用户激活其实就是修改用户表中的status状态,我们在这用Y和N表示,Y表示已经激活,N表示未激活。
然后再创建一个封装信息的javaBean对象
private boolean flag;//后端返回结果正常为true,发生异常返回false
private Object data;//后端返回结果数据对象
private String errorMsg;//发生异常的错误消息
Servlet
@WebServlet("/activeUserServlet")
public class ActiveUserServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取激活码
String code=request.getParameter(“code”);
if (code!=null){
//调用service完成激活
Userservice service=new UserServiceImpl();
boolean flag=service.active(code);
//判断标记 响应不同信息
String msg=null;
if (flag){
//激活成功
msg=“激活成功,请登录”;
}else{
//激活失败
msg=“激活失败,请联系管理员!”;
}
response.setContentType(“text/html;charset=utf-8”);
response.getWriter().write(msg);
}
}
Service
/*
- 注册用户
- */
@Override
public boolean regist(User user) {
//根据用户名查询用户对象
User u=userDao.findByUsername(user.getUsername());
//判断u是否为null
if (u!=null){
//用户名存在,注册失败
return false;
}
//保存用户信息
//2.1设置激活码,唯一字符串 便于Servlet区分用户
user.setCode(UuidUtil.getUuid());
//设置激活状态
user.setStatus(“N”);
userDao.save(user);
//激活邮件发送
String content=“点击激活”;
MailUtils.sendMail(user.getEmail(),content,“激活邮件”);
return true;
}
/*
- 激活用户
- */
@Override
public boolean active(String code) {
//根据激活码查询用户对象
User user=userDao.findByCode(code);
if (user!=null){
//调用dao修改激活状态的方法
userDao.updateStatus(user);
return true;
}else {
return false;
}
}
Dao
/*
- 根据激活码查找用户
- /
@Override
public User findByCode(String code) {
User user=null;
try {
String sql=“select * from tab_user where code=?”;
user=template.queryForObject(sql,new BeanPropertyRowMapper(User.class),code);
} catch (Exception e) {
e.printStackTrace();
}
return user;
}
/ - 修改激活状态
- */
@Override
public void updateStatus(User user) {
String sql=“update tab_user set status=‘Y’ where uid=?”;
template.update(sql,user.getUid());
}
在这需要获取客户端的授权码大家可以参考一下获取qq邮箱授权码
mail工具类
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;
/**
-
发邮件工具类
*/public final class MailUtils { private static final String USER = ""; // 发件人称号,同邮箱地址 private static final String PASSWORD = ""; // 使用邮箱授权码
/**
*-
@param to 收件人邮箱
-
@param text 邮件正文
-
@param title 标题
/
/ 发送验证信息的邮件 */public static boolean sendMail(String to, String text, String title){ try { final Properties props = new Properties(); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.host", "smtp.qq.com"); // 发件人的账号 props.put("mail.user", USER); //发件人的密码 props.put("mail.password", PASSWORD); // 构建授权信息,用于进行SMTP进行身份验证 Authenticator authenticator = new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { // 用户名、密码 String userName = props.getProperty("mail.user"); String password = props.getProperty("mail.password"); return new PasswordAuthentication(userName, password); } }; // 使用环境属性和授权信息,创建邮件会话 Session mailSession = Session.getInstance(props, authenticator); // 创建邮件消息 MimeMessage message = new MimeMessage(mailSession); // 设置发件人 String username = props.getProperty("mail.user"); InternetAddress form = new InternetAddress(username); message.setFrom(form); // 设置收件人 InternetAddress toAddress = new InternetAddress(to); message.setRecipient(Message.RecipientType.TO, toAddress); // 设置邮件标题 message.setSubject(title); // 设置邮件的内容体 message.setContent(text, "text/html;charset=UTF-8"); // 发送邮件 Transport.send(message); return true; }catch (Exception e){ e.printStackTrace(); } return false; } public static void main(String[] args) throws Exception { // 做测试用 MailUtils.sendMail("发件人邮箱","你好,这是一封测试邮件,无需回复。","测试邮件"); System.out.println("发送成功"); } }
-
Uuid工具类
import java.util.UUID;
/**
- 产生UUID随机字符串工具类
/
public final class UuidUtil {
private UuidUtil(){}
public static String getUuid(){
return UUID.randomUUID().toString().replace("-","");
}
/*- 测试
*/
public static void main(String[] args) {
System.out.println(UuidUtil.getUuid());
System.out.println(UuidUtil.getUuid());
System.out.println(UuidUtil.getUuid());
System.out.println(UuidUtil.getUuid());
}
}
- 测试