day17--途牛旅游项目-激活功能

day17–途牛旅游项目-激活功能

UUID介绍

(1)什么是uuid
全球唯一的,不会重复的 固定长度的随机字符串
25fd9bcf50ad4dc39aa38f084d1801c8
(2)复制UUI工具类

public final class UuidUtil {
	private UuidUtil(){}
	public static String getUuid(){
		return UUID.randomUUID().toString().replace("-","");
	}

}

test

public class UuidUtilTest {

    @Test
    public void getUuid() {
        for (int i = 0; i < 10; i++) {
            String code  = UuidUtil.getUuid();
            System.out.println(code);
        }

    }
}

后台代码

注册用户设置状态与激活码

 user.setStatus("N");//未激活
 user.setCode(UuidUtil.getUuid());//激活

在这里插入图片描述
激活test

   @Test
    public void test04() {
        UserService userService = new UserService();
        //根据 code -> status 改为Y
       int code = userService.active("bb26f0d05ea745c5986bc18ff7b4cef9");
        System.out.println(code);
    }

active方法

    public int active(String activeCode) {
        UserDao userDao = MySessionUtils2.getMapper(UserDao.class);
        int code =  userDao.updateStatus(activeCode); //1 表示成功
        MySessionUtils2.commitAndClose();
        return code;
    }

UserDao

    //update tab_user set status ='Y' where code = 'bb26f0d05ea745c5986bc18ff7b4cef9';
    int updateStatus(String activeCode);

映射文件

    <update id="updateStatus" parameterType="string" >
        update tab_user set status ='Y' where code = #{code};
    </update>


前台代码

http://localhost:8080/lvyou_war_exploded/activeServlet?activeCode=bb26f0d05ea745c5986bc18ff7b4cef9
ActiveServlet

@WebServlet("/activeServlet")
public class ActiveServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doGet(request,response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取参数  activeCode  //lvyou/activeServlet?activeCode=bb26f0d05ea745c5986bc18ff7b4cef9
        String activeCode = request.getParameter("activeCode");
        //处理参数
        UserService userService = new UserService();
        int code = userService.active(activeCode);
        System.out.println(activeCode);
        //响应给浏览器
        String msg = "";
        if(code==1){
            msg="激活成功可以使用";
        }else{
            msg="激活失败";
        }
        request.setAttribute("msg",msg);
        request.getRequestDispatcher("message.jsp").forward(request,response);
    }
}

jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
${msg}
</body>
</html>


使用邮件发送激活链接

在这里插入图片描述
在这里插入图片描述
MailUtil是发送邮件的工具类
直接从资料复制过来
需要编写 个测试

public final class MailUtils {
    private static final String USER = "289393698@qq.com"; // 发件人称号,同邮箱地址
    private static final String PASSWORD = "aghemvlpcgpubjaa"; // 如果是qq邮箱可以使户端授权码,或者登录密码

    /**
     *
     * @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;
    }


}


test

public class MailUtilsTest {

    @Test
    public void sendMail() {
        //参1 收件人
        //参2 内容
        //参3 标题
        MailUtils.sendMail("hadoop101@126.com","<a href='http://localhost:8080/lvyou_war_exploded/activeServlet?activeCode=bb26f0d05ea745c5986bc18ff7b4cef9'>点击激活途牛旅游账户</a>","激活账户");
    }
}

在注册业务方法中添加发邮件

public int register(User user) {
UserDao userDao = MySessionUtils2.getMapper(UserDao.class);
//判断 用户的账号是否存在
User user2 = userDao.findByUserName(user.getUsername());
//不存在,调用保存 返回 1
if(user2 == null){
user.setStatus(“N”);//未激活
String activeCode = UuidUtil.getUuid();
user.setCode(activeCode);//激活
userDao.save(user);
MySessionUtils2.commitAndClose();

        //参1 收件人
        //参2 内容
        //参3 标题
        MailUtils.sendMail(user.getEmail(),"<a href='http://localhost:8080/lvyou_war_exploded/activeServlet?activeCode="+activeCode+"'>点击激活途牛旅游账户</a>","激活账户");
        return 1;
    }else{
        //存在,返回-1
        return -1;
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值