sendRedirect или запрос отправки более эффективен? - PullRequest
3 голосов
/ 10 марта 2009

SendRedirect или requestdispatch? Что должно быть более предпочтительным? Что более эффективно?

Ответы [ 2 ]

6 голосов
/ 10 марта 2009

Они делают две совершенно разные вещи, поэтому вы не можете просто определиться с эффективностью.

Отправка перенаправления отправит браузер на другой URL. Этот URL будет виден браузеру. Вы можете или не можете этого хотеть. Например, после POST вы, вероятно, должны перенаправить на страницу GET, чтобы избежать того, что страница результатов не может быть перезагружена без повторной публикации. С другой стороны, вы не можете перенаправить на «страницы», которые доступны только внутри контейнера сервлета.

Диспетчеризация более «эффективна» в том смысле, что не требуется дополнительная передача туда и обратно, а она работает только в том же контексте веб-приложения (или, самое большее, в одном и том же контейнере сервлета, если вы его настроили). Кроме того, URL-адрес, который пользователь использовал для доступа к странице в первую очередь, будет отличаться от того, что будет называться сервлетом позже в цепочке, что может сбивать с толку. Шаблон отправки часто используется для дополнительной обработки до или после реального запроса (вместо ServletFilter) или для страниц с ошибками.

Вы можете передавать атрибуты запроса, используя диспетчеризацию, но только параметры запроса при перенаправлении. Вы не можете перенаправить как POST (поэтому объем данных, которые вы можете прикрепить к нему, ограничен). Все параметры запроса в перенаправлении видны пользователю.

0 голосов
/ 20 июня 2014

Эта пересылка эффективна в использовании, так как она быстрее, чем sendRedirect, следует использовать перенаправление, если нам нужно передать управление другому домену.

Когда мы вызываем запрос пересылки, запрос отправляется на другой ресурс на сервере, и клиент не получает информацию о том, что другой ресурс будет обрабатывать запрос. Этот процесс полностью происходит в веб-контейнере. С другой стороны, когда вызывается метод sendRedirect, он заставляет веб-контейнер возвращаться в браузер, указывая на необходимость запроса нового URL-адреса. Поскольку браузер выдает совершенно новый запрос, любой объект, сохраненный в качестве атрибутов запроса до того, как произойдет перенаправление, будет потерян. Этот дополнительный круговой обход делает перенаправление медленнее, чем вперед.

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