2012-04-26 1 views
1

После того, как я вставляю в базу данных через сервлет, я перенаправляю страницу на домашнюю страницу. Однако, когда я обновляюсь, данные все еще передаются и дублируются в БД.Сервлет по-прежнему передает данные на странице обновления

Системный поток выглядит следующим образом: Я загружаю страницу, в которой перечислены проекты, когда я нажимаю на проект, я меняю div на странице, чтобы показать текстовое поле для комментариев. Когда я нажимаю на комментарий, значения вставляются в базу данных, и страница перенаправляется на страницу без списка проектов. Однако, когда я обновляюсь, данные все же передаются.

Кто-нибудь знает, как я могу фактически удалить данные или не передать данные при обновлении? Спасибо!

+0

Когда вы обновляете страницу, что такое URL-адрес в адресной строке? Является ли браузер просить вас повторно отправить форму? –

ответ

0

Симптомы указывают, что вы на самом деле были пересылка запрос на домашнее JSP, а не перенаправление. При реальной redirect after post эта проблема не должна возникать вообще.

Итак, убедитесь, что вы на самом деле выполняет перенаправление следующим

response.sendRedirect(request.getContextPath() + "/home.jsp"); 

и, таким образом, не косая следующим

request.getRequestDispatcher("/home.jsp").forward(request, response); 
+0

Это не будет работать, если пользователь хочет передать атрибуты запроса данных. –

+0

Просто включите его в URL-адрес переадресации. – BalusC

0

Наиболее вероятной является ситуация после подачи первого запроса, url в браузере изменен, и он указывает на servlet-URL.So, когда вы нажмете кнопку обновления, которую он напрямую вызовет на сервлет, поэтому тот же процесс выполняется снова. , например -

текущий URL браузер - www.myurl.com/mypage.jsp

и URL запроса является www.myurl.com/mypage.action(indicate в сервлет)

после отправки первого запроса URL в браузере будет www.myurl.com/mypage.action

поэтому всякий раз, когда вы обновляете страницу, он напрямую вызывает сервлет.

Решение - перенаправить страницу jsp снова в сервлет после завершения запроса.

Смежные вопросы