JavaWeb:实现通过邮箱发送验证码找回密码(完整代码) 您所在的位置:网站首页 邮箱验证代码在哪里找出来 JavaWeb:实现通过邮箱发送验证码找回密码(完整代码)

JavaWeb:实现通过邮箱发送验证码找回密码(完整代码)

2024-07-17 19:58| 来源: 网络整理| 查看: 265

实现通过邮箱发送验证码找回密码功能需要具备一些Java基础知识、JavaWeb基础知识、MySQL基础知识以及理解简单的三层架构:Servlet层、Service层、Dao层。

编写过程中需要导入两个jar包,如有需要请三连私信博主免费领取。

一、先来看效果图 第一步:进入“找回密码”界面

第二步:输入用户名与邮箱,如果与数据库不匹配则会输出提示信息,如果匹配则进入下一步。

第三步:邮箱接收验证码

邮箱中收到了java发送的邮件!

 第四步:填写验证码

 第五步:设置新密码

 

 

 输入两次一样的账号密码,点击完成,密码修改成功!

 二、编程思路

需要3个前端jsp代码和3个servlet代码。

在第1个jsp代码中,创建两个表单,用于输入“用户名”和“邮箱”。用户输入完毕后,跳转至第1个servlet。

在第1个servlet中,首先获取用户输入的“用户名”和“邮箱”,然后通过“用户名”查询数据库,得到数据库中“用户名”对应的邮箱。因为有可能用户填写“用户名”和“邮箱”是不对应的,因此需要对用户填写的“邮箱”和通过数据库查询得到的“邮箱”进行判断,如果不匹配,则输出提示信息。如果匹配,则生成一个4位随机验证码。将4位验证码保存至session中(用于后续对用于输入的验证码进行验证),并将验证码以邮件的形式发送至用户邮箱。发送完毕后,跳转至第2个jsp(得到用户填写的“用户名”后也需要保存至session中,用于最后一步对密码进行修改)。

在第2个jsp代码中,创建一个表单,用于输入“验证码”。用户输入完毕后,跳转至第2个servlet。

在第2个servlet中,首先获取用户填写的“验证码”,然后获取session中的验证码,并将session中的验证码销毁(保证验证码的唯一性,这也是为什么邮件里说只能输入一次)。接着对用户填写的“验证码”和session中的验证码进行判断,如果不同则输出提示信息,返回到第一个页面。如果相同则跳转至第3个jsp。

在第3个jsp代码中,创建两个表单,用于输入两次“新密码”。这里需要对用户输入的“新密码”进行表单检验,使用户填写的“新密码”满足8-20字符且两次输入的“新密码”必须一致。如果用户填写完毕后,点击“完成”,则跳转至第3个servlet。

在第3个servlet中,获取session的“用户名”和用户填写的“新密码”。修改数据库中的数据,即可完成“设置新密码”。

三、上代码!

第1个jsp代码: 找回密码 用户名: 邮箱: 第1个servlet代码: @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //1.设置编码、输出类 request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); //2.1获取用户的用户名 String username = request.getParameter("username"); //2.1.1把用户名保存在session中,方便后续判断 request.getSession().setAttribute("username1",username); //2.2获取用户的邮箱 String email = request.getParameter("email"); //3.创建一个空的用户对象 User user = null; //4.通过邮箱找到用户信息 UserService service = new UserServiceImpl(); user = service.findUserByUsername(username); //5.判断用户名与邮箱是否匹配 if (user != null&&user.getEmail().equals(email)){ //服务器通知浏览器不要缓存 response.setHeader("pragma","no-cache"); response.setHeader("cache-control","no-cache"); response.setHeader("expires","0"); String base = "0123456789ABCDEFGHIJKLMNOPQRSDUVWXYZabcdefghijklmnopqrsduvwxyz"; int size = base.length(); Random r = new Random(); StringBuilder code = new StringBuilder(); for(int i=1;i


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有