У меня проблема, после обновления jsp. когда я вызываю кнопку обновления (F5) после отправки формы. данные сохраняются повторно после вызова кнопки обновления каждый раз.Как остановить повторную отправку данных формы после обновления страницы jsp в struts1
ответ
1.Чтобы предотвратить использование этого параметра ajax для отправки.
ИЛИ
2.Use вариант Перенаправление перенаправление страницы после отправки формы.
Что случилось, когда вы отправите форму на сервер
При нажатии на кнопку «Отправить» на форме направляет запрос на веб-сервер, который включает в себя все данные введены в форме. Не только URL-адрес, но и данные формы являются частью запроса, и этот запрос запоминается браузером. Если пользователь нажимает «Обновить», браузер повторяет запрос, снова отправляет тот же URL-адрес и формирует данные на веб-сервер.
Формы могут быть представлены двумя способами: запрос GET или POST.GET не имеет побочных эффектов; он только извлекает данные, но не вносит никаких изменений в базу данных. В противном случае, если запрос изменяет данные, такие как вставка, обновление, удаление, тогда это должен быть POST.
Наиболее важным отличием является то, что браузеры предупреждают пользователя, если они пытаются повторить на пост - нажать кнопку «Обновить» появится диалоговое окно, предупреждающее пользователя , что это может вызвать операцию следует повторить, и подтверждая, что они действительно хотят повторно подать заявку. Браузер не отображает это подтверждение при обновлении запроса GET.
Если ваша форма с использованием метода GET, изменение его на POST является самым простым решением, так как это, по крайней мере, означает, что пользователь предупреждается, если он пытается обновиться.
Но лучшим решением является POST + REDIRECT + GET.For более http://en.wikipedia.org/wiki/Post/Redirect/Get
Использование хорошо известны PRG pattern
. Для получения дополнительной информации посмотрите здесь: link
Или более простым решением при отправке управления из Action class
добавьте request attribute
, в то время как идет на проверке Jsp для конкретного атрибута запроса, если он есть: перенаправляет управление вашим же JSp.
Логика этого: Объяснение: Когда редирект происходит это делает анонимный запрос в браузер без какого-либо выхода, то браузер делает неявный запрос на целевой ресурс. Таким образом, хотя перенаправление вашего запроса проходит через один раунд из браузера, это причина, по которой уничтожаются ваши предыдущие объекты request & response
, и создается новый запрос (сделанный из браузера) и новый запрошенный объект создается контейнером. Таким образом, вашего предыдущего атрибута запроса не будет. Значит, ваших предыдущих данных также не будет. Затем со следующего раза, пока вы обновите страницу JSP, ничего не произойдет.