Обновление формы 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");
Убедитесь, что относительный путь правильный.
Отсюда у вас есть два варианта:
- Установите атрибут в
session
а не в запросе, то вы можете получить его в JSP. Конечно, вы должны иметь дело с параллельными запросами, используя это, поэтому имя атрибута должно быть уникальным каждый раз. - Отправьте атрибут в качестве параметра http get (если он сериализуем):
response.sendRedirect("patient.jsp?id=273");