Я работаю над приложением Java Servlet по функции сброса пароля. Метод получить в основном проверьте электронную почту параметра и проверьте, действите ли электронная почта. Затем установите электронное письмо в качестве атрибута в сеансе. После того, как это направить запрос в JSP. < /P>
public void doGet(HttpServletRequest request,
HttpServletResponse response) throws IOException,
ServletException {
String email = request.getParameter("email");
if (isUserValid(email)) {
request.getSession().setAttribute("email", email);
} else {
request.getSession().setAttribute("error", "Invalid token or " +
"token expired");
}
request.getRequestDispatcher("jsp/reset-password.jsp").forward(request,
response);
}
< /code>
В JSP я отображаю форму только в том случае, если электронная почта существует в сеансе. < /p>
${sessionScope.email}
New Password
name="password" placeholder="Enter new password"
required/>
Confirm
Password
id="confirmPassword"
name="confirmPassword"
placeholder="Confirm new password"
required/>
Reset
Password
${sessionScope.error}
${sessionScope.error}
< /code>
Форма затем отправляется на этот метод сообщения, где я проверяю, действителен ли электронная почта, вместе с новым паролем. После этого я обновляю пользователя. < /P>
public void doPost(HttpServletRequest request,
HttpServletResponse response) throws IOException,
ServletException {
String email = (String) request.getSession().getAttribute("email");
if (email == null || !isUserValid(email)) {
request.getSession().setAttribute("error", "Invalid token or " +
"token expired");
response.sendRedirect("reset-password?email=" + email);
return;
}
String password = request.getParameter("password");
String confirmPassword = request.getParameter("confirmPassword");
if (!password.equals(confirmPassword)) {
request.getSession().setAttribute("error", "Passwords do not " +
"match");
response.sendRedirect("reset-password?email=" + email);
return;
}
User user = userDAO.findUserByEmail(email);
if (user == null) {
request.getSession().setAttribute("error", "User not found");
response.sendRedirect("reset-password?email=" + email);
return;
}
user.setPassword(password);
userDAO.updateUser(user);
request.getSession().setAttribute("success", "Password reset " +
"successfully");
request.getSession().removeAttribute("email");
response.sendRedirect("reset-password?email=" + email);
}
< /code>
При тестировании в локальном. Все работает нормально, пока я не отправлю форму. Запрос отправляется на метод сообщения, но в сеансе нет атрибута электронной почты. Я подтвердил это инструментами отладки. Я вообще не признал сессию и не удалял атрибут вообще. Было бы неплохо, если бы кто -то мог проанализировать код и помочь мне с этим.
Подробнее здесь: https://stackoverflow.com/questions/794 ... pplication
Данные сеанса теряются после подачи формы в приложении Сервлета ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение