Данные сеанса теряются после подачи формы в приложении СервлетаJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Гость
 Данные сеанса теряются после подачи формы в приложении Сервлета

Сообщение Гость »

Я работаю над приложением 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»