Как изменить URL в браузере пользователя без перенаправления клиента в сервлете - PullRequest
2 голосов
/ 19 января 2012

Я хочу пересылать с одной страницы на другую, но с тем же, я хочу изменить URL. Предположим, пользователь здесь http://mywebsite/register, и когда он завершит процесс регистрации, я хочу это в его адресной строке http://mywebsite/home

Возможно ли это без использования sendRedirect, я имею в виду, кстати, только пересылку на стороне сервера? или как-то иначе обойти эту проблему?

Ответы [ 2 ]

0 голосов
/ 19 января 2012

Вы можете просто позволить HTML-форме отправляться на этот URL-адрес напрямую.

<form action="http://mywebsite/home">

Но это не имеет смысла. Вы также столкнетесь с проблемами при повторном отображении той же формы с сообщениями проверки в случае сбоя проверки. Вам нужно будет перенаправить обратно на исходную страницу, если вы намерены сохранить исходный URL-адрес и вам нужно будет хранить сообщения в области сеанса вместо области запроса, поскольку перенаправление в основном создает совершенно новый запрос. Вы без перенаправления также будете сталкиваться с проблемой «двойной отправки» всякий раз, когда конечный пользователь нажимает клавишу F5 после отправки формы.

Просто позвольте сервлету перенаправить успешный POST-запрос на нужный URL-адрес. Это канонический подход. Более того, это рекомендуемый «шаблон проектирования»: шаблон POST-Redirect-GET .

0 голосов
/ 19 января 2012

AFAIK, нет никакого способа обойти перенаправление, так как браузер должен обновить URL в какой-то момент.И если вы обновите URL-адрес после загрузки переадресованной страницы, он выдаст обновление и страница будет загружена снова (что может привести к бесконечному циклу).

Почему вы не хотитеиспользовать перенаправление в этом случае?

...