我对如何进行有个问题。用户输入电子邮件并单击忘记密码。然后servlet将调用dao来检查电子邮件是否存在,如果存在,dao将重置密码。我希望dao将重置密码发送回servlet,并重定向另一个servlet以将电子邮件发送回具有重置密码的用户。有人能解释我怎么做吗?
下面是我的支票
public class CheckEmailForgotDao{
String url = "jdbc:mysql://localhost:3308/mywebapp";
String username = "root";
String password = "root";
String sql = "SELECT * FROM users WHERE email=?";
public boolean check(String uname) {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection con = DriverManager.getConnection(url, username, password);
PreparedStatement st = con.prepareStatement(sql);
st.setString(1, uname);
ResultSet rs = st.executeQuery();
if (rs.next()) {
String randomPassword = RandomStringUtils.randomAlphanumeric(10);
String resetsql = "UPDATE users SET password = ? WHERE email = ?";
PreparedStatement resetst = con.prepareStatement(resetsql);
resetst.setString(1, randomPassword);
resetst.setString(2, uname);
System.out.println(resetst);
resetst.executeUpdate();
}
return true;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
}
}
下面是我的servlet
@WebServlet("/forgotpassword")
public class ResetPasswordServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public ResetPasswordServlet() {
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String recipient = request.getParameter("email");
String uname = recipient;
CheckEmailForgotDao dao = new CheckEmailForgotDao();
response.setContentType("text/html");
PrintWriter out = response.getWriter();
if (dao.check(uname)) {
request.getRequestDispatcher("/SendEmailResetPassword").include(request, response);
} else {
request.getRequestDispatcher("index.html").include(request, response);
out.println("<script>document.getElementById('err-forgot').innerHTML= 'Email does not exist!'; </script>");
}
}
}
1条答案
按热度按时间rfbsl7qr1#
我终于可以做到了。下面是我的代码。
-forgotpasswordservlet->checkemailforgot
-checkemailforget->检查电子邮件是否存在->重置密码->
-forgotpasswordservlet-forgotpasswordservlet->通过电子邮件查询密码->emailforgotdao
-emailforgotdao->sendmail->forgotpasswordservlet->显示已发送的电子邮件
上面的servlet使用下面的checkemailforgotdao来检查电子邮件是否存在。
1.如果存在,此dao将重置密码并返回true。
如果它不存在,这个dao将返回false,servlet将显示email不存在。
3.如果下面的checkemailforgotdao返回true,servlet将查询并获取新的重置密码。
4.然后servlet将使用它调用另一个emailforgottao。
下面emailforgotdao将发送电子邮件并返回true。然后servlet将显示reset password sent!
如果由于错误返回false,servlet将显示error。