向用户发送激活码点击激活账号
用户表Users:
package com.myy.pojo;
/**
* @program: bookShopping
* @description: 用户表
* @author: myy
*
* 实体类:
* 1. 属性私有化,提供公共的get、set方法供外界访问
* 2. 必须要有无参构造
* 3. 属性类型应该为包装类类型(8种基本类型)
* 4. 类不能使用final修饰
*
* final、finally(不管有没有异常,都要执行)
* finalize:Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法。
*/
public class Users {
private Integer id;
private String username;
private String password;
private String nickname;
private String email;
private String role;
private Integer state;
private String activecode;
private String updatetime;
public Users() {
}
public Users(Integer id, String username, String password,
String nickname, String email, String role,
Integer state, String activecode, String updatetime) {
this.id = id;
this.username = username;
this.password = password;
this.nickname = nickname;
this.email = email;
this.role = role;
this.state = state;
this.activecode = activecode;
this.updatetime = updatetime;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getRole() {
return role;
}
public void setRole(String role) {
this.role = role;
}
public Integer getState() {
return state;
}
public void setState(Integer state) {
this.state = state;
}
public String getActivecode() {
return activecode;
}
public void setActivecode(String activecode) {
this.activecode = activecode;
}
public String getUpdatetime() {
return updatetime;
}
public void setUpdatetime(String updatetime) {
this.updatetime = updatetime;
}
}
用户Mapper:
UsersMapper接口:
package com.myy.mapper;
import com.myy.pojo.Users;
import java.util.List;
public interface UsersMapper {
/**
* 增加
* @param users
* @return 1:成功 0:失败
*/
int insertUsers(Users users);
}
UsersMapper.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.myy.mapper.UsersMapper">
<insert id="insertUsers" parameterType="com.myy.pojo.Users">
INSERT INTO users
(username, password, nickname, email, role, state, activecode)
VALUES(#{username}, #{password}, #{nickname}, #{email}, #{role},
#{state}, #{activecode})
</insert>
</mapper>
用户service包
UsersService接口:
package com.myy.service;
import com.myy.pojo.Users;
import java.util.List;
/**
* @author myy
*/
public interface UsersService {
int insertUsers(Users users);
Users findUsersByCode(String code);//code:用户激活码
}
service.impl包
UsersServiceImpl:
package com.myy.service.impl;
import com.myy.mapper.UsersMapper;
import com.myy.pojo.Users;
import com.myy.service.UsersService;
import com.myy.utils.MailUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.mail.MessagingException;
import java.util.List;
/**
*@program: bookShopping
*@description:
*@author: myy
*/
@Service
public class UsersServiceImpl implements UsersService {
@Resource
private UsersMapper usersMapper;
@Override
public int insertUsers(Users users) {
int num = usersMapper.insertUsers(users);
//发送用户激活邮件
try {
MailUtils.secdMail(users.getEmail(), users.getActivecode());
} catch (MessagingException e) {
e.printStackTrace();
}
return num;
}
@Override
public Users findUsersByCode(String code) {
return usersMapper.findUsersByCode(code);
}
}
用户controller包
com.myy.controller;
/**
* @author myy
*/
import com.myy.pojo.Users;
import com.myy.service.UsersService;
import com.myy.service.impl.UsersServiceImpl;
import com.myy.utils.DateUtils;
import com.myy.utils.Md5Utils;
import com.myy.utils.UUIDUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.Date;
/**
*@program: bookShopping
*@description:
*@author: myy
*/
@Controller
@RequestMapping("/users")
public class UsersController {
@Autowired
private UsersService usersService;
//激活账户
@RequestMapping("/activation")
public String activation(String code) {
//根据激活码查询用户
Users users = usersService.findUsersByCode(code);
//将账户的状态改为1
users.setState(1);
usersService.updateUsers(users);
return "login";
}
}
最重要的就是发送邮件的工具类了
package com.myy.utils;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;
/**
*@program: bookShopping
*@description: 邮件
*@author: myy
*/
public class MailUtils {
/*
*@param [toMail, code]收件人 激活码
*@return void
*/
public static void secdMail(String toMail, String code) throws MessagingException {
//设置邮件服务器
Properties properties = new Properties();
//可以设置邮件服务器
properties.setProperty("mail.host","smtp.163.com");
properties.setProperty("mail.smtp.auth","true");
//与邮件服务器的连接
Session session = Session.getInstance(properties, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("yingmz1314@163.com","myy123");
}
});
//创建邮件
Message message = new MimeMessage(session);
//设置收件人地址
message.setFrom(new InternetAddress("yingmz1314@163.com"));
//抄送
message.setRecipient(Message.RecipientType.TO, new InternetAddress(toMail));
//设置邮件的主体
message.setSubject("来自图书商城的邮件");
//设置内容
String msg="<h1>点击<a href='http://localhost:8080/book/users/activation.action?code="+code+"'>此处</a>激活账户<h1>";
message.setContent(msg, "text/html;charset=utf-8");
//发送邮件
Transport.send(message);
}
}
最后在邮箱里打开POP3/SMTP/IMAP的开关即可。