Зачем использовать 'redirect = true' в стояках 1. * вперед? - PullRequest
23 голосов
/ 05 марта 2009

У меня были некоторые проблемы с ActionMessages, созданным во время выполнения действия, которое не отображалось, и я обнаружил, что мои проблемы были связаны с тем, что у форвардов было redirect=true в struts-config.xml.

Поскольку поведение по умолчанию - redirect=false, я думал о том, какие преимущества можно получить, используя redirect=true, и не смог найти никакого ответа. Кто-нибудь знает, когда и почему redirect=true следует использовать в боевых действиях?

Ответы [ 3 ]

34 голосов
/ 05 марта 2009

предотвращает проблему двойной отправки

Никогда не показывать страницы в ответ на POST

Всегда загружать страницы, используя GET

Перейдите от POST к GET, используя REDIRECT

подробнее об этом здесь и здесь

25 голосов
/ 11 марта 2009

Redirect отправляет браузеру ответ, который заставляет браузер сделать новый запрос. С точки зрения сервера, браузер просто делает новый запрос (хотя и автоматически). Некоторые характеристики редиректа:

  • Существующие параметры и атрибуты расположены, новый запрос формируется с параметрами Вы указываете в URL.
  • Новый URL в браузере виден пользователь можете добавить в закладки
  • Требуется поездка в браузер и обратно, так что это может быть медленнее.

На сервере происходит пересылка. Браузер не участвует в этом. Некоторые характеристики форварда:

  • Новые параметры добавляются или перезаписывают существующие параметры. Таким образом, существующие параметры не могут быть удалены из запроса.
  • Материал можно добавить в контексте запроса, он останется доступным. Вы можете передавать информацию таким образом.
  • URL-адрес в браузере не изменяется, для браузера исходный адрес остается неизменным.
  • Вы можете переадресовать только на другой URL в том же приложении.

Так что это зависит от того, чего вы хотите достичь. В форварде обычно говорят быстрее. Но если пользователь должен иметь возможность добавить новое местоположение в закладки, это не вариант.

0 голосов
/ 02 февраля 2016

Если вы укажете redirect="true", Struts использует перенаправление на стороне клиента [response.sendRedirect()]. JSP будет вызван новым запросом браузера, и все данные, сохраненные в старом запросе, будут потеряны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...