Подтвердить что ты не робот

Зачем использовать 'redirect = true' в struts 1. * forward?

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

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

4b9b3361

Ответ 1

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

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

Всегда загружать страницы с помощью GET

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

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

Ответ 2

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

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

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

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

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

Ответ 3

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