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

В чем разница между response.sendRedirect() и request.getRequestDispatcher(). Forward (request, response)

У меня проблема с моей страницей, когда я пользуюсь JAVA, если я использую:

response.sendRedirect("login.jsp")

тогда я получаю этот url: http://localhost:8080/login.jsp

Но если я использую

request.getRequestDispathcer("login.jsp").forward(request, response)

то я получаю этот url: http://localhost:8080/Shopping/login.jsp ( "Покупка" - это имя моего модуля).

Какая разница?

4b9b3361

Ответ 1

Чтобы просто объяснить разницу,

  response.sendRedirect("login.jsp");

не добавляет контекстный путь (относится к приложению/модулю, в котором подключен сервлет)

но, тогда как

 request.getRequestDispathcer("login.jsp").forward(request, response);

добавит контекстный путь к соответствующему приложению

Кроме того, Запрос перенаправления используется для перенаправления ресурсов на разные серверы или домены. Эта передача задачи управления делегируется браузеру контейнером. То есть, перенаправление отправляет заголовок обратно в браузер/клиент. Этот заголовок содержит URL-адрес ресурса, который будет перенаправлен браузером. Затем браузер инициирует новый запрос к указанному URL-адресу.

Запрос переадресации используется для пересылки ресурсов, доступных на сервере, с которых выполняется вызов. Эта передача управления осуществляется контейнером внутри, а браузер/клиент не задействован.

Ответ 2

вперед

Элемент управления может быть перенаправлен на ресурсы, доступные на сервере, с которого выполняется вызов. Эта передача управления осуществляется контейнером внутри, а браузер/клиент не задействован. Это основное различие между forward и sendRedirect. Когда форвард завершен, исходные объекты запроса и ответа передаются вместе с дополнительными параметрами, если это необходимо.

перенаправлять

Управление может быть перенаправлено на ресурсы на разные серверы или домены. Эта передача задачи управления делегируется браузеру контейнером. То есть, перенаправление отправляет заголовок обратно в браузер/клиент. Этот заголовок содержит URL-адрес ресурса, который будет перенаправлен браузером. Затем браузер инициирует новый запрос к указанному URL-адресу. Поскольку это новый запрос, старый объект запроса и ответа теряется.

Например, sendRedirect может передавать управление из http://google.com в http://anydomain.com, но пересылка невозможна это.

'не теряется как в прямом, так и в переадресации.

Чтобы почувствовать разницу между forward и sendRedirect, визуально см. адресную строку вашего браузера, вперед, вы не увидите перенаправленный адрес (поскольку браузер не задействован) при переадресации вы можете увидеть перенаправленный адрес.

Ответ 3

Простое различие между Forward (запрос ServletRequest, ответ ServletResponse) и sendRedirect (строковый URL)

forward():

  • Метод forward() выполняется на стороне сервера.
  • Запрос - это передача на другой ресурс на том же сервере.
  • Он не зависит от протокола запросов клиентов, так как метод forward () предоставляется контейнером сервлета.
  • Запрос разделяется целевым ресурсом.
  • В этом методе используется только один вызов.
  • Он может использоваться на сервере.
  • Мы не можем видеть перенаправленное сообщение, оно прозрачно.
  • Метод forward() быстрее, чем метод sendRedirect().
  • Он объявлен в интерфейсе RequestDispatcher.

sendRedirect():

  • Метод sendRedirect() выполняется на стороне клиента.
  • Запрос - это передача другого ресурса на другой сервер.
  • Метод sendRedirect() предоставляется в HTTP, поэтому его можно использовать только с HTTP клиентами.
  • Новый запрос создается для целевого ресурса.
  • Расходуются два запроса на запрос и ответ.
  • Он может использоваться как внутри, так и вне сервера.
  • Мы можем видеть перенаправленный адрес, он не прозрачен.
  • Метод sendRedirect() медленнее, потому что при создании нового запроса старый объект запроса теряется.
  • Объявлено в HttpServletResponse.

Ответ 4

1.redirect возвращает запрос браузеру с сервера, а затем повторно отправит запрос на сервер из браузера.

2. отправьте запрос другому сервлету (сервлет-сервлет).

Ответ 5

Диспетчер перенаправления и запроса - это два разных метода перемещения одной страницы на другую. если мы используем перенаправление на новую страницу, на самом деле происходит новый запрос с самой клиентской стороны на новую страницу. поэтому мы можем увидеть изменение URL. Поскольку перенаправление - это новый запрос, старые значения запроса здесь недоступны.

Ответ 6

redirect: вернуть запрос браузеру/клиенту с сервера, а затем повторно отправить запрос на сервер из браузера/клиента.

forward: отправить запрос на другой сервлет (сервлет на сервлет) и не отправлять запрос другому браузеру/клиенту.