Разница между JSP forward и redirect [дубликат]
7 ответов
redirect устанавливает статус ответа на 302 [1], а новый url-адрес в
Location
заголовок и отправляет ответ в браузер. Затем браузер, согласно спецификации http, делает еще один запрос на новый urlпереадресация происходит полностью на сервере. Контейнер сервлета просто пересылает один и тот же запрос на целевой url-адрес без ведома браузера. Следовательно, вы можете использовать те же атрибуты запроса и тот же запрос параметры при обработке нового url. И браузер не будет знать, что url-адрес изменился (потому что это произошло полностью на сервере)
[1]: это пример отраслевой практики, противоречащей стандарту. Спецификация HTTP / 1.0 (RFC 1945) требовала от клиента выполнения временное перенаправление (оригинальная описательная фраза была " перемещена Временно"), но популярные браузеры реализовали 302 с функциональность 303 см. Другое. Таким образом HTTP / 1.1 добавлен статус коды 303 и 307, чтобы различать эти два поведения. Однако, некоторые веб-приложения и фреймворки используют код состояния 302, как если бы он были 303. источник
Я слышал интересное объяснение перенаправления и вперед. Представьте, что вам нужна помощь вашего друга.Его неважно какая служба. Предположим, ваш друг не может вам помочь, но знает, кто может.
он перенаправит ваш запрос, если он скажет вам: "я не могу справиться с этим, но знаю, кто может.Вот его номер телефона. Зовите его"
Он переадресует ваш запрос, если он скажет вам: "нет проблем" и позвонит этому человеку сам, не заметив вас вовлечение другого человека в управление вашим желанием. Тогда ваш друг получит результат от вашего желания и передаст вам
Redirect также медленнее по сравнению с forward, потому что он должен пройти через браузер и ждать, пока браузер сделает новый запрос, а также, следовательно, заставляя объекты области запроса быть недоступными после перенаправления.
редирект :
- пользователь запрашивает ресурс.
- ответ отправлен пользователю.
- это не запрашиваемый ресурс, это ответ с кодом HTTP 302 и содержит URL запрашиваемого ресурса.
- URL может быть таким же или отличаться от запрошенного URL.
- браузер клиента делает запрос для ресурса снова с новым URL, на этот раз фактический ресурс отправлен в пользователь.
вперед:
Это процесс простого отображения запрошенного ресурса для пользователя. Это происходит на стороне сервера.
этот пост дает действительно хорошее объяснение о forward vs redirect, используя хороший пример реального мира.
молочник приходит и просит ежемесячную оплату Вам в вашем доме. Здесь дом является контейнером, и вы являетесь ресурсом, существующим в контейнер. Milk man-это клиент или браузер.
Он просит ежемесячный платеж вам, это запрос, сделанный браузер на ресурс A. Если вы заходите в свой дом и спрашиваете ваш мать (другой ресурс B внутри того же контейнера) для наличных денег и вернитесь и доставьте молочнику это называется Вперед.
Если вы попросите молочника поговорить с вашей матерью внутри вашего или попроси молочника поговорить с твоим отцом, который в своем доме. офис (другой домен), то это называется редирект.
при отправке запроса
- объект запроса и ответа передается. -URL-адрес остается прежним.
когда вы перенаправляете запрос на другой JSP / servlets,
-объекты запроса и ответа не передаются в новый объект. - Url изменения в каталоге новой страницы.
+------------------------------------------------+-----------------------------------------------------------------------------+
| <jsp:forward> | sendRedirect() |
+------------------------------------------------+-----------------------------------------------------------------------------+
| getRequestDispatcher().forward() | getRequestDispatcher().sendRedirect() |
| Communication b/w pages directly | Communication b/w pages are indirectly by extra round trip from HTTP client |
| Communication can happen within web-container | Communication can happen anywhere |
| Use same Request and Response Object | Use different Request and Response Object |
+------------------------------------------------+-----------------------------------------------------------------------------+