完成登录注册以及发送验证码激活功能
登录注册
UserService-->UserServiceImpl-->UserContorller
public interface UserService {
User selectByEmailAndPwd(String email,String password);
void insert(User user);
void updateEmail(Integer uId);
User selectById(Integer uId);
User selectByEmail(String email);
}
@Service
@Transactional
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Transactional(readOnly = true)
@Override
public User selectByEmailAndPwd(String email, String password) {
return userMapper.selectByEmailAndPwd(email,password);
}
@Transactional(propagation = Propagation.SUPPORTS,rollbackFor = RuntimeException.class)
@Override
public void insert(User user) {
userMapper.insert(user);
return;
}
@Transactional(propagation = Propagation.SUPPORTS,rollbackFor = RuntimeException.class)
@Override
public void updateEmail(Integer uId) {
userMapper.updateEmail(uId);
}
@Override
public User selectByEmail(String email) {
return userMapper.selectByEmail(email);
}
@Override
public User selectById(Integer uId) {
return userMapper.selectById(uId);
}
}
@RequestMapping("login")
public String Login(String name, String password, HttpSession session) {
User user = userService.selectByEmailAndPwd(name, password);
System.out.println(user);
session.setAttribute("user", user);
return "redirect:/book/showMain.do";
}
@RequestMapping("regist")
public String register(User user) {
User user2 = userService.selectByEmail(user.getEmail());
if (user2 == null) {
userService.insert(user);
User user1 = userService.selectByEmail(user.getEmail());
MailUtil.sendSimpleMail(user1.getEmail(), "当当网注册", "欢迎注册当当网,进行验证 <a href='http://localhost:8080/dangdang/user/registerYz.do?uId=" + user1.getId() + "'>Click Here!</a>");
return "user/verify_form";
}else {
return "/user/register_form";
}
}
验证码
@RequestMapping("regist")
public String register(User user) {
User user2 = userService.selectByEmail(user.getEmail());
if (user2 == null) {
userService.insert(user);
User user1 = userService.selectByEmail(user.getEmail());
MailUtil.sendSimpleMail(user1.getEmail(), "当当网注册", "欢迎注册当当网,进行验证 <a href='http://localhost:8080/dangdang/user/registerYz.do?uId=" + user1.getId() + "'>Click Here!</a>");
return "user/verify_form";
}else {
return "/user/register_form";
}
}
@RequestMapping("registerYz")
public String registerYz(Integer uId,Model model) {
User user = userService.selectById(uId);
model.addAttribute("user",user);
userService.updateEmail(uId);
return "/user/register_ok";
}
Mail工具类
package com.baizhi.util;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Date;
import java.util.Properties;
public class MailUtil {
// 1.设置发送邮件的一些参数
private static Properties pro = new Properties();
static {
pro.setProperty("mail.transport.protocol", "smtp");
pro.setProperty("mail.smtp.host", "smtp.qq.com");
pro.setProperty("mail.smtp.auth", "true");
pro.setProperty("mail.smtp.port", "587");
}
/**
* 发送邮件进行验证
* @param accepter 收邮件的人
* @param title 邮件的题目
* @param content 邮件内容
* @return 邮件发送成功与否
*/
public static int sendSimpleMail(String accepter,String title,String content) {
int res = 0;
String sender="123@qq.com";//发件人
String code="123123";//发件人账号对应的授权码
//norzvwxwteojcaij
try {
// 2.创建一个会话对象和邮件服务器交互
Session session = Session.getDefaultInstance(pro);
// 3.创建一个邮件对象
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(sender)); // 发送人
message.setRecipient(MimeMessage.RecipientType.TO,
new InternetAddress(accepter)); // 收件人
message.setSubject(title,"UTF-8");// 设置邮件的标题
//email是收件人的邮箱地址。
message.setContent(content, "text/html;charset=UTF-8");// 设置邮件的正文
message.setSentDate(new Date());// 发送时间
message.saveChanges(); // 保存设置
Transport transport = session.getTransport();// 获取一个传输对象
transport.connect(sender, code);// 设置发送邮件用户名和密码
transport.sendMessage(message, message.getAllRecipients());// 发送邮件
transport.close();
res = 1;
} catch (Exception e) {
e.printStackTrace();
}
return res;
}
}
验证码思路
用户注册-->验证邮箱是否存在-->(否)-->调用controller插入数据-->将数据携带id值连接发送至邮箱-->用户点击连接激活。