黑马旅游网学习记录(四)

黑马旅游网学习(四)

上面三步完成了前后端的一个基本的数据交互,下一步开始学习邮件的验证,为什么要使用邮件来验证信息呢,因为需要保证用户填写的邮箱信息是一个正确的邮箱地址,只有这样,企业在以后推送广告的时候才能够定点投放。

邮件的发送以及激活功能实现

本文提供了一个MailUtil工具类,里面有现成的工具可以使用。
1、首先需要对发送端进行一下设置,设置上授权码。
2、添加发件人信息。
3、功能测试

第一步:
我们需要在qq邮箱的设置界面,选择账户那一栏,将如下箭头指向的地方设置为开启就可以了,中间需要一部验证码的操作,按照步骤来就没问题。
最后我们会拿到一个授权码,使用这个码字作为password。如果更改了qq登陆密码或者独立密码,那么这个授权码就需要修改。
在这里插入图片描述
第二步,添加发件人信息
在这里插入图片描述
我们需要在图示的 位置上,添加我们发件人的信息。第二个密码就是授权码。

第三步:
测试
在这里插入图片描述
在MailUtils中找到这个主方法,运行,打印出来发送成功,并且没有任何报错,就说明发送成功了。
在这里插入图片描述
邮件激活实现
上面我们说了如何让程序发送一封邮件到我们的邮箱,下面要做的就是发送跳转地址到邮箱中,跳转之前需要对前端传进来的用户进行一些操作
1、设置用户的唯一编码,该编码主要为了识别用户,当不同的用户同时进行注册的时候我们能够分辨出是哪一个用户在进行注册
2、设置用户的状态码,如果用户在数据库中不存在,那么我们应该设置他的状态码为未激活的状态。

public boolean regist(User user) {
        UserDao userDao = new UserDaoImpl();
        //1、根据用户名查询用户
        User u = userDao.FindByUserName(user.getUsername());
        if(u != null)//如果数据库中已经存在该用户
        {
            return false;
        }
        //以下为新增代码,除了保存代码以外,其余都是新增代码。
        //邮件激活
        //设置user的激活码和状态码
        user.setCode(UuidUtil.getUuid());
        user.setStatus("N");//状态码 如果为Y即为已激活状态,如果为N则为未激活的状态
        //2、保存用户信息
        userDao.Save(user);
        //3、发送邮件通知用户点击进行激活
        String context = "<a href='http://localhost/travel/avtiveUserServlet?code=" + user.getCode() + "'>黑马旅游网激活邮件</a>";
        MailUtils.sendMail(user.getEmail(),context,"激活邮件");

        return true;
    }

ActiveUserServlet的实现

上面用户从邮件点击激活以后,我们需要让该用户的状态码设置为激活状态。前端发送给后端的请求的时候,包含了用户的唯一标识码,后端通过该code判断这个用户是否存在,如果不存在就返回错误信息,如果存在,就更新该用户信息,设置他的状态码为Y,更新的工作放在了service以及dao层,这里只介绍如何完成servlet。
首先新建一个servlet,命名为activeUserServlet,该命名要和上面发送给邮件的地址中指定的servelt名字一致。

@WebServlet(name = "ActiveUserServlet")//注意这里的名字
public class ActiveUserServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //激活界面1、给用户激活
        String code = request.getParameter("code");
        if (code != null)
        {
            UserService userService = new UserServiceImpl();
            boolean flag = userService.Active(code);

            String Msg = null;
            if(flag)
            {
                //激活成功
                Msg = "激活成功,请点击<a href=login.html>登陆</a>";
            }else
            {
                //激活失败
                Msg = "激活失败,请点击<a href=regist.html>注册重新注册</a>";
            }
            response.setContentType("text/html;charset=utf8");
            response.getWriter().write(Msg);
        }
    }

注意!!! 这里有一个细节,不知道为什么b站视频没有讲,后面再doget函数中需要加上一句话

this.doPost(Requst,Response);

如果不加这句话你会发现,当你写好全部的程序以后,页面不会跳转。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值