2013-09-07 3 views
2

Почему люди должны перенаправлять вообще, если URL-адрес находится в их собственном веб-приложении? Почему весной люди перенаправляются из метода обработчика контроллера в другой метод обработчика в том же контроллере? Я слышал, что перенаправление основано на браузере. Это похоже на отправку запроса в браузер для отправки запроса на другой URL-адрес. Хотя вперед имеет смысл, поскольку он используется в приложении (spring mvc), чтобы URL-адрес в окне браузера оставался неизменным.Почему мы используем перенаправление в Spring MVC?

Но разве героически использовать redirect:/url, когда вы можете просто отправить имя вида или использовать forward, если это необходимо.

ответ

1

Без конкретного контекста трудно сказать вам все причины, по которым кто-то использовал бы перенаправление после выполнения обработчика.

Есть ситуации, когда перенаправление после обработки обработчиком (например, после POST) считается желательным шаблоном проектирования - POST/Redirect/GET.

Одной из распространенных проблем является повторная подача формы с методом POST. Используя переадресацию после обработки формы, приложение может по большей части не позволять пользователю удалять обновление и повторную отправку формы - так как они теперь находятся на вновь перенаправленном URL-адресе.

7

Использование префикса redirect в вашем контроллере будет генерировать HTTP-ответ с кодом состояния 302 и заголовком местоположения, указывающим на URL-адрес перенаправления. Затем браузер перенаправит этот URL (модель, выставленная в первом запросе, будет потеряна, а URL-адрес браузера будет вторым).

Используя префикс forward, пересылка будет выполняться внутри сервлета, так что нет необходимости в втором запросе (URL-адрес останется прежним). Префикс forward должен использоваться только в запросах, которые могут быть успешно сохранены браузером. Это не тот случай, когда вы отправляете форму, которая изменяет состояние базы данных (перезагрузка браузера приведет к дублированию представлений). В этих случаях вы должны использовать redirect и применить шаблон POST-redirect-GET. Пожалуйста, обратитесь к http://en.wikipedia.org/wiki/Post/Redirect/Get

0

Мы делаем перенаправление вместо перехода на страницу, потому что мы хотим применить шаблон переадресации после публикации к нашей форме.

С помощью этого шаблона успешное представление формы вызывает перенаправление HTTP, чтобы избежать повторной отправки, если пользователь перезагружает или заносит закладку на страницу.

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