Обновление формы JSP повторно отправляет данные

У меня есть страница JSP называется patient.jsp с Form который является всплывающим Эта форма отправлена ​​с использованием post метод. Как только эта форма достигает сервлета, происходит что-то вроде ниже.

request.setAttribute("id",id);
RequestDispatcher dispatch = getServletContect().getRequestDispatcher("/patient.jsp");
dispatch.forward(request,response);

Есть большая проблема. Как только это пересылается обратно в patient.jspЕсли пользователь обновит веб-страницу, все, что он ранее ввел в формы, будет повторно отправлено и сохранено в базе данных.

Мы использовали RequestDispatcher потому что мы должны передать атрибут из области запроса. Есть идеи, как это решить?

1 ответ

Решение

Сначала вы должны перенаправить, а не пересылать:

response.sendRedirect("patient.jsp");

Убедитесь, что относительный путь правильный.

Отсюда у вас есть два варианта:

  1. Установите атрибут в session а не в запросе, то вы можете получить его в JSP. Конечно, вы должны иметь дело с параллельными запросами, используя это, поэтому имя атрибута должно быть уникальным каждый раз.
  2. Отправьте атрибут в качестве параметра http get (если он сериализуем): response.sendRedirect("patient.jsp?id=273");
Другие вопросы по тегам