Java进阶之Jsp找回密码知识点总结


 实例说明
       用户账号代表着用户在一个网站上的身份,想使用这个账号登录网站就必须要输入与之对应的密码,有些疏忽大意的人会出现错记甚至遗忘自己登录密码的情况,这个时候就需要使用密码管理功能让用户为自己重新初始化一个新的密码。
      运行本实例,进入用户登录页面,如图1所示,单击“忘记密码”超链接,进入到找回密码第一步页面,在这里输入注册时所使用的用户名、邮箱如图2所示,单击“下一步按钮”,进入到找回密码第二步页面,此页面将显示出用户注册时留下的密码提示问题,根据问题填入正确的答案如图3所示,单击“下一步”按钮,进入初始化新密码页面,在此页面输入一个新的密码并单击“确定”按钮,完成设置新密码的操作,如图4所示。

图1 用户登录页面

Java进阶之Jsp找回密码知识点总结_第1张图片

              图2  找回密码第一步页面

图3 找回密码第二步页面

Java进阶之Jsp找回密码知识点总结_第2张图片

图4 找回密码第三步页面

设计思路
(1)设计用于存放用户信息的数据表,表结构如图5所示:

Java进阶之Jsp找回密码知识点总结_第3张图片

       图5  tb_userinfo数据表结构
(2)设计找回密码的具体流程如图6所示。第一步根据用户名与邮箱查询出该用户的注册信息。第二步将注册信息中的密码提示问题显示在页面中,并让用户根据提示的问题输入答案。第三步判断答案是否与注册时输入的一致,如果一致允许用户修改密码。第四步更新数据库中的密码。

Java进阶之Jsp找回密码知识点总结_第4张图片

图6  找回密码流程图
 (3)根据密码找回流程设计操作数据库的方法。其中getConnection()方法用于获取数据库连接,findByNameEmail()方法用于按照用户名与电子邮件地址查询用户,updatePwd()方法用于按照用户名更新用户密码。
 技术要点

  本实例在存取用户信息的时候用到了session对象,下面对实例中用到的session对象进行详细讲解。
(1)session对象
     session对象是用于保存客户与服务器间的会话信息而分配给客户的对象,它属于jsp内置对象,在jsp页面可以真接调用该对象。
例如向session对象中保存数据的关键代码如下所示:

<%
String name = "zhangsan";		//声明变量
session.setAttribute("userName", name);//使用键值对的方式将变量存入session对象
%>

从session对象中将保存的变量取出的关键代码如下所示:

<%
/*将保存在session对象中的名为usrName的变量值取出*/
String name = (String)session.getAttribute("userName");
%>

    注意: session的有效时间一般默认为30分钟,如果客户端30分钟内没有向服务器发出应答请求,那么session对象会自动失效,session内保存的数据也将丢失。另外还可以通过setMaxInactiveInterval()方法手动设置session的有效时间。
     开发步骤
      (1)编写PwdBean类用于封装数据表中的记录,PwdDao类来执行对数据库的插、删、改、查等操作。
      (2)设计index.jsp用户登录页面,在此页面提供“忘记密码”超链接。如果用户忘记了密码可以通过此连接进入到找回密码页面。关键代码如下所示:
<%
PwdBean pbean = new PwdDao().findByNameEmail(request.getParameter("name"), request.getParameter("email"));
session.setAttribute("pbean", pbean);
%>
密码提示问题:

	<%= pbean.getQuestion()%>

……//省略部分代码

(5)设计findPwd3.jsp找回密码第三步页面。首先判断用户输入的密码提示问题是否正确,如果正确显示输入新密码页面,否则提示错误信息,关键代码如下:
<%
	PwdBean pbean = (PwdBean) session.getAttribute("pbean");	//从session中将用户信息取出
	if (pbean.getKey().equals(request.getParameter("key"))) {	//与session中保存的正确答案进行比较
%>
	……//省略部分代码
<% } else { %>
	密码提示答案输入有误!
<%}%>
(6)编写findPwdResult.jsp将数据库中的密码更新为用户新输入的密码。关键代码如下:
<%
	PwdBean pbean = (PwdBean) session.getAttribute("pbean");
	pbean.setPwd(request.getParameter("pwd1"));
	new PwdDao().updatePwd(pbean);
%>
 











你可能感兴趣的:(Java进阶)